diff options
Diffstat (limited to 'libc')
| -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 | 
