#include <syslog.h> #include <varargs.h>
int vsyslog(int priority, const char *message, va_list ap);
Safe
vsyslog() is the same as syslog(3) except that instead of being called with a variable number of arguments, it is called with an argument list as defined by varargs(5) .
#include <syslog.h> #include <varargs.h> ... /* * error should be called like: * error(pri, function_name, format, arg1, arg2...); * Note that pri, function_name, and format cannot be declared * separately because of the definition of varargs. */ /*VARARGS0*/ void error(va_alist) va_dcl; { va_list args; int pri; char *message; va_start(args); pri = va_arg(args, int); /* log name of function causing error */ (void) syslog(pri, "ERROR in %s", va_arg(args, char *)); message = va_arg(args, char *); /* log remainder of message */ (void) vsyslog(pri, msg, args); va_end(args); (void) abort(); }