X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=utils%2Fgssd%2Ferr_util.c;h=fe09eda6761067d9f7d50bd9201dd0696bb285ad;hb=24d0b823f10f9cae2eba9b22fb830dd8dc3fb15a;hp=ca9b0286e03037fa6e3663d498e185b05a54048a;hpb=f1bfe0916c04d93de7a4fae5315fff6e4ccac23f;p=nfs-utils.git diff --git a/utils/gssd/err_util.c b/utils/gssd/err_util.c index ca9b028..fe09eda 100644 --- a/utils/gssd/err_util.c +++ b/utils/gssd/err_util.c @@ -28,65 +28,44 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +#ifdef HAVE_CONFIG_H +#include +#endif /* HAVE_CONFIG_H */ + #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)); +} + +int get_verbosity(void) +{ + return verbosity; }