X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=main.c;h=b4fbdb58f5243027eef64ad5f5868b3ead27706c;hb=70123e68a04016efca9266fc22dd05a0a7fd2d51;hp=fb5ba6aef25e187a4649a0c63c93cfb39572d997;hpb=e965d56dacf6f46fb491fd249d129b9a96fd987e;p=elogind.git diff --git a/main.c b/main.c index fb5ba6aef..b4fbdb58f 100644 --- a/main.c +++ b/main.c @@ -70,7 +70,7 @@ static int parse_proc_cmdline_word(const char *word) { }; if (startswith(word, "systemd.default=")) - return set_default_unit(word + 15); + return set_default_unit(word + 16); else if (startswith(word, "systemd.log_target=")) { @@ -212,11 +212,6 @@ static int parse_argv(int argc, char *argv[]) { return -EINVAL; } - if (optind < argc) { - log_error("Too many arguments."); - return -EINVAL; - } - return 0; } @@ -227,7 +222,7 @@ static int help(void) { " --default=UNIT Set default unit\n" " --log-level=LEVEL Set log level\n" " --log-target=TARGET Set log target (console, syslog, kmsg)\n" - " --running-as=AS Set running as (init, system, sesstion)\n" + " --running-as=AS Set running as (init, system, session)\n" " --test Determine startup sequence, dump it and exit\n", __progname); @@ -252,7 +247,8 @@ int main(int argc, char *argv[]) { /* Mount /proc, /sys and friends, so that /proc/cmdline and * /proc/$PID/fd is available. */ - mount_setup(); + if (mount_setup() < 0) + goto finish; /* Reset all signal handlers. */ assert_se(reset_all_signal_handlers() == 0); @@ -276,6 +272,9 @@ int main(int argc, char *argv[]) { assert_se(action == ACTION_RUN || action == ACTION_TEST); + /* Set up PATH unless it is already set */ + setenv("PATH", "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin", false); + /* Move out of the way, so that we won't block unmounts */ assert_se(chdir("/") == 0); @@ -308,7 +307,12 @@ int main(int argc, char *argv[]) { if ((r = manager_load_unit(m, default_unit, &target)) < 0) { log_error("Failed to load default target: %s", strerror(-r)); - goto finish; + + log_info("Trying to load rescue target..."); + if ((r = manager_load_unit(m, SPECIAL_RESCUE_TARGET, &target)) < 0) { + log_error("Failed to load rescue target: %s", strerror(-r)); + goto finish; + } } if (action == ACTION_TEST) {