Fix init so that checking for terminal devices is delayed until the
authorEric Andersen <andersen@codepoet.org>
Wed, 14 Mar 2001 09:01:11 +0000 (09:01 -0000)
committerEric Andersen <andersen@codepoet.org>
Wed, 14 Mar 2001 09:01:11 +0000 (09:01 -0000)
devices are actually used, thereby allowing devfsd based systems to
work.  This should fix bug #1133
 -Erik

init.c
init/init.c

diff --git a/init.c b/init.c
index a0f15b0ff99764b7f0d6c94021182793a3effbe2..53e9744c52ca93f417dfc11e6f9ed3d016a449ec 100644 (file)
--- a/init.c
+++ b/init.c
@@ -440,6 +440,12 @@ static pid_t run(char *command, char *terminal, int get_enter)
                signal(SIGHUP, SIG_DFL);
 
                if ((fd = device_open(terminal, O_RDWR)) < 0) {
+                       struct stat statBuf;
+                       if (stat(terminal, &statBuf) != 0) {
+                               message(LOG | CONSOLE, "device '%s' does not exist.\n",
+                                               terminal);
+                               exit(1);
+                       }
                        message(LOG | CONSOLE, "Bummer, can't open %s\r\n", terminal);
                        exit(1);
                }
@@ -813,16 +819,8 @@ static void parse_inittab(void)
                while (a->name != 0) {
                        if (strcmp(a->name, action) == 0) {
                                if (*id != '\0') {
-                                       struct stat statBuf;
-
                                        strcpy(tmpConsole, "/dev/");
                                        strncat(tmpConsole, id, 200);
-                                       if (stat(tmpConsole, &statBuf) != 0) {
-                                               message(LOG | CONSOLE,
-                                                               "device '%s' does not exist.  Did you read the directions?\n",
-                                                               tmpConsole);
-                                               break;
-                                       }
                                        id = tmpConsole;
                                }
                                new_initAction(a->action, process, id);
index a0f15b0ff99764b7f0d6c94021182793a3effbe2..53e9744c52ca93f417dfc11e6f9ed3d016a449ec 100644 (file)
@@ -440,6 +440,12 @@ static pid_t run(char *command, char *terminal, int get_enter)
                signal(SIGHUP, SIG_DFL);
 
                if ((fd = device_open(terminal, O_RDWR)) < 0) {
+                       struct stat statBuf;
+                       if (stat(terminal, &statBuf) != 0) {
+                               message(LOG | CONSOLE, "device '%s' does not exist.\n",
+                                               terminal);
+                               exit(1);
+                       }
                        message(LOG | CONSOLE, "Bummer, can't open %s\r\n", terminal);
                        exit(1);
                }
@@ -813,16 +819,8 @@ static void parse_inittab(void)
                while (a->name != 0) {
                        if (strcmp(a->name, action) == 0) {
                                if (*id != '\0') {
-                                       struct stat statBuf;
-
                                        strcpy(tmpConsole, "/dev/");
                                        strncat(tmpConsole, id, 200);
-                                       if (stat(tmpConsole, &statBuf) != 0) {
-                                               message(LOG | CONSOLE,
-                                                               "device '%s' does not exist.  Did you read the directions?\n",
-                                                               tmpConsole);
-                                               break;
-                                       }
                                        id = tmpConsole;
                                }
                                new_initAction(a->action, process, id);