X-Git-Url: https://git.decadent.org.uk/gitweb/?p=nfs-utils.git;a=blobdiff_plain;f=utils%2Fgssd%2Ferr_util.c;h=5644db68b73961ff1f0da47a245a4fef44523a2f;hp=ca9b0286e03037fa6e3663d498e185b05a54048a;hb=58ddd1faed90c83abad80ab7f460976cc0c0a213;hpb=f1bfe0916c04d93de7a4fae5315fff6e4ccac23f diff --git a/utils/gssd/err_util.c b/utils/gssd/err_util.c index ca9b028..5644db6 100644 --- a/utils/gssd/err_util.c +++ b/utils/gssd/err_util.c @@ -30,63 +30,33 @@ #include #include -#include #include -#include "err_util.h" +#include "xlog.h" static int verbosity = 0; static int fg = 0; -static char message_buf[500]; -static char tmp_buf[500]; - void initerr(char *progname, int set_verbosity, int set_fg) { verbosity = set_verbosity; fg = set_fg; if (!fg) - openlog(progname, LOG_PID, LOG_DAEMON); + xlog_open(progname); } + void printerr(int priority, char *format, ...) { va_list args; - int ret; - /* aggregate lines: only print buffer when we get to the end of a - * line or run out of space: */ + /* Don't bother formatting a message we're never going to print! */ + if (priority > verbosity) + return; + va_start(args, format); - ret = vsnprintf(tmp_buf, sizeof(tmp_buf), format, args); + if (fg) + vfprintf(stderr, format, args); + else + xlog_backend(L_ERROR, format, args); va_end(args); - if ((ret < 0) || (ret >= sizeof(tmp_buf))) - goto output; - if (strlen(tmp_buf) + strlen(message_buf) + 1 > sizeof(message_buf)) - goto output; - strcat(message_buf, tmp_buf); - if (tmp_buf[strlen(tmp_buf) - 1] == '\n') - goto output; - return; -output: - priority -= verbosity; - if (priority < 0) - priority = 0; - if (fg) { - if (priority == 0) - fprintf(stderr, "%s", message_buf); - } else { - int sys_pri; - switch (priority) { - case 0: - sys_pri = LOG_ERR; - break; - case 1: - sys_pri = LOG_DEBUG; - break; - default: - goto out; - } - syslog(sys_pri, "%s", message_buf); - } -out: - memset(message_buf, 0, sizeof(message_buf)); }