=================================================================== RCS file: /cvs/cvs/blind/log.c,v retrieving revision 1.4 retrieving revision 1.5 diff -u -p -r1.4 -r1.5 --- blind/log.c 2022/03/18 09:20:46 1.4 +++ blind/log.c 2022/03/18 19:55:19 1.5 @@ -15,26 +15,31 @@ */ #include +#include #include #include +#include +#include #include static int log_background; static int log_verbose; const char *log_procname; -void log_init(int, int); -void log_setv(int); -int log_getv(void); -void log_send(const char *, va_list) +void log_initialize(int, int); +void log_setverbose(int); +int log_getverbose(void); +void log_send(const char *, va_list) __attribute__((__format__ (printf, 1, 0))); -void log_info(const char *, ...) +void log_info(const char *, ...) __attribute__((__format__ (printf, 1, 2))); -void log_debug(const char *, ...) +void log_debug(const char *, ...) __attribute__((__format__ (printf, 1, 2))); +__dead void log_fatal(const char *, ...) + __attribute__((__format__ (printf, 1, 2))); void -log_init(int background, int facility) +log_initialize(int background, int facility) { extern char *__progname; @@ -49,13 +54,13 @@ log_init(int background, int facility) } void -log_setv(int verb) +log_setverbose(int verb) { log_verbose = verb; } int -log_getv(void) +log_getverbose(void) { return (log_verbose); } @@ -63,11 +68,13 @@ log_getv(void) void log_send(const char *info, va_list ap) { - if (log_background) - vsyslog(LOG_INFO, info, ap); - else { - vfprintf(stderr, info, ap); - fprintf(stderr, "\n"); + if (info != NULL) { + if (log_background) + vsyslog(LOG_INFO, info, ap); + else { + vfprintf(stderr, info, ap); + fprintf(stderr, "\n"); + } } } @@ -92,3 +99,16 @@ log_debug(const char *info, ...) va_end(ap); } } + +void +log_fatal(const char *info, ...) +{ + va_list ap; + + va_start(ap, info); + log_send(info, ap); + va_end(ap); + log_info("%s", strerror(errno)); + exit(1); +} +