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);

Reply via email to