diff options
author | yar <yar@FreeBSD.org> | 2007-06-15 10:10:40 +0000 |
---|---|---|
committer | yar <yar@FreeBSD.org> | 2007-06-15 10:10:40 +0000 |
commit | 0a5d437c3dd0eac9955bd0742b4f63b7e0dc12b3 (patch) | |
tree | 0cf4f0b23b39d0349e39ff79da38da3b350b7334 /libexec/atrun/atrun.c | |
parent | d4335e2e0b750eb3e39554d703b90e85eb89441e (diff) | |
download | FreeBSD-src-0a5d437c3dd0eac9955bd0742b4f63b7e0dc12b3.zip FreeBSD-src-0a5d437c3dd0eac9955bd0742b4f63b7e0dc12b3.tar.gz |
Make perr() variadic and add perrx() to use in cases where
errno is irrelevant. Some code duplication can be reduced
if perr() is variadic and perrx() is available.
Diffstat (limited to 'libexec/atrun/atrun.c')
-rw-r--r-- | libexec/atrun/atrun.c | 34 |
1 files changed, 30 insertions, 4 deletions
diff --git a/libexec/atrun/atrun.c b/libexec/atrun/atrun.c index 9881415..977eaa0 100644 --- a/libexec/atrun/atrun.c +++ b/libexec/atrun/atrun.c @@ -41,6 +41,7 @@ static const char rcsid[] = #include <grp.h> #include <pwd.h> #include <signal.h> +#include <stdarg.h> #include <stddef.h> #include <stdio.h> #include <stdlib.h> @@ -88,7 +89,8 @@ static const char rcsid[] = static int debug = 0; -void perr(const char *a); +void perr(const char *fmt, ...); +void perrx(const char *fmt, ...); static void usage(void); /* Local functions */ @@ -384,14 +386,38 @@ run_file(const char *filename, uid_t uid, gid_t gid) /* Needed in gloadavg.c */ void -perr(const char *a) +perr(const char *fmt, ...) { + const char * const fmtadd = ": %m"; + char nfmt[strlen(fmt) + strlen(fmtadd) + 1]; + va_list ap; + + va_start(ap, fmt); if (debug) { - warn("%s", a); + vwarn(fmt, ap); + } + else + { + snprintf(nfmt, sizeof(nfmt), "%s%s", fmt, fmtadd); + vsyslog(LOG_ERR, nfmt, ap); } + va_end(ap); + + exit(EXIT_FAILURE); +} + +void +perrx(const char *fmt, ...) +{ + va_list ap; + + va_start(ap, fmt); + if (debug) + vwarnx(fmt, ap); else - syslog(LOG_ERR, "%s: %m", a); + vsyslog(LOG_ERR, fmt, ap); + va_end(ap); exit(EXIT_FAILURE); } |