From d5ca5f11857e87524f0b75a0959a74404f707f1a Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Sat, 24 Jul 2010 02:33:38 +0200 Subject: telinit: forward to upstart, if not booted with systemd --- src/systemctl.c | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/src/systemctl.c b/src/systemctl.c index d6b1fcd581..1640a60a70 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); -- cgit v1.2.3-54-g00ecf