summaryrefslogtreecommitdiffstats
path: root/usr.sbin/syslogd/syslogd.c
diff options
context:
space:
mode:
Diffstat (limited to 'usr.sbin/syslogd/syslogd.c')
-rw-r--r--usr.sbin/syslogd/syslogd.c14
1 files changed, 8 insertions, 6 deletions
diff --git a/usr.sbin/syslogd/syslogd.c b/usr.sbin/syslogd/syslogd.c
index 47cebbd2645..2716b4455d0 100644
--- a/usr.sbin/syslogd/syslogd.c
+++ b/usr.sbin/syslogd/syslogd.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: syslogd.c,v 1.247 2017/09/17 22:25:21 bluhm Exp $ */
+/* $OpenBSD: syslogd.c,v 1.248 2017/09/17 23:49:14 bluhm Exp $ */
/*
* Copyright (c) 1983, 1988, 1993, 1994
@@ -483,6 +483,10 @@ main(int argc, char *argv[])
consfile.f_type = F_CONSOLE;
(void)strlcpy(consfile.f_un.f_fname, ctty,
sizeof(consfile.f_un.f_fname));
+ consfile.f_file = open(consfile.f_un.f_fname, O_WRONLY|O_NONBLOCK, 0);
+ if (consfile.f_file == -1)
+ log_warn("open %s", consfile.f_un.f_fname);
+
(void)gethostname(LocalHostName, sizeof(LocalHostName));
if ((p = strchr(LocalHostName, '.')) != NULL) {
*p++ = '\0';
@@ -1780,16 +1784,14 @@ logline(int pri, int flags, char *from, char *msg)
/* log the message to the particular outputs */
if (!Initialized) {
f = &consfile;
- f->f_file = priv_open_tty(ctty);
-
- if (f->f_file >= 0) {
+ if (f->f_type == F_CONSOLE) {
strlcpy(f->f_lasttime, timestamp,
sizeof(f->f_lasttime));
strlcpy(f->f_prevhost, from,
sizeof(f->f_prevhost));
fprintlog(f, flags, msg);
- (void)close(f->f_file);
- f->f_file = -1;
+ /* May be set to F_UNUSED, try again next time. */
+ f->f_type = F_CONSOLE;
}
return;
}