diff options
Diffstat (limited to 'log.c')
-rw-r--r-- | log.c | 14 |
1 files changed, 12 insertions, 2 deletions
@@ -34,7 +34,7 @@ | |||
34 | */ | 34 | */ |
35 | 35 | ||
36 | #include "includes.h" | 36 | #include "includes.h" |
37 | RCSID("$OpenBSD: log.c,v 1.26 2003/04/08 20:21:28 itojun Exp $"); | 37 | RCSID("$OpenBSD: log.c,v 1.27 2003/05/18 23:22:01 deraadt Exp $"); |
38 | 38 | ||
39 | #include "log.h" | 39 | #include "log.h" |
40 | #include "xmalloc.h" | 40 | #include "xmalloc.h" |
@@ -339,6 +339,9 @@ log_init(char *av0, LogLevel level, SyslogFacility facility, int on_stderr) | |||
339 | void | 339 | void |
340 | do_log(LogLevel level, const char *fmt, va_list args) | 340 | do_log(LogLevel level, const char *fmt, va_list args) |
341 | { | 341 | { |
342 | #ifdef OPENLOG_R | ||
343 | struct syslog_data sdata = SYSLOG_DATA_INIT; | ||
344 | #endif | ||
342 | char msgbuf[MSGBUFSIZ]; | 345 | char msgbuf[MSGBUFSIZ]; |
343 | char fmtbuf[MSGBUFSIZ]; | 346 | char fmtbuf[MSGBUFSIZ]; |
344 | char *txt = NULL; | 347 | char *txt = NULL; |
@@ -391,10 +394,17 @@ do_log(LogLevel level, const char *fmt, va_list args) | |||
391 | strnvis(fmtbuf, msgbuf, sizeof(fmtbuf), VIS_OCTAL); | 394 | strnvis(fmtbuf, msgbuf, sizeof(fmtbuf), VIS_OCTAL); |
392 | 395 | ||
393 | if (log_on_stderr) { | 396 | if (log_on_stderr) { |
394 | fprintf(stderr, "%s\r\n", fmtbuf); | 397 | snprintf(fmtbuf, sizeof fmtbuf, "%s\r\n", msgbuf); |
398 | write(STDERR_FILENO, fmtbuf, strlen(fmtbuf)); | ||
395 | } else { | 399 | } else { |
400 | #ifdef OPENLOG_R | ||
401 | openlog_r(argv0 ? argv0 : __progname, LOG_PID, log_facility, &sdata); | ||
402 | syslog_r(pri, &sdata, "%.500s", msgbuf); | ||
403 | closelog_r(&sdata); | ||
404 | #else | ||
396 | openlog(argv0 ? argv0 : __progname, LOG_PID, log_facility); | 405 | openlog(argv0 ? argv0 : __progname, LOG_PID, log_facility); |
397 | syslog(pri, "%.500s", fmtbuf); | 406 | syslog(pri, "%.500s", fmtbuf); |
398 | closelog(); | 407 | closelog(); |
408 | #endif | ||
399 | } | 409 | } |
400 | } | 410 | } |