From 8023a5ea94898421b4bd0ad98225a51a89534cd8 Mon Sep 17 00:00:00 2001 From: randomuser Date: Tue, 20 Sep 2022 17:02:35 -0500 Subject: [PATCH] clean out the residual cruft from bspc --- bspc.c | 219 ++++----------------------------------------------------- bspc.h | 36 ++++++++++ 2 files changed, 50 insertions(+), 205 deletions(-) create mode 100644 bspc.h diff --git a/bspc.c b/bspc.c index 061619b..67f4fe7 100644 --- a/bspc.c +++ b/bspc.c @@ -1,33 +1,4 @@ -/* Copyright (c) 2012, Bastien Dejean - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#define RUNTIME_DIR_ENV "XDG_RUNTIME_DIR" -#define SOCKET_PATH_TPL "/tmp/bspwm%s_%i_%i-socket" -#define SOCKET_ENV_VAR "BSPWM_SOCKET" -#define FAILURE_MESSAGE "\x07" - -#define LENGTH(x) (sizeof(x) / sizeof(*x)) +/* see bspc.h for copyright and distribution information */ #include #include @@ -45,28 +16,10 @@ #include #include "module.h" - -/* prototypes */ -void warn(char *fmt, ...); -void err(char *fmt, ...); -char *read_string(const char *file_path, size_t *tlen); -char *copy_string(char *str, size_t len); -char *mktempfifo(const char *template); -int asprintf(char **buf, const char *fmt, ...); -int vasprintf(char **buf, const char *fmt, va_list args); -bool is_hex_color(const char *color); - -void warn(char *fmt, ...) -{ - va_list ap; - va_start(ap, fmt); - vfprintf(stderr, fmt, ap); - va_end(ap); -} +#include "bspc.h" __attribute__((noreturn)) -void err(char *fmt, ...) -{ +void err(char *fmt, ...) { va_list ap; va_start(ap, fmt); vfprintf(stderr, fmt, ap); @@ -74,151 +27,7 @@ void err(char *fmt, ...) exit(EXIT_FAILURE); } -char *read_string(const char *file_path, size_t *tlen) -{ - if (file_path == NULL) { - return NULL; - } - - int fd = open(file_path, O_RDONLY); - - if (fd == -1) { - perror("Read file: open"); - return NULL; - } - - char buf[BUFSIZ], *content = NULL; - size_t len = sizeof(buf); - - if ((content = calloc(len, sizeof(char))) == NULL) { - perror("Read file: calloc"); - goto end; - } - - int nb; - *tlen = 0; - - while (true) { - nb = read(fd, buf, sizeof(buf)); - if (nb < 0) { - perror("Restore tree: read"); - free(content); - content = NULL; - goto end; - } else if (nb == 0) { - break; - } else { - *tlen += nb; - if (*tlen > len) { - len *= 2; - char *rcontent = realloc(content, len * sizeof(char)); - if (rcontent == NULL) { - perror("Read file: realloc"); - free(content); - content = NULL; - goto end; - } else { - content = rcontent; - } - } - strncpy(content + (*tlen - nb), buf, nb); - } - } - -end: - close(fd); - return content; -} - -char *copy_string(char *str, size_t len) -{ - char *cpy = calloc(1, ((len+1) * sizeof(char))); - if (cpy == NULL) { - perror("Copy string: callow"); - return NULL; - } - strncpy(cpy, str, len); - cpy[len] = '\0'; - return cpy; -} - -char *mktempfifo(const char *template) -{ - int tempfd; - char *runtime_dir = getenv(RUNTIME_DIR_ENV); - if (runtime_dir == NULL) { - runtime_dir = "/tmp"; - } - - char *fifo_path = malloc(strlen(runtime_dir)+1+strlen(template)+1); - if (fifo_path == NULL) { - return NULL; - } - - sprintf(fifo_path, "%s/%s", runtime_dir, template); - - if ((tempfd = mkstemp(fifo_path)) == -1) { - free(fifo_path); - return NULL; - } - - close(tempfd); - unlink(fifo_path); - - if (mkfifo(fifo_path, 0666) == -1) { - free(fifo_path); - return NULL; - } - - return fifo_path; -} - -int asprintf(char **buf, const char *fmt, ...) -{ - int size = 0; - va_list args; - va_start(args, fmt); - size = vasprintf(buf, fmt, args); - va_end(args); - return size; -} - -int vasprintf(char **buf, const char *fmt, va_list args) -{ - va_list tmp; - va_copy(tmp, args); - int size = vsnprintf(NULL, 0, fmt, tmp); - va_end(tmp); - - if (size < 0) { - return -1; - } - - *buf = malloc(size + 1); - - if (*buf == NULL) { - return -1; - } - - size = vsprintf(*buf, fmt, args); - return size; -} - -bool is_hex_color(const char *color) -{ - if (color[0] != '#' || strlen(color) != 7) { - return false; - } - for (int i = 1; i < 7; i++) { - if (!isxdigit(color[i])) { - return false; - } - } - return true; -} - -char *send_msg_to_bspwm(char *args[], int count) -{ +char *send_msg_to_bspwm(char *args[], int count) { int sock_fd; struct sockaddr_un sock_address; char msg[BUFSIZ]; @@ -227,34 +36,34 @@ char *send_msg_to_bspwm(char *args[], int count) sock_address.sun_family = AF_UNIX; char *sp; - if ((sock_fd = socket(AF_UNIX, SOCK_STREAM, 0)) == -1) { + if((sock_fd = socket(AF_UNIX, SOCK_STREAM, 0)) == -1) { err("Failed to create the socket.\n"); } sp = getenv(SOCKET_ENV_VAR); - if (sp != NULL) { + if(sp != NULL) { snprintf(sock_address.sun_path, sizeof(sock_address.sun_path), "%s", sp); } else { char *host = NULL; int dn = 0, sn = 0; - if (xcb_parse_display(NULL, &host, &dn, &sn) != 0) { + if(xcb_parse_display(NULL, &host, &dn, &sn) != 0) { snprintf(sock_address.sun_path, sizeof(sock_address.sun_path), SOCKET_PATH_TPL, host, dn, sn); } free(host); } - if (connect(sock_fd, (struct sockaddr *) &sock_address, sizeof(sock_address)) == -1) { + if(connect(sock_fd, (struct sockaddr *) &sock_address, sizeof(sock_address)) == -1) { err("Failed to connect to the socket.\n"); } int msg_len = 0; - for (int offset = 0, rem = sizeof(msg), n = 0; count > 0 && rem > 0; offset += n, rem -= n, count--, args++) { + for(int offset = 0, rem = sizeof(msg), n = 0; count > 0 && rem > 0; offset += n, rem -= n, count--, args++) { n = snprintf(msg + offset, rem, "%s%c", *args, 0); msg_len += n; } - if (send(sock_fd, msg, msg_len, 0) == -1) { + if(send(sock_fd, msg, msg_len, 0) == -1) { err("Failed to send the data.\n"); } @@ -265,16 +74,16 @@ char *send_msg_to_bspwm(char *args[], int count) {STDOUT_FILENO, POLLHUP, 0}, }; - while (poll(fds, 2, -1) > 0) { - if (fds[0].revents & POLLIN) { - if ((nb = recv(sock_fd, rsp, sizeof(rsp)-1, 0)) > 0) { + while(poll(fds, 2, -1) > 0) { + if(fds[0].revents & POLLIN) { + if((nb = recv(sock_fd, rsp, sizeof(rsp)-1, 0)) > 0) { rsp[nb] = '\0'; return rsp; } else { break; } } - if (fds[1].revents & (POLLERR | POLLHUP)) { + if(fds[1].revents & (POLLERR | POLLHUP)) { break; } } diff --git a/bspc.h b/bspc.h new file mode 100644 index 0000000..987fbc2 --- /dev/null +++ b/bspc.h @@ -0,0 +1,36 @@ +/* Copyright (c) 2012 Bastien Dejean + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * modifications made by randomuser for use in tstatus + */ + +#define RUNTIME_DIR_ENV "XDG_RUNTIME_DIR" +#define SOCKET_PATH_TPL "/tmp/bspwm%s_%i_%i-socket" +#define SOCKET_ENV_VAR "BSPWM_SOCKET" +#define FAILURE_MESSAGE "\x07" + +#define LENGTH(x) (sizeof(x) / sizeof(*x)) + +void err(char *fmt, ...); +char *send_msg_to_bspwm(char *args[], int count); +int bspwm_update(struct module *module);