X-Git-Url: http://git.archive.openwrt.org/?p=project%2Flibubox.git;a=blobdiff_plain;f=ulog.c;h=b7300e720d21012ca60f96490cb24d91abd3efc5;hp=f7c92d80fddd03880c51311164e70da5b4627111;hb=42a8ecd8587055fba686243a902a212915493900;hpb=ca6d5472056ceee4b8ab320167e0ae8155a95985 diff --git a/ulog.c b/ulog.c index f7c92d8..b7300e7 100644 --- a/ulog.c +++ b/ulog.c @@ -35,12 +35,13 @@ static const char *ulog_default_ident(void) FILE *self; static char line[64]; char *p = NULL; + char *sbuf; if ((self = fopen("/proc/self/status", "r")) != NULL) { while (fgets(line, sizeof(line), self)) { if (!strncmp(line, "Name:", 5)) { - strtok(line, "\t\n"); - p = strtok(NULL, "\t\n"); + strtok_r(line, "\t\n", &sbuf); + p = strtok_r(NULL, "\t\n", &sbuf); break; } } @@ -90,7 +91,7 @@ static void ulog_kmsg(int priority, const char *fmt, va_list ap) { FILE *kmsg; - if ((kmsg = fopen("/dev/kmsg", "w")) != NULL) { + if ((kmsg = fopen("/dev/kmsg", "r+")) != NULL) { fprintf(kmsg, "<%u>", priority); if (_ulog_ident) @@ -105,9 +106,6 @@ static void ulog_stdio(int priority, const char *fmt, va_list ap) { FILE *out = stderr; - if (priority == LOG_INFO || priority == LOG_NOTICE) - out = stdout; - if (_ulog_ident) fprintf(out, "%s: ", _ulog_ident); @@ -121,11 +119,24 @@ static void ulog_syslog(int priority, const char *fmt, va_list ap) void ulog_open(int channels, int facility, const char *ident) { + ulog_close(); + _ulog_channels = channels; _ulog_facility = facility; _ulog_ident = ident; } +void ulog_close(void) +{ + if (!_ulog_initialized) + return; + + if (_ulog_channels & ULOG_SYSLOG) + closelog(); + + _ulog_initialized = 0; +} + void ulog_threshold(int threshold) { _ulog_threshold = threshold;