summary refs log tree commit diff
path: root/misc/syslog.c
diff options
context:
space:
mode:
Diffstat (limited to 'misc/syslog.c')
-rw-r--r--misc/syslog.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/misc/syslog.c b/misc/syslog.c
index a2becb43e7..daa8b77efa 100644
--- a/misc/syslog.c
+++ b/misc/syslog.c
@@ -123,6 +123,7 @@ vsyslog(pri, fmt, ap)
  	struct sigaction action, oldaction;
 	struct sigaction *oldaction_ptr = NULL;
  	int sigpipe;
+	int saved_errno = errno;
 
 #define	INTERNALLOG	LOG_ERR|LOG_CONS|LOG_PERROR|LOG_PID
 	/* Check for invalid bits. */
@@ -133,7 +134,7 @@ vsyslog(pri, fmt, ap)
 	}
 
 	/* Check priority against setlogmask values. */
-	if (!LOG_MASK(LOG_PRI(pri)) & LogMask)
+	if ((LOG_MASK (LOG_PRI (pri)) & LogMask) == 0)
 		return;
 
 	/* Set default facility if none specified. */
@@ -163,6 +164,9 @@ vsyslog(pri, fmt, ap)
 	if (LogTag != NULL)
 	  putc_unlocked (':', f), putc_unlocked (' ', f);
 
+	/* Restore errno for %m format.  */
+	__set_errno (saved_errno);
+
 	/* We have the header.  Print the user's format into the buffer.  */
 	vfprintf (f, fmt, ap);