]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
systemctl: logind: make logind_schedule_shutdown accept action as param
authorMike Yuan <me@yhndnzj.com>
Sun, 5 Mar 2023 15:11:48 +0000 (23:11 +0800)
committerMike Yuan <me@yhndnzj.com>
Tue, 14 Mar 2023 11:21:11 +0000 (19:21 +0800)
src/systemctl/systemctl-compat-halt.c
src/systemctl/systemctl-logind.c
src/systemctl/systemctl-logind.h

index 8a0e4e62943d85658580542d611ff55dbe454aaf..b9164c27abd4d311f03c42e0dcd3cd39851f376e 100644 (file)
@@ -149,7 +149,7 @@ int halt_main(void) {
         if (arg_force == 0) {
                 /* always try logind first */
                 if (arg_when > 0)
-                        r = logind_schedule_shutdown();
+                        r = logind_schedule_shutdown(arg_action);
                 else {
                         r = logind_check_inhibitors(arg_action);
                         if (r < 0)
index f910fe6675742942483be9424c4574cc5d2b0987..068f54e18b6221b87e6ee7f875af848fa9c758e9 100644 (file)
@@ -291,19 +291,21 @@ int prepare_boot_loader_entry(void) {
 #endif
 }
 
-int logind_schedule_shutdown(void) {
-
+int logind_schedule_shutdown(enum action a) {
 #if ENABLE_LOGIND
         _cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL;
         const char *action;
         sd_bus *bus;
         int r;
 
+        assert(a >= 0);
+        assert(a < _ACTION_MAX);
+
         r = acquire_bus(BUS_FULL, &bus);
         if (r < 0)
                 return r;
 
-        action = action_table[arg_action].verb;
+        action = action_table[a].verb;
         if (!action)
                 return log_error_errno(SYNTHETIC_ERRNO(EINVAL), "Scheduling not supported for this action.");
 
index 925f4559c1b131b5f53c9126d7108b1639260def..516f74952fa30bedc17c013389e41575506dec25 100644 (file)
@@ -10,7 +10,7 @@ int prepare_firmware_setup(void);
 int prepare_boot_loader_menu(void);
 int prepare_boot_loader_entry(void);
 
-int logind_schedule_shutdown(void);
+int logind_schedule_shutdown(enum action a);
 int logind_cancel_shutdown(void);
 int logind_show_shutdown(void);