| --- a/inittab.c |
| +++ b/inittab.c |
| @@ -327,8 +327,8 @@ void procd_inittab(void) |
| |
| r = read(fd, cmdline, sizeof(cmdline) - 1); |
| cmdline[r] = '\0'; |
| - close(fd); |
| - regcomp(&pat_cmdline, "PROD=([0-2])", REG_EXTENDED); |
| + close(fd); |
| + regcomp(&pat_cmdline, "PROD=([0-5])", REG_EXTENDED); |
| if (!regexec(&pat_cmdline, cmdline, 1, cmd_matches, 0)) { |
| cmdline[cmd_matches[0].rm_eo] = '\0'; |
| production_mode = atoi(&cmdline[cmd_matches[0].rm_eo - 1]); |
| --- a/rcS.c |
| +++ b/rcS.c |
| @@ -207,15 +207,26 @@ static int _rc(struct runqueue *q, char |
| } |
| token = strtok(NULL, " "); |
| } while (token != NULL); |
| - if (token == NULL && strstr(gl.gl_pathv[j], "prod_init")) |
| + |
| + if (token == NULL && strstr(gl.gl_pathv[j], "rdp_init")) |
| { |
| - add_initd(q, gl.gl_pathv[j], param); |
| - break; |
| + if (production_mode == 5) { |
| + add_initd(q, gl.gl_pathv[j], param); |
| + break; |
| + } else |
| + continue; |
| + } else if (token == NULL && strstr(gl.gl_pathv[j], "prod_init")) |
| + { |
| + if (production_mode == 1) { |
| + add_initd(q, gl.gl_pathv[j], param); |
| + break; |
| + } else |
| + continue; |
| } else { |
| continue; |
| } |
| } else { |
| - if (strstr(gl.gl_pathv[j], "prod_init")) |
| + if (strstr(gl.gl_pathv[j], "prod_init") || strstr(gl.gl_pathv[j], "rdp_init")) |
| continue; |
| } |
| add_initd(q, gl.gl_pathv[j], param); |