Blob Blame History Raw
From c10c2bb95f68b085bfb70bd2ec5cd17411b18d8c Mon Sep 17 00:00:00 2001
From: Kay Sievers <kay@vrfy.org>
Date: Tue, 22 May 2012 19:11:10 +0200
Subject: [PATCH] main: only fall back to /bin/sh in case /sbin/init does not
 exist (cherry picked from commit
 745e2fb79ab20f3e98310d5e889a161ffe8b492c)

---
 src/core/main.c |   13 ++++++++-----
 1 file changed, 8 insertions(+), 5 deletions(-)

diff --git a/src/core/main.c b/src/core/main.c
index 6931627..f1b2b28 100644
--- a/src/core/main.c
+++ b/src/core/main.c
@@ -1755,12 +1755,15 @@ finish:
                 args[0] = "/sbin/init";
                 execv(args[0], (char* const*) args);
 
-                log_warning("Failed to execute /sbin/init, trying fallback: %m");
+                if (errno == ENOENT) {
+                        log_warning("No /sbin/init, trying fallback");
 
-                args[0] = "/bin/sh";
-                args[1] = NULL;
-                execv(args[0], (char* const*) args);
-                log_error("Failed to execute /bin/sh, giving up: %m");
+                        args[0] = "/bin/sh";
+                        args[1] = NULL;
+                        execv(args[0], (char* const*) args);
+                        log_error("Failed to execute /bin/sh, giving up: %m");
+                } else
+                        log_warning("Failed to execute /sbin/init, giving up: %m");
         }
 
         if (serialization)