about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/misc/syslog.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/misc/syslog.c b/src/misc/syslog.c
index 57f1d75c..eb782984 100644
--- a/src/misc/syslog.c
+++ b/src/misc/syslog.c
@@ -80,6 +80,7 @@ static void _vsyslog(int priority, const char *message, va_list ap)
 	int errno_save = errno;
 	int pid;
 	int l, l2;
+	int hlen;
 
 	if (log_fd < 0) {
 		__openlog();
@@ -93,8 +94,8 @@ static void _vsyslog(int priority, const char *message, va_list ap)
 	strftime(timebuf, sizeof timebuf, "%b %e %T", &tm);
 
 	pid = (log_opt & LOG_PID) ? getpid() : 0;
-	l = snprintf(buf, sizeof buf, "<%d>%s %s%s%.0d%s: ",
-		priority, timebuf, log_ident, "["+!pid, pid, "]"+!pid);
+	l = snprintf(buf, sizeof buf, "<%d>%s %n%s%s%.0d%s: ",
+		priority, timebuf, &hlen, log_ident, "["+!pid, pid, "]"+!pid);
 	errno = errno_save;
 	l2 = vsnprintf(buf+l, sizeof buf - l, message, ap);
 	if (l2 >= 0) {
@@ -102,6 +103,7 @@ static void _vsyslog(int priority, const char *message, va_list ap)
 		else l += l2;
 		if (buf[l-1] != '\n') buf[l++] = '\n';
 		send(log_fd, buf, l, 0);
+		if (log_opt & LOG_PERROR) dprintf(2, "%.*s", l-hlen, buf+hlen);
 	}
 }