diff options
Diffstat (limited to 'libc/misc')
-rw-r--r-- | libc/misc/syslog/syslog.c | 116 |
1 files changed, 55 insertions, 61 deletions
diff --git a/libc/misc/syslog/syslog.c b/libc/misc/syslog/syslog.c index 4472abcfd..016db0864 100644 --- a/libc/misc/syslog/syslog.c +++ b/libc/misc/syslog/syslog.c @@ -33,6 +33,7 @@ #define ctime __ctime #define sigaction __sigaction_internal +#define connect __connect #define __FORCE_GLIBC #define _GNU_SOURCE @@ -101,13 +102,6 @@ static int LogFacility = LOG_USER; /* default facility code */ static int LogMask = 0xff; /* mask of priorities to be logged */ static struct sockaddr SyslogAddr; /* AF_UNIX address of local logger */ -static void closelog_intern( int ); -void syslog( int, const char *, ...); -void vsyslog( int, const char *, va_list ); -void openlog( const char *, int, int ); -void closelog( void ); -int setlogmask(int pmask); - static void closelog_intern(int to_default) { @@ -134,6 +128,59 @@ sigpipe_handler (int sig) } /* + * OPENLOG -- open system log + */ +void attribute_hidden +__openlog( const char *ident, int logstat, int logfac ) +{ + int logType = SOCK_DGRAM; + + LOCK; + + if (ident != NULL) + LogTag = ident; + LogStat = logstat; + if (logfac != 0 && (logfac &~ LOG_FACMASK) == 0) + LogFacility = logfac; + if (LogFile == -1) { + SyslogAddr.sa_family = AF_UNIX; + (void)__strncpy(SyslogAddr.sa_data, _PATH_LOG, + sizeof(SyslogAddr.sa_data)); +retry: + if (LogStat & LOG_NDELAY) { + if ((LogFile = socket(AF_UNIX, logType, 0)) == -1){ + UNLOCK; + return; + } + /* fcntl(LogFile, F_SETFD, 1); */ + } + } + + if (LogFile != -1 && !connected) { + if (connect(LogFile, &SyslogAddr, sizeof(SyslogAddr) - + sizeof(SyslogAddr.sa_data) + __strlen(SyslogAddr.sa_data)) != -1) + { + connected = 1; + } else if (logType == SOCK_DGRAM) { + logType = SOCK_STREAM; + if (LogFile != -1) { + __close(LogFile); + LogFile = -1; + } + goto retry; + } else { + if (LogFile != -1) { + __close(LogFile); + LogFile = -1; + } + } + } + + UNLOCK; +} +strong_alias(__openlog,openlog) + +/* * syslog, vsyslog -- * print message on log file; output is intended for syslogd(8). */ @@ -162,7 +209,7 @@ __vsyslog( int pri, const char *fmt, va_list ap ) if (!(LogMask & LOG_MASK(LOG_PRI(pri))) || (pri &~ (LOG_PRIMASK|LOG_FACMASK))) goto getout; if (LogFile < 0 || !connected) - openlog(LogTag, LogStat | LOG_NDELAY, 0); + __openlog(LogTag, LogStat | LOG_NDELAY, 0); /* Set default facility if none specified. */ if ((pri & LOG_FACMASK) == 0) @@ -272,59 +319,6 @@ __syslog(int pri, const char *fmt, ...) strong_alias(__syslog,syslog) /* - * OPENLOG -- open system log - */ -void attribute_hidden -__openlog( const char *ident, int logstat, int logfac ) -{ - int logType = SOCK_DGRAM; - - LOCK; - - if (ident != NULL) - LogTag = ident; - LogStat = logstat; - if (logfac != 0 && (logfac &~ LOG_FACMASK) == 0) - LogFacility = logfac; - if (LogFile == -1) { - SyslogAddr.sa_family = AF_UNIX; - (void)__strncpy(SyslogAddr.sa_data, _PATH_LOG, - sizeof(SyslogAddr.sa_data)); -retry: - if (LogStat & LOG_NDELAY) { - if ((LogFile = socket(AF_UNIX, logType, 0)) == -1){ - UNLOCK; - return; - } - /* fcntl(LogFile, F_SETFD, 1); */ - } - } - - if (LogFile != -1 && !connected) { - if (connect(LogFile, &SyslogAddr, sizeof(SyslogAddr) - - sizeof(SyslogAddr.sa_data) + __strlen(SyslogAddr.sa_data)) != -1) - { - connected = 1; - } else if (logType == SOCK_DGRAM) { - logType = SOCK_STREAM; - if (LogFile != -1) { - __close(LogFile); - LogFile = -1; - } - goto retry; - } else { - if (LogFile != -1) { - __close(LogFile); - LogFile = -1; - } - } - } - - UNLOCK; -} -strong_alias(__openlog,openlog) - -/* * CLOSELOG -- close the system log */ void attribute_hidden |