X-Git-Url: http://git.archive.openwrt.org/?p=project%2Fprocd.git;a=blobdiff_plain;f=inittab.c;h=c8540b199e2a8906c970ccad13a6e6bb25799ea4;hp=e935ecee36a112eef770d39f31a27275910677e3;hb=2c8176385a4f62b536303912ba508b9dc7931fad;hpb=916f95cb58604038695347ee41a430d8ca1f0556 diff --git a/inittab.c b/inittab.c index e935ece..c8540b1 100644 --- a/inittab.c +++ b/inittab.c @@ -20,6 +20,7 @@ #include #include #include +#include #include #include @@ -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; @@ -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, " "); }