X-Git-Url: https://git.archive.openwrt.org/?p=project%2Fprocd.git;a=blobdiff_plain;f=inittab.c;h=c8540b199e2a8906c970ccad13a6e6bb25799ea4;hp=686d3891655fc01c7314b07083482abf06fb60e9;hb=f45672d80bf2fec4ccb7363de1da6adb9e3f4421;hpb=3018420f7fd004b48715100d2f60b27c64d48b75 diff --git a/inittab.c b/inittab.c index 686d389..c8540b1 100644 --- a/inittab.c +++ b/inittab.c @@ -20,6 +20,7 @@ #include #include #include +#include #include #include @@ -72,7 +73,7 @@ static void fork_worker(struct init_action *a) } if (a->proc.pid > 0) { - DEBUG(2, "Launched new %s action, pid=%d\n", + DEBUG(4, "Launched new %s action, pid=%d\n", a->handler->name, (int) a->proc.pid); uloop_process_add(&a->proc); @@ -83,7 +84,7 @@ static void child_exit(struct uloop_process *proc, int ret) { struct init_action *a = container_of(proc, struct init_action, proc); - DEBUG(2, "pid:%d\n", proc->pid); + DEBUG(4, "pid:%d\n", proc->pid); uloop_timeout_set(&a->tout, a->respawn); } @@ -116,7 +117,7 @@ static void askfirst(struct init_action *a) i = stat(a->id, &s); chdir("/"); if (i || (console && !strcmp(console, a->id))) { - DEBUG(2, "Skipping %s\n", a->id); + DEBUG(4, "Skipping %s\n", a->id); return; } @@ -139,7 +140,7 @@ static void askconsole(struct init_action *a) regex_t pat_cmdline; regmatch_t matches[2]; - if (!fd) + if (fd < 0) return; r = read(fd, line, sizeof(line) - 1); @@ -156,7 +157,7 @@ static void askconsole(struct init_action *a) i = stat(tty, &s); chdir("/"); if (i) { - DEBUG(2, "skipping %s\n", tty); + DEBUG(4, "skipping %s\n", tty); goto err_out; } console = strdup(tty); @@ -249,7 +250,7 @@ void procd_inittab(void) return; } - regcomp(&pat_inittab, "([a-zA-Z0-9]*):([a-zA-Z0-9]*):([a-zA-Z0-9]*):([a-zA-Z0-9/[.-.]. ]*)", REG_EXTENDED); + regcomp(&pat_inittab, "([a-zA-Z0-9]*):([a-zA-Z0-9]*):([a-zA-Z0-9]*):(.*)", REG_EXTENDED); line = malloc(LINE_LEN); a = malloc(sizeof(struct init_action)); memset(a, 0, sizeof(struct init_action)); @@ -258,6 +259,11 @@ void procd_inittab(void) char *tags[TAG_PROCESS + 1]; char *tok; int i; + int len = strlen(line); + + while (isspace(line[len - 1])) + len--; + line[len] = 0; if (*line == '#') continue; @@ -265,7 +271,7 @@ void procd_inittab(void) if (regexec(&pat_inittab, line, 5, matches, 0)) continue; - DEBUG(2, "Parsing inittab - %s", line); + DEBUG(4, "Parsing inittab - %s", line); for (i = TAG_ID; i <= TAG_PROCESS; i++) { line[matches[i].rm_eo] = '\0'; @@ -273,7 +279,7 @@ void procd_inittab(void) }; tok = strtok(tags[TAG_PROCESS], " "); - for (i = 0; i < (MAX_ARGS - i - 1) && tok; i++) { + for (i = 0; i < (MAX_ARGS - 1) && tok; i++) { a->argv[i] = tok; tok = strtok(NULL, " "); }