diff options
author | Michel Stam <m.stam@fugro.nl> | 2014-11-04 17:40:16 +0100 |
---|---|---|
committer | Steven Barth <steven@midlink.org> | 2014-11-04 19:46:49 +0100 |
commit | dc3ea949544090f91a24b05c5fde0bd9ab87f2ce (patch) | |
tree | 1edea63f4289bf2c8ed337875def5a95e076e755 | |
parent | 44803f0b48e6b0bbc56b1f9f8c2ea9c8e1003302 (diff) | |
download | unitd-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.c | 17 |
1 files changed, 11 insertions, 6 deletions
@@ -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; |