Implement optional syslog logging using ordinary

bb_xx_msg calls, and convert networking/* to it.
The rest of bbox will be converted gradually.
This commit is contained in:
Denis Vlasenko
2006-09-06 18:36:50 +00:00
parent 5d725462d4
commit 3538b9a882
39 changed files with 296 additions and 366 deletions

View File

@ -11,11 +11,37 @@
#include <errno.h>
#include <string.h>
#include <stdlib.h>
#include <syslog.h>
#include "libbb.h"
void bb_verror_msg(const char *s, va_list p)
int logmode = LOGMODE_STDIO;
void bb_verror_msg(const char *s, va_list p, const char* strerr)
{
fflush(stdout);
fprintf(stderr, "%s: ", bb_applet_name);
vfprintf(stderr, s, p);
/* va_copy is used because it is not portable
* to use va_list p twice */
va_list p2;
va_copy(p2, p);
if (logmode & LOGMODE_STDIO) {
fflush(stdout);
fprintf(stderr, "%s: ", bb_applet_name);
vfprintf(stderr, s, p);
if (!strerr)
fputc('\n', stderr);
else
fprintf(stderr, ": %s\n", strerr);
}
if (logmode & LOGMODE_SYSLOG) {
if (!strerr)
vsyslog(LOG_ERR, s, p2);
else {
char *msg;
if (vasprintf(&msg, s, p2) < 0)
bb_error_msg_and_die(bb_msg_memory_exhausted);
syslog(LOG_ERR, "%s: %s", msg, strerr);
free(msg);
}
}
va_end(p2);
}