telinit: forward to upstart, if not booted with systemd

This commit is contained in:
Lennart Poettering
2010-07-24 02:33:38 +02:00
parent ec7f7f2006
commit d5ca5f1185
+16 -2
View File
@@ -4209,8 +4209,22 @@ static int parse_argv(int argc, char *argv[]) {
arg_action = ACTION_POWEROFF;
return shutdown_parse_argv(argc, argv);
} else if (strstr(program_invocation_short_name, "init")) {
arg_action = ACTION_INVALID;
return telinit_parse_argv(argc, argv);
if (sd_booted() > 0) {
arg_action = ACTION_INVALID;
return telinit_parse_argv(argc, argv);
} else {
/* Hmm, so some other init system is
* running, we need to forward this
* request to it. For now we simply
* guess that it is Upstart. */
execv("/lib/upstart/telinit", argv);
log_error("Couldn't find an alternative telinit implementation to spawn.");
return -EIO;
}
} else if (strstr(program_invocation_short_name, "runlevel")) {
arg_action = ACTION_RUNLEVEL;
return runlevel_parse_argv(argc, argv);