summaryrefslogtreecommitdiffstats
path: root/lib/libc/gen/syslog.c
diff options
context:
space:
mode:
authorjdp <jdp@FreeBSD.org>1997-03-20 16:28:27 +0000
committerjdp <jdp@FreeBSD.org>1997-03-20 16:28:27 +0000
commita8649427262d646ff09a8308f1b50555d352fabc (patch)
treed1bfbf7bf8ad8647d4f3fc4a4f9774273fb047cc /lib/libc/gen/syslog.c
parent36c0c947215632ac074ea27ae53b79364b972572 (diff)
downloadFreeBSD-src-a8649427262d646ff09a8308f1b50555d352fabc.zip
FreeBSD-src-a8649427262d646ff09a8308f1b50555d352fabc.tar.gz
Add backward compatibility so that static executables built on
modern FreeBSD systems will syslog properly on older systems that still name the logging socket "/dev/log". This includes pre-2.2 versions of FreeBSD as well as BSD/OS systems. If the connect to "/var/run/log" fails, the function now tries to connect to "/dev/log" as a fallback.
Diffstat (limited to 'lib/libc/gen/syslog.c')
-rw-r--r--lib/libc/gen/syslog.c33
1 files changed, 23 insertions, 10 deletions
diff --git a/lib/libc/gen/syslog.c b/lib/libc/gen/syslog.c
index b1160c4..0eb721e 100644
--- a/lib/libc/gen/syslog.c
+++ b/lib/libc/gen/syslog.c
@@ -36,7 +36,7 @@
static char sccsid[] = "@(#)syslog.c 8.5 (Berkeley) 4/29/95";
*/
static const char rcsid[] =
- "$Id: syslog.c,v 1.11 1997/02/22 14:58:18 peter Exp $";
+ "$Id: syslog.c,v 1.12 1997/03/11 11:52:33 peter Exp $";
#endif /* LIBC_SCCS and not lint */
#include <sys/types.h>
@@ -273,9 +273,6 @@ vsyslog(pri, fmt, ap)
(void)close(fd);
}
}
-
-static struct sockaddr SyslogAddr; /* AF_UNIX address of local logger */
-
static void
disconnectlog()
{
@@ -294,20 +291,36 @@ disconnectlog()
static void
connectlog()
{
+ struct sockaddr SyslogAddr; /* AF_UNIX address of local logger */
+
if (LogFile == -1) {
- SyslogAddr.sa_family = AF_UNIX;
- (void)strncpy(SyslogAddr.sa_data, _PATH_LOG,
- sizeof(SyslogAddr.sa_data));
if ((LogFile = socket(AF_UNIX, SOCK_DGRAM, 0)) == -1)
return;
(void)fcntl(LogFile, F_SETFD, 1);
}
if (LogFile != -1 && !connected) {
- if (connect(LogFile, &SyslogAddr, sizeof(SyslogAddr)) == -1) {
+ SyslogAddr.sa_len = sizeof(SyslogAddr);
+ SyslogAddr.sa_family = AF_UNIX;
+ (void)strncpy(SyslogAddr.sa_data, _PATH_LOG,
+ sizeof(SyslogAddr.sa_data));
+ connected = connect(LogFile, &SyslogAddr,
+ sizeof(SyslogAddr)) != -1;
+
+ if (!connected) {
+ /*
+ * Try the old "/dev/log" path, for backward
+ * compatibility.
+ */
+ (void)strncpy(SyslogAddr.sa_data, _PATH_OLDLOG,
+ sizeof(SyslogAddr.sa_data));
+ connected = connect(LogFile, &SyslogAddr,
+ sizeof(SyslogAddr)) != -1;
+ }
+
+ if (!connected) {
(void)close(LogFile);
LogFile = -1;
- } else
- connected = 1;
+ }
}
}
OpenPOWER on IntegriCloud