From: Lennart Poettering Date: Sat, 24 Jul 2010 00:33:38 +0000 (+0200) Subject: telinit: forward to upstart, if not booted with systemd X-Git-Tag: v4^0 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=d5ca5f11857e87524f0b75a0959a74404f707f1a;p=thirdparty%2Fsystemd.git telinit: forward to upstart, if not booted with systemd --- diff --git a/src/systemctl.c b/src/systemctl.c index d6b1fcd5810..1640a60a709 100644 --- a/src/systemctl.c +++ b/src/systemctl.c @@ -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);