From 7720c6cbb7ff30abc1c4d85aada869294cc3db47 Mon Sep 17 00:00:00 2001 From: Brent Cook Date: Sun, 4 Jan 2015 22:19:51 -0600 Subject: [PATCH 01/12] make fatal/fatalx variadic like the other logging functions this factors out the guts of log_warn and adds logerr --- src/usr.sbin/ntpd/log.c | 54 +++++++++++++++++++++++++++--------------------- src/usr.sbin/ntpd/ntpd.h | 4 ++-- 2 files changed, 32 insertions(+), 26 deletions(-) diff --git a/src/usr.sbin/ntpd/log.c b/src/usr.sbin/ntpd/log.c index 618f4cc..e92924e 100644 --- a/src/usr.sbin/ntpd/log.c +++ b/src/usr.sbin/ntpd/log.c @@ -71,29 +71,33 @@ vlog(int pri, const char *fmt, va_list ap) vsyslog(pri, fmt, ap); } - void -log_warn(const char *emsg, ...) +vlogerr(int pri, const char *fmt, va_list ap) { char *nfmt; - va_list ap; /* best effort to even work in out of memory situations */ - if (emsg == NULL) - logit(LOG_CRIT, "%s", strerror(errno)); - else { - va_start(ap, emsg); - - if (asprintf(&nfmt, "%s: %s", emsg, strerror(errno)) == -1) { + if (fmt) { + if (asprintf(&nfmt, "%s: %s", fmt, strerror(errno)) == -1) { /* we tried it... */ - vlog(LOG_CRIT, emsg, ap); + vlog(LOG_CRIT, fmt, ap); logit(LOG_CRIT, "%s", strerror(errno)); } else { vlog(LOG_CRIT, nfmt, ap); free(nfmt); } - va_end(ap); - } + } else + logit(LOG_CRIT, "%s", strerror(errno)); +} + +void +log_warn(const char *emsg, ...) +{ + va_list ap; + + va_start(ap, emsg); + vlogerr(LOG_CRIT, emsg, ap); + va_end(ap); } void @@ -129,25 +133,27 @@ log_debug(const char *emsg, ...) } void -fatal(const char *emsg) +fatal(const char *emsg, ...) { - if (emsg == NULL) - logit(LOG_CRIT, "fatal: %s", strerror(errno)); - else - if (errno) - logit(LOG_CRIT, "fatal: %s: %s", - emsg, strerror(errno)); - else - logit(LOG_CRIT, "fatal: %s", emsg); + va_list ap; + + va_start(ap, emsg); + vlogerr(LOG_CRIT, emsg, ap); + va_end(ap); exit(1); } void -fatalx(const char *emsg) +fatalx(const char *emsg, ...) { - errno = 0; - fatal(emsg); + va_list ap; + + va_start(ap, emsg); + vlog(LOG_CRIT, emsg, ap); + va_end(ap); + + exit(1); } const char * diff --git a/src/usr.sbin/ntpd/ntpd.h b/src/usr.sbin/ntpd/ntpd.h index 4a768d8..31bc5a0 100644 --- a/src/usr.sbin/ntpd/ntpd.h +++ b/src/usr.sbin/ntpd/ntpd.h @@ -269,8 +269,8 @@ void log_warn(const char *, ...); void log_warnx(const char *, ...); void log_info(const char *, ...); void log_debug(const char *, ...); -void fatal(const char *); -void fatalx(const char *); +void fatal(const char *, ...); +void fatalx(const char *, ...); const char *log_sockaddr(struct sockaddr *); /* ntp.c */ -- 1.9.1