summaryrefslogtreecommitdiff
path: root/libc
diff options
context:
space:
mode:
authorRoman I Khimov <khimov@altell.ru>2010-12-23 11:57:49 +0300
committerBernhard Reutner-Fischer <rep.dot.nop@gmail.com>2011-01-11 19:47:58 +0100
commit8fdc17c2ba1322712604d88dca48157068e6aadb (patch)
tree4aa5f7abe26625b1eb62d6dd2c0d83c3063d5d1e /libc
parente0d2b8e59beba49d6c2bdcf24257cc1834ce2b26 (diff)
syslog: fix 'everyone logs with user facility'
It's been found that on uclibc-based system most of the programs log with 'user' facility despite the calls to openlog() with other facilities explicitly set. Most but not all. Investigating that I've found that the ones logging with proper facilities used LOG_NDELAY in openlog(). The problem is that LogFacility is overwritten in openlog_intern and LOG_USER is passed to it from vsyslog() no matter what the program set with openlog(). Signed-off-by: Roman I Khimov <khimov@altell.ru> Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
Diffstat (limited to 'libc')
-rw-r--r--libc/misc/syslog/syslog.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/libc/misc/syslog/syslog.c b/libc/misc/syslog/syslog.c
index b10a55615..f1b848f0b 100644
--- a/libc/misc/syslog/syslog.c
+++ b/libc/misc/syslog/syslog.c
@@ -205,7 +205,7 @@ vsyslog(int pri, const char *fmt, va_list ap)
if ((LogMask & LOG_MASK(LOG_PRI(pri))) == 0)
goto getout;
if (LogFile < 0 || !connected)
- openlog_intern(NULL, LogStat | LOG_NDELAY, LOG_USER);
+ openlog_intern(NULL, LogStat | LOG_NDELAY, (int)LogFacility << 3);
/* Set default facility if none specified. */
if ((pri & LOG_FACMASK) == 0)