diff options
| -rw-r--r-- | src/misc/syslog.c | 10 | 
1 files changed, 9 insertions, 1 deletions
| diff --git a/src/misc/syslog.c b/src/misc/syslog.c index 6d2a864a..fdf90ba9 100644 --- a/src/misc/syslog.c +++ b/src/misc/syslog.c @@ -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);  	}  } | 
