From b18ac9358cdd7d18897fb7bc73610f6fd6cb1853 Mon Sep 17 00:00:00 2001 From: Hajimu UMEMOTO Date: Sun, 17 Aug 2003 18:35:56 +0000 Subject: [PATCH] - don't print strerror() if errno == 0 on fatal(). - va_start/end audit. - can't use vfprintf() twice. need va_start/end pair every time. Obtained from: KAME MFC after: 1 week --- usr.sbin/route6d/route6d.c | 42 ++++++++++++++++++++++++++------------ 1 file changed, 29 insertions(+), 13 deletions(-) diff --git a/usr.sbin/route6d/route6d.c b/usr.sbin/route6d/route6d.c index 6702b646f36c..e2030b727ac1 100644 --- a/usr.sbin/route6d/route6d.c +++ b/usr.sbin/route6d/route6d.c @@ -3335,10 +3335,13 @@ fatal(fmt, va_alist) va_start(ap); #endif vsnprintf(buf, sizeof(buf), fmt, ap); - perror(buf); - syslog(LOG_ERR, "%s: %s", buf, strerror(errno)); - rtdexit(); va_end(ap); + perror(buf); + if (errno) + syslog(LOG_ERR, "%s: %s", buf, strerror(errno)); + else + syslog(LOG_ERR, "%s", buf); + rtdexit(); } void @@ -3353,22 +3356,28 @@ tracet(level, fmt, va_alist) { va_list ap; -#ifdef __STDC__ - va_start(ap, fmt); -#else - va_start(ap); -#endif if (level <= dflag) { +#ifdef __STDC__ + va_start(ap, fmt); +#else + va_start(ap); +#endif fprintf(stderr, "%s: ", hms()); vfprintf(stderr, fmt, ap); + va_end(ap); } if (dflag) { +#ifdef __STDC__ + va_start(ap, fmt); +#else + va_start(ap); +#endif if (level > 0) vsyslog(LOG_DEBUG, fmt, ap); else vsyslog(LOG_WARNING, fmt, ap); + va_end(ap); } - va_end(ap); } void @@ -3383,20 +3392,27 @@ trace(level, fmt, va_alist) { va_list ap; + if (level <= dflag) { #ifdef __STDC__ - va_start(ap, fmt); + va_start(ap, fmt); #else - va_start(ap); + va_start(ap); #endif - if (level <= dflag) vfprintf(stderr, fmt, ap); + va_end(ap); + } if (dflag) { +#ifdef __STDC__ + va_start(ap, fmt); +#else + va_start(ap); +#endif if (level > 0) vsyslog(LOG_DEBUG, fmt, ap); else vsyslog(LOG_WARNING, fmt, ap); + va_end(ap); } - va_end(ap); } unsigned int