From: Daniel Mack Date: Wed, 9 Sep 2015 15:10:49 +0000 (+0200) Subject: systemctl: add dry-run support for scheduled shutdowns X-Git-Tag: v227~154^2 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=refs%2Fpull%2F1220%2Fhead;p=thirdparty%2Fsystemd.git systemctl: add dry-run support for scheduled shutdowns Prefix the action parameter with "dry-" in case the --dry-run command line switch was passed. --- diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c index a82b9b83a23..74d7fc2b3bf 100644 --- a/src/systemctl/systemctl.c +++ b/src/systemctl/systemctl.c @@ -7358,7 +7358,6 @@ static int halt_main(sd_bus *bus) { * the machine. */ if (arg_when <= 0 && - !arg_dry && arg_force <= 0 && (arg_action == ACTION_POWEROFF || arg_action == ACTION_REBOOT)) { @@ -7375,6 +7374,7 @@ static int halt_main(sd_bus *bus) { _cleanup_bus_error_free_ sd_bus_error error = SD_BUS_ERROR_NULL; _cleanup_bus_flush_close_unref_ sd_bus *b = NULL; _cleanup_free_ char *m = NULL; + const char *action; if (avoid_bus()) { log_error("Unable to perform operation without bus connection."); @@ -7407,6 +7407,24 @@ static int halt_main(sd_bus *bus) { sd_bus_error_free(&error); } + switch (arg_action) { + case ACTION_HALT: + action = "halt"; + break; + case ACTION_POWEROFF: + action = "poweroff"; + break; + case ACTION_KEXEC: + action = "kexec"; + break; + default: + action = "reboot"; + break; + } + + if (arg_dry) + action = strjoina("dry-", action); + r = sd_bus_call_method( b, "org.freedesktop.login1", @@ -7416,10 +7434,7 @@ static int halt_main(sd_bus *bus) { &error, NULL, "st", - arg_action == ACTION_HALT ? "halt" : - arg_action == ACTION_POWEROFF ? "poweroff" : - arg_action == ACTION_KEXEC ? "kexec" : - "reboot", + action, arg_when); if (r < 0) log_warning_errno(r, "Failed to call ScheduleShutdown in logind, proceeding with immediate shutdown: %s",