chiark / gitweb /
service/socket: show main/control pids in dump
[elogind.git] / main.c
diff --git a/main.c b/main.c
index 397e868e97461e37871b74d5b8391bd0d624848b..b4fbdb58f5243027eef64ad5f5868b3ead27706c 100644 (file)
--- 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=")) {
 
@@ -272,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);
 
@@ -304,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) {