提交 781f26bc 编写于 作者: R Rich Felker

implement the LOG_CONS option in syslog

this was previously a no-op, somewhat intentionally, because I failed
to understand that it only has an effect when sending to the logging
facility fails and thus is not the nuisance that it would be if always
sent output to the console.
上级 a64a045d
......@@ -8,6 +8,7 @@
#include <string.h>
#include <pthread.h>
#include <errno.h>
#include <fcntl.h>
#include "libc.h"
#include "atomic.h"
......@@ -81,6 +82,7 @@ static void _vsyslog(int priority, const char *message, va_list ap)
int pid;
int l, l2;
int hlen;
int fd;
if (log_fd < 0) __openlog();
......@@ -99,7 +101,13 @@ static void _vsyslog(int priority, const char *message, va_list ap)
if (l2 >= sizeof buf - l) l = sizeof buf - 1;
else l += l2;
if (buf[l-1] != '\n') buf[l++] = '\n';
send(log_fd, buf, l, 0);
if (send(log_fd, buf, l, 0) < 0 && (log_opt & LOG_CONS)) {
fd = open("/dev/console", O_WRONLY|O_NOCTTY|O_CLOEXEC);
if (fd >= 0) {
dprintf(fd, "%.*s", l-hlen, buf+hlen);
close(fd);
}
}
if (log_opt & LOG_PERROR) dprintf(2, "%.*s", l-hlen, buf+hlen);
}
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册