Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 27 Sep 2011 06:43:51 +0000 (UTC)
From:      Pawel Jakub Dawidek <pjd@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r225773 - head/sbin/hastd
Message-ID:  <201109270643.p8R6hpsv008827@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: pjd
Date: Tue Sep 27 06:43:51 2011
New Revision: 225773
URL: http://svn.freebsd.org/changeset/base/225773

Log:
  Ensure that pjdlog functions don't modify errno.
  
  MFC after:	3 days

Modified:
  head/sbin/hastd/pjdlog.c

Modified: head/sbin/hastd/pjdlog.c
==============================================================================
--- head/sbin/hastd/pjdlog.c	Tue Sep 27 05:30:52 2011	(r225772)
+++ head/sbin/hastd/pjdlog.c	Tue Sep 27 06:43:51 2011	(r225773)
@@ -148,11 +148,14 @@ pjdlog_printf_render_sockaddr(struct __p
 void
 pjdlog_init(int mode)
 {
+	int saved_errno;
 
 	assert(pjdlog_initialized == PJDLOG_NEVER_INITIALIZED ||
 	    pjdlog_initialized == PJDLOG_NOT_INITIALIZED);
 	assert(mode == PJDLOG_MODE_STD || mode == PJDLOG_MODE_SYSLOG);
 
+	saved_errno = errno;
+
 	if (pjdlog_initialized == PJDLOG_NEVER_INITIALIZED) {
 		__use_xprintf = 1;
 		register_printf_render_std("T");
@@ -171,18 +174,25 @@ pjdlog_init(int mode)
 	bzero(pjdlog_prefix, sizeof(pjdlog_prefix));
 
 	pjdlog_initialized = PJDLOG_INITIALIZED;
+
+	errno = saved_errno;
 }
 
 void
 pjdlog_fini(void)
 {
+	int saved_errno;
 
 	assert(pjdlog_initialized == PJDLOG_INITIALIZED);
 
+	saved_errno = errno;
+
 	if (pjdlog_mode == PJDLOG_MODE_SYSLOG)
 		closelog();
 
 	pjdlog_initialized = PJDLOG_NOT_INITIALIZED;
+
+	errno = saved_errno;
 }
 
 /*
@@ -194,6 +204,7 @@ pjdlog_fini(void)
 void
 pjdlog_mode_set(int mode)
 {
+	int saved_errno;
 
 	assert(pjdlog_initialized == PJDLOG_INITIALIZED);
 	assert(mode == PJDLOG_MODE_STD || mode == PJDLOG_MODE_SYSLOG);
@@ -201,12 +212,16 @@ pjdlog_mode_set(int mode)
 	if (pjdlog_mode == mode)
 		return;
 
+	saved_errno = errno;
+
 	if (mode == PJDLOG_MODE_SYSLOG)
 		openlog(NULL, LOG_PID | LOG_NDELAY, LOG_DAEMON);
 	else /* if (mode == PJDLOG_MODE_STD) */
 		closelog();
 
 	pjdlog_mode = mode;
+
+	errno = saved_errno;
 }
 
 /*
@@ -270,11 +285,16 @@ pjdlog_prefix_set(const char *fmt, ...)
 void
 pjdlogv_prefix_set(const char *fmt, va_list ap)
 {
+	int saved_errno;
 
 	assert(pjdlog_initialized == PJDLOG_INITIALIZED);
 	assert(fmt != NULL);
 
+	saved_errno = errno;
+
 	vsnprintf(pjdlog_prefix, sizeof(pjdlog_prefix), fmt, ap);
+
+	errno = saved_errno;
 }
 
 /*
@@ -329,6 +349,7 @@ void
 pjdlogv_common(int loglevel, int debuglevel, int error, const char *fmt,
     va_list ap)
 {
+	int saved_errno;
 
 	assert(pjdlog_initialized == PJDLOG_INITIALIZED);
 	assert(loglevel == LOG_EMERG || loglevel == LOG_ALERT ||
@@ -342,6 +363,8 @@ pjdlogv_common(int loglevel, int debugle
 	if (loglevel == LOG_DEBUG && debuglevel > pjdlog_debug_level)
 		return;
 
+	saved_errno = errno;
+
 	switch (pjdlog_mode) {
 	case PJDLOG_MODE_STD:
 	    {
@@ -398,6 +421,8 @@ pjdlogv_common(int loglevel, int debugle
 	default:
 		assert(!"Invalid mode.");
 	}
+
+	errno = saved_errno;
 }
 
 /*



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201109270643.p8R6hpsv008827>