diff options
Diffstat (limited to 'util.c')
-rw-r--r-- | util.c | 36 |
1 files changed, 34 insertions, 2 deletions
diff --git a/util.c b/util.c index 7b8e4c8..9119cc2 100644 --- a/util.c +++ b/util.c @@ -31,13 +31,15 @@ #include "calmwm.h" +static void log_msg(const char *, va_list); + void u_spawn(char *argstr) { switch (fork()) { case 0: u_exec(argstr); - break; + exit(1); case -1: warn("fork"); default: @@ -78,7 +80,7 @@ u_exec(char *argstr) (void)setsid(); (void)execvp(args[0], args); - err(1, "%s", s); + warn("%s", s); } char * @@ -104,3 +106,33 @@ u_argv(char * const *argv) } return(p); } + +static void +log_msg(const char *msg, va_list ap) +{ + char *fmt; + + if (asprintf(&fmt, "%s\n", msg) == -1) { + vfprintf(stderr, msg, ap); + fprintf(stderr, "\n"); + } else { + vfprintf(stderr, fmt, ap); + free(fmt); + } + fflush(stderr); +} + +void +log_debug(int level, const char *func, const char *msg, ...) +{ + char *fmt; + va_list ap; + + if (Conf.debug < level) + return; + + va_start(ap, msg); + xasprintf(&fmt, "debug%d: %s: %s", level, func, msg); + log_msg(fmt, ap); + va_end(ap); +} |