From owner-svn-src-all@FreeBSD.ORG Tue Sep 27 06:43:52 2011 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 0BA791065670; Tue, 27 Sep 2011 06:43:52 +0000 (UTC) (envelope-from pjd@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id D63D28FC15; Tue, 27 Sep 2011 06:43:51 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p8R6hpxa008829; Tue, 27 Sep 2011 06:43:51 GMT (envelope-from pjd@svn.freebsd.org) Received: (from pjd@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p8R6hpsv008827; Tue, 27 Sep 2011 06:43:51 GMT (envelope-from pjd@svn.freebsd.org) Message-Id: <201109270643.p8R6hpsv008827@svn.freebsd.org> From: Pawel Jakub Dawidek Date: Tue, 27 Sep 2011 06:43:51 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r225773 - head/sbin/hastd X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 27 Sep 2011 06:43:52 -0000 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; } /*