]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
systemctl: when a shutdown is scheduled, always go via logind 1408/head
authorLennart Poettering <lennart@poettering.net>
Tue, 29 Sep 2015 13:09:10 +0000 (15:09 +0200)
committerLennart Poettering <lennart@poettering.net>
Tue, 29 Sep 2015 19:55:53 +0000 (21:55 +0200)
src/systemctl/systemctl.c

index 6b70d80da45aa02f34c209fccbd6151eedf0fcc7..e0a69867d2a3dd898b99ba87778a0e96dabdbef0 100644 (file)
@@ -7524,10 +7524,11 @@ static int halt_main(void) {
         if (r < 0)
                 return r;
 
+        if (arg_when > 0)
+                return logind_schedule_shutdown();
+
         if (geteuid() != 0) {
-                if (arg_when > 0 ||
-                    arg_dry ||
-                    arg_force > 0) {
+                if (arg_dry || arg_force > 0) {
                         log_error("Must be root.");
                         return -EPERM;
                 }
@@ -7535,25 +7536,19 @@ static int halt_main(void) {
                 /* Try logind if we are a normal user and no special
                  * mode applies. Maybe PolicyKit allows us to shutdown
                  * the machine. */
-                if (IN_SET(arg_action,
-                           ACTION_POWEROFF,
-                           ACTION_REBOOT)) {
+                if (IN_SET(arg_action, ACTION_POWEROFF, ACTION_REBOOT)) {
                         r = logind_reboot(arg_action);
                         if (r >= 0)
                                 return r;
                         if (IN_SET(r, -EOPNOTSUPP, -EINPROGRESS))
-                                /* requested operation is not supported or already in progress */
+                                /* requested operation is not
+                                 * supported on the local system or
+                                 * already in progress */
                                 return r;
                         /* on all other errors, try low-level operation */
                 }
         }
 
-        if (arg_when > 0) {
-                r = logind_schedule_shutdown();
-                if (r >= 0)
-                        return r;
-        }
-
         if (!arg_dry && !arg_force)
                 return start_with_fallback();
 
@@ -7573,7 +7568,6 @@ static int halt_main(void) {
                 return 0;
 
         r = halt_now(arg_action);
-
         return log_error_errno(r, "Failed to reboot: %m");
 }