systemctl: don't special case ACTION_RUNLEVEL anymore
authorLennart Poettering <lennart@poettering.net>
Thu, 24 Sep 2015 09:54:15 +0000 (11:54 +0200)
committerLennart Poettering <lennart@poettering.net>
Tue, 29 Sep 2015 19:55:51 +0000 (21:55 +0200)
Let's move its dispatching to the main switch statement.

src/systemctl/systemctl.c

index 4de01d9..fe71d05 100644 (file)
@@ -266,6 +266,11 @@ static void warn_wall(enum action a) {
 
 static bool avoid_bus(void) {
 
+        /* /sbin/runlevel doesn't need to communicate via D-Bus, so
+         * let's shortcut this */
+        if (arg_action == ACTION_RUNLEVEL)
+                return true;
+
         if (running_in_chroot() > 0)
                 return true;
 
@@ -7574,13 +7579,6 @@ int main(int argc, char*argv[]) {
         if (r <= 0)
                 goto finish;
 
-        /* /sbin/runlevel doesn't need to communicate via D-Bus, so
-         * let's shortcut this */
-        if (arg_action == ACTION_RUNLEVEL) {
-                r = runlevel_main();
-                goto finish;
-        }
-
         if (running_in_chroot() > 0 && arg_action != ACTION_SYSTEMCTL) {
                 log_info("Running in chroot, ignoring request.");
                 r = 0;
@@ -7654,6 +7652,9 @@ int main(int argc, char*argv[]) {
         }
 
         case ACTION_RUNLEVEL:
+                r = runlevel_main();
+                break;
+
         case _ACTION_INVALID:
         default:
                 assert_not_reached("Unknown action");