From 252dcc89a68b81e1fe7f759d33e8a49fab155c7c Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Mon, 2 May 2016 04:34:55 -0400 Subject: clean up runes_warn/runes_die handling --- src/config.c | 16 ++++++++-------- src/runesc.c | 6 +++--- src/runesd.c | 2 +- src/socket.c | 26 +++++++++++++------------- src/util.c | 29 ++++++++++++++++++++++------- src/window-xlib.c | 3 +-- 6 files changed, 48 insertions(+), 34 deletions(-) diff --git a/src/config.c b/src/config.c index 3e4a6fa..3f9da3b 100644 --- a/src/config.c +++ b/src/config.c @@ -385,7 +385,7 @@ static void runes_config_process_config_file(RunesTerm *t, FILE *config_file) kend = kbegin + strcspn(kbegin, " \t="); vbegin = kend + strspn(kend, " \t"); if (*vbegin != '=') { - runes_warn("couldn't parse line: '%s'\n", line); + runes_warn("couldn't parse line: '%s'", line); } vbegin++; vbegin = vbegin + strspn(vbegin, " \t"); @@ -409,11 +409,11 @@ static void runes_config_process_args(RunesTerm *t, int argc, char *argv[]) i++; } else { - runes_warn("option found with no argument: '%s'\n", argv[i]); + runes_warn("option found with no argument: '%s'", argv[i]); } } else { - runes_warn("unknown argument: '%s'\n", argv[i]); + runes_warn("unknown argument: '%s'", argv[i]); } } } @@ -476,7 +476,7 @@ static void runes_config_set(RunesTerm *t, char *key, char *val) i = atoi(&key[5]); if (key[5] < '0' || key[5] > '9' || i < 0 || i > 255) { - runes_warn("unknown option: '%s'\n", key); + runes_warn("unknown option: '%s'", key); return; } newcolor = runes_config_parse_color(val); @@ -501,7 +501,7 @@ static void runes_config_set(RunesTerm *t, char *key, char *val) config->cmd = runes_config_parse_string(val); } else { - runes_warn("unknown option: '%s'\n", key); + runes_warn("unknown option: '%s'", key); } } @@ -514,7 +514,7 @@ static char runes_config_parse_bool(char *val) return 0; } else { - runes_warn("unknown boolean value: '%s'\n", val); + runes_warn("unknown boolean value: '%s'", val); return 0; } } @@ -522,7 +522,7 @@ static char runes_config_parse_bool(char *val) static int runes_config_parse_uint(char *val) { if (strspn(val, "0123456789") != strlen(val)) { - runes_warn("unknown unsigned integer value: '%s'\n", val); + runes_warn("unknown unsigned integer value: '%s'", val); } return atoi(val); @@ -538,7 +538,7 @@ static cairo_pattern_t *runes_config_parse_color(char *val) int r, g, b; if (strlen(val) != 7 || sscanf(val, "#%2x%2x%2x", &r, &g, &b) != 3) { - runes_warn("unknown color value: '%s'\n", val); + runes_warn("unknown color value: '%s'", val); return NULL; } diff --git a/src/runesc.c b/src/runesc.c index 04fc26b..8ee0d2a 100644 --- a/src/runesc.c +++ b/src/runesc.c @@ -47,18 +47,18 @@ static int runes_socket_open_client(char *name) struct sockaddr_un client; if (strlen(name) + 1 > MAX_SOCKET_PATH_LEN) { - runes_die("socket path %s is too long\n", name); + runes_die("socket path %s is too long", name); } s = socket(AF_UNIX, SOCK_STREAM, 0); if (s < 0) { - runes_die("couldn't create socket: %s\n", strerror(errno)); + runes_die("couldn't create socket: %s", strerror(errno)); } client.sun_family = AF_UNIX; strcpy(client.sun_path, name); if (connect(s, (struct sockaddr*)(&client), sizeof(struct sockaddr_un))) { - runes_die("couldn't connect to socket at %s: %s\n", name, + runes_die("couldn't connect to socket at %s: %s", name, strerror(errno)); } diff --git a/src/runesd.c b/src/runesd.c index b24eb6f..0e1cff6 100644 --- a/src/runesd.c +++ b/src/runesd.c @@ -11,7 +11,7 @@ int main (int argc, char *argv[]) UNUSED(argv); if (argc > 1) { - runes_die("runesd takes no arguments; pass them to runesc instead.\n"); + runes_die("runesd takes no arguments; pass them to runesc instead."); } setlocale(LC_ALL, ""); diff --git a/src/socket.c b/src/socket.c index 8cb8680..48c0d00 100644 --- a/src/socket.c +++ b/src/socket.c @@ -40,13 +40,13 @@ static int runes_socket_open(RunesSocket *sock) struct sockaddr_un server; if (strlen(sock->name) + 1 > MAX_SOCKET_PATH_LEN) { - runes_die("socket path %s is too long\n", sock->name); + runes_die("socket path %s is too long", sock->name); } dir = strdup(sock->name); slash = strrchr(dir, '/'); if (slash == NULL) { - runes_die("socket path %s must be an absolute path\n", sock->name); + runes_die("socket path %s must be an absolute path", sock->name); } *slash = '\0'; runes_mkdir_p(dir); @@ -56,23 +56,23 @@ static int runes_socket_open(RunesSocket *sock) s = socket(AF_UNIX, SOCK_STREAM, 0); if (s < 0) { - runes_die("couldn't create socket: %s\n", strerror(errno)); + runes_die("couldn't create socket: %s", strerror(errno)); } server.sun_family = AF_UNIX; strcpy(server.sun_path, sock->name); if (bind(s, (struct sockaddr*)(&server), sizeof(struct sockaddr_un))) { - runes_die("couldn't bind to socket %s: %s\n", sock->name, + runes_die("couldn't bind to socket %s: %s", sock->name, strerror(errno)); } if (chmod(sock->name, S_IRUSR|S_IWUSR)) { - runes_die("couldn't chmod socket %s: %s\n", sock->name, + runes_die("couldn't chmod socket %s: %s", sock->name, strerror(errno)); } if (listen(s, 5)) { - runes_die("couldn't listen on socket %s: %s\n", sock->name, + runes_die("couldn't listen on socket %s: %s", sock->name, strerror(errno)); } @@ -107,7 +107,7 @@ static int runes_socket_handle_request(RunesTerm *t) bytes = recv(sock->client_sock, (void*)(&argc), sizeof(argc), 0); if (bytes < (int)sizeof(argc)) { - runes_warn("invalid message received: got %d bytes, expected 4\n", + runes_warn("invalid message received: got %d bytes, expected 4", bytes); close(sock->client_sock); return 1; @@ -115,7 +115,7 @@ static int runes_socket_handle_request(RunesTerm *t) argc = ntohl(argc); if (argc > 1024) { - runes_warn("invalid message received: argc = %d, must be < 1024\n", + runes_warn("invalid message received: argc = %d, must be < 1024", argc); close(sock->client_sock); return 1; @@ -124,7 +124,7 @@ static int runes_socket_handle_request(RunesTerm *t) bytes = recv(sock->client_sock, (void*)(&argv_len), sizeof(argv_len), 0); if (bytes < (int)sizeof(argc)) { - runes_warn("invalid message received: got %d bytes, expected 4\n", + runes_warn("invalid message received: got %d bytes, expected 4", bytes); close(sock->client_sock); free(argv); @@ -133,7 +133,7 @@ static int runes_socket_handle_request(RunesTerm *t) argv_len = ntohl(argv_len); if (argv_len > 131072) { - runes_warn("invalid message received: argv_len = %d, must be < %d\n", + runes_warn("invalid message received: argv_len = %d, must be < %d", argv_len, 131072); close(sock->client_sock); free(argv); @@ -143,7 +143,7 @@ static int runes_socket_handle_request(RunesTerm *t) bytes = recv(sock->client_sock, argv_buf, argv_len, 0); if (bytes < argv_len) { - runes_warn("invalid message received: got %d bytes, expected %d\n", + runes_warn("invalid message received: got %d bytes, expected %d", bytes, argv_len); close(sock->client_sock); free(argv); @@ -162,12 +162,12 @@ static int runes_socket_handle_request(RunesTerm *t) char *next_null; if (offset >= argv_len) { - runes_die("args in argv_buf don't match argc of %d\n", argc); + runes_die("args in argv_buf don't match argc of %d", argc); } argv[i] = argv_buf + offset; next_null = memchr(argv_buf + offset, '\0', argv_len - offset); if (!next_null) { - runes_die("args in argv_buf don't match argc of %d\n", argc); + runes_die("args in argv_buf don't match argc of %d", argc); } offset = next_null - argv_buf + 1; } diff --git a/src/util.c b/src/util.c index 5bd9ce0..cd0d1d0 100644 --- a/src/util.c +++ b/src/util.c @@ -6,12 +6,13 @@ #include "runes.h" +static void runes_vwarn(const char *fmt, va_list ap); + void runes_warn(const char *fmt, ...) { va_list ap; va_start(ap, fmt); - /* XXX make this do something else on windows */ - vfprintf(stderr, fmt, ap); + runes_vwarn(fmt, ap); va_end(ap); } @@ -19,8 +20,7 @@ void runes_die(const char *fmt, ...) { va_list ap; va_start(ap, fmt); - /* XXX make this do something else on windows */ - vfprintf(stderr, fmt, ap); + runes_vwarn(fmt, ap); va_end(ap); exit(1); @@ -79,7 +79,7 @@ void runes_mkdir_p(char *dir) if (mkdir(new_path, 0755)) { if (errno != EEXIST) { - runes_die("couldn't create directory %s: %s\n", + runes_die("couldn't create directory %s: %s", new_path, strerror(errno)); } } @@ -90,14 +90,29 @@ void runes_mkdir_p(char *dir) } if (stat(partial_path, &st)) { - runes_die("couldn't stat %s: %s\n", partial_path, strerror(errno)); + runes_die("couldn't stat %s: %s", partial_path, strerror(errno)); } if (!S_ISDIR(st.st_mode)) { - runes_die("couldn't create directory %s: %s\n", + runes_die("couldn't create directory %s: %s", partial_path, strerror(EEXIST)); } free(partial_path); free(dir); } + +static void runes_vwarn(const char *fmt, va_list ap) +{ + size_t fmt_len; + char *fmt_with_nl; + + fmt_len = strlen(fmt); + fmt_with_nl = malloc(fmt_len + 2); + strcpy(fmt_with_nl, fmt); + fmt_with_nl[fmt_len] = '\n'; + fmt_with_nl[fmt_len + 1] = '\0'; + + /* XXX make this do something else on windows */ + vfprintf(stderr, fmt_with_nl, ap); +} diff --git a/src/window-xlib.c b/src/window-xlib.c index dfa15b9..692029f 100644 --- a/src/window-xlib.c +++ b/src/window-xlib.c @@ -179,8 +179,7 @@ void runes_window_backend_create_window(RunesTerm *t, int argc, char *argv[]) NULL ); if (w->ic == NULL) { - runes_warn("failed\n"); - exit(1); + runes_die("failed"); } XInternAtoms(w->dpy, atom_names, RUNES_NUM_ATOMS, False, w->atoms); -- cgit v1.2.3