commit f445665c06017f506b38d8366dd6a071f66d7521 from: Brett Fisher date: Fri Jun 12 01:32:18 2026 UTC bxbar.c, config.def.h: Implement die() and refine logging strategy. - Introduce die() for fatal error handling and standardized exit codes. - Implement compile-time DEBUG_LOGGING gate in config.def.h. - Remove hardcoded log path; pipe logmsg() output to stderr. - Standardize error reporting using die() in setup and initialization. commit - 9ec8bc72c26d942a1a1338893604cc7d5719f1b7 commit + f445665c06017f506b38d8366dd6a071f66d7521 blob - ac2b77ea98854ffeded9adc10fba1b822bb4bd0e blob + feb7a63cad7608d95fe51ce286447a5339dc4cb6 --- bxbar.c +++ bxbar.c @@ -41,9 +41,12 @@ static Atom net_wm_window_type, net_wm_window_type_doc static Atom net_wm_strut_partial; /* Forward function declarations */ +static void die(const char *fmt, ...); +#if DEBUG_LOGGING +static void logmsg(const char *fmt, ...); +#endif static void setup(void); static void set_dock_atoms(void); -static void logmsg(const char *fmt, ...); static void run(void); static int readstdin(void); static void draw(void); @@ -52,8 +55,7 @@ static void cleanup(int status); int main(void) { setlocale(LC_CTYPE, ""); if (!(dpy = XOpenDisplay(NULL))) { - fprintf(stderr, "bxbar: cannot open display\n"); - return 1; + die("bxbar: cannot open display"); } signal(SIGHUP, SIG_IGN); @@ -64,6 +66,33 @@ int main(void) { return 0; } +static void +die(const char *fmt, ...) +{ + va_list ap; + va_start(ap, fmt); + vfprintf(stderr, fmt, ap); + va_end(ap); + fputc('\n', stderr); + fflush(stderr); + cleanup(1); +} + +#if DEBUG_LOGGING +static void +logmsg(const char *fmt, ...) +{ + va_list ap; + va_start(ap, fmt); + vfprintf(stderr, fmt, ap); + va_end(ap); + fputc('\n', stderr); + fflush(stderr); +} +#else +#define logmsg(...) ((void)0) +#endif + static void setup(void) { Colormap cmap = DefaultColormap(dpy, screen); XColor xc; @@ -73,15 +102,13 @@ static void setup(void) { /* Allocate background color */ if (!XParseColor(dpy, cmap, BG_COLOR, &xc) || !XAllocColor(dpy, cmap, &xc)) { - fprintf(stderr, "bxbar: cannot allocate bg color '%s'\n", BG_COLOR); - cleanup(1); + die("bxbar: cannot allocate bg color '%s'", BG_COLOR); } bg_pixel = xc.pixel; /* Allocate border color */ if (!XParseColor(dpy, cmap, BORDER_COLOR, &xc) || !XAllocColor(dpy, cmap, &xc)) { - fprintf(stderr, "bxbar: cannot allocate border color '%s'\n", BORDER_COLOR); - cleanup(1); + die("bxbar: cannot allocate border color '%s'", BORDER_COLOR); } border_pixel = xc.pixel; @@ -133,19 +160,6 @@ static void set_dock_atoms(void) { PropModeReplace, (unsigned char *)strut, 12); } -static void -logmsg(const char *fmt, ...) -{ - FILE *f = fopen("/home/brett/.local/tmp/bxbar.log", "a"); - if (!f) return; - va_list ap; - va_start(ap, fmt); - vfprintf(f, fmt, ap); - fprintf(f, "\n"); - va_end(ap); - fclose(f); -} - void run(void) { @@ -170,7 +184,6 @@ run(void) if (fds[0].revents & (POLLIN | POLLHUP)) { if (fds[0].revents & POLLIN) { int rc = readstdin(); - logmsg("readstdin returned %d, slen=%d, stext='%s'", rc, slen, stext); if (rc == 1) { fds[0].fd = -1; logmsg("stdin EOF, fd set to -1"); @@ -244,8 +257,6 @@ text_fit(const char *s, int len, int max_w, XGlyphInfo void draw(void) { - logmsg("draw() called, stext='%s'", stext); - /* Paint background */ XftDrawRect(xft_draw, &color[1], 0, 0, screen_w, BAR_HEIGHT); @@ -273,7 +284,6 @@ draw(void) while (*right == ' ') right++; - logmsg("DEBUG: Left string is '%s', Right string is '%s'", left, right); /* Left section — left-aligned */ int left_len = text_fit(left, strlen(left), half_w, &ext); XftDrawStringUtf8(xft_draw, &color[0], font, PADDING, y, @@ -285,10 +295,6 @@ draw(void) XftDrawStringUtf8(xft_draw, &color[0], font, right_x, y, (FcChar8 *)right, right_len); - logmsg("drawing left: '%.*s' len=%d at x=%d", left_len, left, left_len, PADDING); - logmsg("drawing right: '%.*s' len=%d at x=%d", right_len, right, right_len, right_x); - - /* Restore delimiter */ *delim = DELIMITER; } else { blob - 4cbd713c3d6f0b24c25efc9122f76dcad8f751d8 blob + 7d3a78ec662265c9b3363c03bbc80f79e8b96c43 --- config.def.h +++ config.def.h @@ -13,4 +13,5 @@ #define BG_COLOR "#000000" #define FONT "monospace:size=14" #define DELIMITER '\x01' +#define DEBUG_LOGGING 0