Module Name: src
Committed By: christos
Date: Wed Oct 10 22:50:51 UTC 2012
Modified Files:
src/lib/libc/gen: syslog.c
Log Message:
PR/47055: David Holland: Remove static hostname and store the hostname in
syslog_data. Initialize hostname before it is used. While here, add a version
to syslog_data.
To generate a diff of this commit:
cvs rdiff -u -r1.50 -r1.51 src/lib/libc/gen/syslog.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/lib/libc/gen/syslog.c
diff -u src/lib/libc/gen/syslog.c:1.50 src/lib/libc/gen/syslog.c:1.51
--- src/lib/libc/gen/syslog.c:1.50 Tue Mar 13 17:13:37 2012
+++ src/lib/libc/gen/syslog.c Wed Oct 10 18:50:51 2012
@@ -1,4 +1,4 @@
-/* $NetBSD: syslog.c,v 1.50 2012/03/13 21:13:37 christos Exp $ */
+/* $NetBSD: syslog.c,v 1.51 2012/10/10 22:50:51 christos Exp $ */
/*
* Copyright (c) 1983, 1988, 1993
@@ -34,7 +34,7 @@
#if 0
static char sccsid[] = "@(#)syslog.c 8.5 (Berkeley) 4/29/95";
#else
-__RCSID("$NetBSD: syslog.c,v 1.50 2012/03/13 21:13:37 christos Exp $");
+__RCSID("$NetBSD: syslog.c,v 1.51 2012/10/10 22:50:51 christos Exp $");
#endif
#endif /* LIBC_SCCS and not lint */
@@ -68,15 +68,8 @@ __weak_alias(vsyslog,_vsyslog)
__weak_alias(syslogp,_syslogp)
__weak_alias(vsyslogp,_vsyslogp)
-__weak_alias(closelog_r,_closelog_r)
-__weak_alias(openlog_r,_openlog_r)
-__weak_alias(setlogmask_r,_setlogmask_r)
-__weak_alias(syslog_r,_syslog_r)
-__weak_alias(vsyslog_r,_vsyslog_r)
__weak_alias(syslog_ss,_syslog_ss)
__weak_alias(vsyslog_ss,_vsyslog_ss)
-__weak_alias(syslogp_r,_syslogp_r)
-__weak_alias(vsyslogp_r,_vsyslogp_r)
__weak_alias(syslogp_ss,_syslogp_ss)
__weak_alias(vsyslogp_ss,_vsyslogp_ss)
#endif
@@ -95,8 +88,6 @@ static void connectlog_r(struct syslog_d
static mutex_t syslog_mutex = MUTEX_INITIALIZER;
#endif
-static char hostname[MAXHOSTNAMELEN];
-
/*
* syslog, vsyslog --
* print message on log file; output is intended for syslogd(8).
@@ -304,13 +295,21 @@ vsyslogp_r(int pri, struct syslog_data *
prlen = strftime(p, tbuf_left, "%FT%TZ", &tmnow);
*/
}
+
+ if (data->log_hostname[0] == '\0' && gethostname(data->log_hostname,
+ sizeof(data->log_hostname)) == -1) {
+ /* can this really happen? */
+ data->log_hostname[0] = '-';
+ data->log_hostname[1] = '\0';
+ }
+
DEC();
- prlen = snprintf_ss(p, tbuf_left, " %s ", hostname);
- DEC();
+ prlen = snprintf_ss(p, tbuf_left, " %s ", data->log_hostname);
if (data->log_tag == NULL)
data->log_tag = getprogname();
+ DEC();
prlen = snprintf_ss(p, tbuf_left, "%s ",
data->log_tag ? data->log_tag : "-");
if (data->log_stat & (LOG_PERROR|LOG_CONS)) {
@@ -424,7 +423,7 @@ vsyslogp_r(int pri, struct syslog_data *
/* Get connected, output the message to the local logger. */
if (data == &sdata)
mutex_lock(&syslog_mutex);
- opened = !data->opened;
+ opened = !data->log_opened;
if (opened)
openlog_unlocked_r(data->log_tag, data->log_stat, 0, data);
connectlog_r(data);
@@ -483,7 +482,7 @@ disconnectlog_r(struct syslog_data *data
(void)close(data->log_file);
data->log_file = -1;
}
- data->connected = 0; /* retry connect */
+ data->log_connected = 0; /* retry connect */
}
static void
@@ -500,16 +499,16 @@ connectlog_r(struct syslog_data *data)
if ((data->log_file = socket(AF_UNIX, SOCK_DGRAM | SOCK_CLOEXEC,
0)) == -1)
return;
- data->connected = 0;
+ data->log_connected = 0;
}
- if (!data->connected) {
+ if (!data->log_connected) {
if (connect(data->log_file,
(const struct sockaddr *)(const void *)&sun,
(socklen_t)sizeof(sun)) == -1) {
(void)close(data->log_file);
data->log_file = -1;
} else
- data->connected = 1;
+ data->log_connected = 1;
}
}
@@ -526,14 +525,7 @@ openlog_unlocked_r(const char *ident, in
if (data->log_stat & LOG_NDELAY) /* open immediately */
connectlog_r(data);
- /* We could cache this, but then it might change */
- if (gethostname(hostname, sizeof(hostname)) == -1
- || hostname[0] == '\0') {
- /* can this really happen? */
- hostname[0] = '-';
- hostname[1] = '\0';
- }
- data->opened = 1;
+ data->log_opened = 1;
}
void
@@ -553,7 +545,7 @@ closelog_r(struct syslog_data *data)
mutex_lock(&syslog_mutex);
(void)close(data->log_file);
data->log_file = -1;
- data->connected = 0;
+ data->log_connected = 0;
data->log_tag = NULL;
if (data == &sdata)
mutex_unlock(&syslog_mutex);