summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2012-06-01 01:06:10 +0200
committerLennart Poettering <lennart@poettering.net>2012-06-01 17:27:16 +0200
commit0d9243f022d244632b1ab26cfc8b46794b7fc5d6 (patch)
tree043222060732d6087d8ba684884456424a4f7660 /src
parent01cf0ca850dd1c21e1c405a4493fe61d0c28d721 (diff)
journal: support changing the console tty to forward to
Diffstat (limited to 'src')
-rw-r--r--src/journal/journald-gperf.gperf1
-rw-r--r--src/journal/journald.c10
-rw-r--r--src/journal/journald.conf1
-rw-r--r--src/journal/journald.h2
4 files changed, 11 insertions, 3 deletions
diff --git a/src/journal/journald-gperf.gperf b/src/journal/journald-gperf.gperf
index a56f6d966e..9c778fcff0 100644
--- a/src/journal/journald-gperf.gperf
+++ b/src/journal/journald-gperf.gperf
@@ -29,3 +29,4 @@ Journal.ForwardToSyslog, config_parse_bool, 0, offsetof(Server, forward_
Journal.ForwardToKMsg, config_parse_bool, 0, offsetof(Server, forward_to_kmsg)
Journal.ForwardToConsole, config_parse_bool, 0, offsetof(Server, forward_to_console)
Journal.ImportKernel, config_parse_bool, 0, offsetof(Server, import_proc_kmsg)
+Journal.TTYPath, config_parse_path, 0, offsetof(Server, tty_path)
diff --git a/src/journal/journald.c b/src/journal/journald.c
index e0e7cce122..0e27582df3 100644
--- a/src/journal/journald.c
+++ b/src/journal/journald.c
@@ -965,6 +965,7 @@ static void forward_console(Server *s, const char *identifier, const char *messa
char header_pid[16];
int n = 0, fd;
char *ident_buf = NULL;
+ const char *tty;
assert(s);
assert(message);
@@ -992,14 +993,16 @@ static void forward_console(Server *s, const char *identifier, const char *messa
IOVEC_SET_STRING(iovec[n++], message);
IOVEC_SET_STRING(iovec[n++], "\n");
- fd = open_terminal("/dev/console", O_WRONLY|O_NOCTTY|O_CLOEXEC);
+ tty = s->tty_path ? s->tty_path : "/dev/console";
+
+ fd = open_terminal(tty, O_WRONLY|O_NOCTTY|O_CLOEXEC);
if (fd < 0) {
- log_debug("Failed to open /dev/console for logging: %s", strerror(errno));
+ log_debug("Failed to open %s for logging: %s", tty, strerror(errno));
goto finish;
}
if (writev(fd, iovec, n) < 0)
- log_debug("Failed to write to /dev/console for logging: %s", strerror(errno));
+ log_debug("Failed to write to %s for logging: %s", tty, strerror(errno));
close_nointr_nofail(fd);
@@ -2782,6 +2785,7 @@ static void server_done(Server *s) {
journal_rate_limit_free(s->rate_limit);
free(s->buffer);
+ free(s->tty_path);
}
int main(int argc, char *argv[]) {
diff --git a/src/journal/journald.conf b/src/journal/journald.conf
index 95534dc2a9..4331811344 100644
--- a/src/journal/journald.conf
+++ b/src/journal/journald.conf
@@ -23,3 +23,4 @@
#ForwardToKMsg=no
#ForwardToConsole=no
#ImportKernel=yes
+#TTYPath=/dev/console
diff --git a/src/journal/journald.h b/src/journal/journald.h
index 3c69f7ec24..04ebf30017 100644
--- a/src/journal/journald.h
+++ b/src/journal/journald.h
@@ -79,6 +79,8 @@ typedef struct Server {
LIST_HEAD(StdoutStream, stdout_streams);
unsigned n_stdout_streams;
+
+ char *tty_path;
} Server;
/* gperf lookup function */