summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichel Stam <m.stam@fugro.nl>2014-11-04 17:40:16 +0100
committerSteven Barth <steven@midlink.org>2014-11-04 19:46:49 +0100
commitdc3ea949544090f91a24b05c5fde0bd9ab87f2ce (patch)
tree1edea63f4289bf2c8ed337875def5a95e076e755
parent44803f0b48e6b0bbc56b1f9f8c2ea9c8e1003302 (diff)
downloadunitd-dc3ea949544090f91a24b05c5fde0bd9ab87f2ce.tar
unitd-dc3ea949544090f91a24b05c5fde0bd9ab87f2ce.zip
procd: Make askconsole work again when no tty is specified in inittab
Consider: ::askconsole:/bin/ash --login askconsole( ) checks for the existance of the tty, but if none is specified it will skip the remainder of the function. This means fork_worker( ) is never called and no process is spawned. This would leave routers without an initial console. Signed-off-by: Michel Stam <m.stam@fugro.nl>
-rw-r--r--inittab.c17
1 files changed, 11 insertions, 6 deletions
diff --git a/inittab.c b/inittab.c
index d7bb35b..be18482 100644
--- a/inittab.c
+++ b/inittab.c
@@ -176,18 +176,23 @@ static void askconsole(struct init_action *a)
split = strchr(tty, ',');
if (split != NULL)
*split = '\0';
- }
- if (!dev_exist(tty)) {
- DEBUG(4, "skipping %s\n", tty);
- return;
+ if (!dev_exist(tty)) {
+ DEBUG(4, "skipping %s\n", tty);
+ return;
+ }
+
+ console = strdup(tty);
+ a->id = strdup(tty);
+ }
+ else {
+ console = NULL;
+ a->id = NULL;
}
- console = strdup(tty);
a->tout.cb = respawn;
for (i = MAX_ARGS - 1; i >= 1; i--)
a->argv[i] = a->argv[i - 1];
- a->id = strdup(tty);
a->argv[0] = ask;
a->respawn = 500;