summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2012-03-05 23:36:53 +0100
committerSamuel Thibault <samuel.thibault@ens-lyon.org>2012-04-08 00:54:24 +0200
commite3e9ecc13566b8ac9f6f9eb4a1afcfc55c6172d3 (patch)
tree95271483e62309cfe9bd696acc4d2358a2460f32
parent747ae893a63eb6d0501a06f8f675eeb0da8ae560 (diff)
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.
-rw-r--r--daemons/console-run.c18
1 files changed, 12 insertions, 6 deletions
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;
}
}