Hiroshi Ito writes:
authorEric Andersen <andersen@codepoet.org>
Fri, 8 Oct 2004 08:17:39 +0000 (08:17 -0000)
committerEric Andersen <andersen@codepoet.org>
Fri, 8 Oct 2004 08:17:39 +0000 (08:17 -0000)
"kill -HUP 1" reloads inittab, and when I append one line to inittab
and send HUP signal two times, It will starts 2 process.

patch against current CVS is attached.

init/init.c

index 2278e521f81b5b5d46dc0c48e3b2fe2a95b4fe6b..8a63ff350e4b72afedacd8272644d346672ac5bb 100644 (file)
@@ -846,7 +846,7 @@ static void cont_handler(int sig)
 
 static void new_init_action(int action, const char *command, const char *cons)
 {
-       struct init_action *new_action, *a;
+       struct init_action *new_action, *a, *last;
 
        if (*cons == '\0')
                cons = console;
@@ -864,16 +864,17 @@ static void new_init_action(int action, const char *command, const char *cons)
        }
 
        /* Append to the end of the list */
-       for (a = init_action_list; a && a->next; a = a->next) {
+       for (a = last = init_action_list; a; a = a->next) {
                /* don't enter action if it's already in the list */
                if ((strcmp(a->command, command) == 0) &&
                    (strcmp(a->terminal, cons) ==0)) {
                        free(new_action);
                        return;
                }
+               last = a;
        }
-       if (a) {
-               a->next = new_action;
+       if (last) {
+               last->next = new_action;
        } else {
                init_action_list = new_action;
        }