Allow rc_runlevel/softlevel to set runlevel from kernel commandline.
This commit is contained in:
parent
9e5e60f257
commit
803dbbf0c8
25
src/rc/rc.c
25
src/rc/rc.c
@ -893,8 +893,8 @@ main(int argc, char **argv)
|
||||
} else {
|
||||
/* We should not use krunevel in sysinit or the boot runlevel */
|
||||
if (!newlevel ||
|
||||
strcmp(newlevel, RC_LEVEL_SYSINIT) != 0 ||
|
||||
strcmp(newlevel, getenv("RC_BOOTLEVEL")) != 0)
|
||||
(strcmp(newlevel, RC_LEVEL_SYSINIT) != 0 &&
|
||||
strcmp(newlevel, getenv("RC_BOOTLEVEL")) != 0))
|
||||
{
|
||||
if (get_krunlevel(krunlevel, sizeof(krunlevel))) {
|
||||
newlevel = krunlevel;
|
||||
@ -902,10 +902,24 @@ main(int argc, char **argv)
|
||||
}
|
||||
}
|
||||
|
||||
if (newlevel &&
|
||||
strcmp(runlevel, newlevel) != 0 &&
|
||||
if (newlevel) {
|
||||
if (strcmp(runlevel, newlevel) != 0 &&
|
||||
!rc_runlevel_exists(newlevel))
|
||||
eerrorx("%s: is not a valid runlevel", newlevel);
|
||||
eerrorx("%s: not a valid runlevel", newlevel);
|
||||
|
||||
#ifdef __linux__
|
||||
if (strcmp(newlevel, RC_LEVEL_SYSINIT) == 0) {
|
||||
/* If we requested a runlevel, save it now */
|
||||
p = proc_getent("rc_runlevel");
|
||||
if (p == NULL)
|
||||
p = proc_getent("softlevel");
|
||||
if (p != NULL) {
|
||||
set_krunlevel(p);
|
||||
free(p);
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
if (going_down) {
|
||||
@ -1075,6 +1089,7 @@ main(int argc, char **argv)
|
||||
rc_service_mark(token, RC_SERVICE_STOPPED);
|
||||
free(proc);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
rc_plugin_run(RC_HOOK_RUNLEVEL_START_OUT, runlevel);
|
||||
|
Loading…
Reference in New Issue
Block a user