From e3e9ecc13566b8ac9f6f9eb4a1afcfc55c6172d3 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Mon, 5 Mar 2012 23:36:53 +0100 Subject: console-run: Create and settrans /dev/console when not already done. This patch makes sure /libexec/console-run creates and installs /dev/console on the first run without considering it a failure if it didn't exist already. * daemons/console-run.c (TERMINAL_FIRST_TRY): Change node to `/dev/console'. (TERMINAL_SECOND_TRY): Change node to `/tmp/console'. (open_console): Clear FALLBACK when TRY == 1 and the `file_set_translator' call suceeded. --- daemons/console-run.c | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) (limited to 'daemons') diff --git a/daemons/console-run.c b/daemons/console-run.c index 3ab2629a..aaa1159b 100644 --- a/daemons/console-run.c +++ b/daemons/console-run.c @@ -72,17 +72,17 @@ main (int argc, char **argv) } /* Open /dev/console. If it isn't there, or it isn't a terminal, then - create /tmp/console and put the terminal on it. If we get EROFS, - in trying to create /tmp/console then as a last resort, put the - console on /tmp itself. If all fail, we exit. + create /dev/console and put the terminal on it. If we get EROFS, + in trying to create /dev/console then as a last resort, create + /tmp/console. If all fail, we exit. Return nonzero if the vanilla open of /dev/console didn't work. In any case, after the console has been opened, put it on fds 0, 1, 2. */ static int open_console (char **namep) { -#define TERMINAL_FIRST_TRY "/hurd/term\0/tmp/console\0device\0console" -#define TERMINAL_SECOND_TRY "/hurd/term\0/tmp\0device\0console" +#define TERMINAL_FIRST_TRY "/hurd/term\0/dev/console\0device\0console" +#define TERMINAL_SECOND_TRY "/hurd/term\0/tmp/console\0device\0console" mach_port_t term, proc; static char *termname; struct stat st; @@ -183,7 +183,13 @@ open_console (char **namep) if (term != MACH_PORT_NULL) { - error (0, 0, "Using temporary console %s", termname); + if (try == 1) + /* We created /dev/console, started, and installed the + translator on it, so it really isn't a fallback + console. */ + fallback = 0; + else + error (0, 0, "Using temporary console %s", termname); break; } } -- cgit v1.2.3