From 48ed2296c6f7e463d12ff0e0f90e494d27eae239 Mon Sep 17 00:00:00 2001 From: Sven Eden Date: Fri, 28 Sep 2018 19:47:20 +0200 Subject: Prep v239: Add execution of executables in systemshutdowndir --- src/login/elogind-dbus.c | 18 +++++++++++++----- src/login/logind-dbus.c | 2 ++ 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/src/login/elogind-dbus.c b/src/login/elogind-dbus.c index bed528145..f359e1867 100644 --- a/src/login/elogind-dbus.c +++ b/src/login/elogind-dbus.c @@ -19,6 +19,7 @@ #include "elogind-dbus.h" +#include "exec-util.h" #include "process-util.h" #include "sd-messages.h" #include "sleep.h" @@ -74,9 +75,16 @@ static int bus_manager_log_shutdown( } /* elogind specific helper to make HALT and REBOOT possible. */ -static int run_helper(const char *helper) { +static int run_helper(const char *helper, const char *arg_verb) { + char *arguments[3]; + static const char* const dirs[] = { SYSTEM_SHUTDOWN_PATH, NULL }; int r = 0; + arguments[0] = NULL; + arguments[1] = (char*)arg_verb; + arguments[2] = NULL; + execute_directories(dirs, DEFAULT_TIMEOUT_USEC, NULL, NULL, arguments); + r = safe_fork_full(helper, NULL, 0, FORK_RESET_SIGNALS|FORK_REOPEN_LOG, NULL); if (r < 0) @@ -99,13 +107,13 @@ static int shutdown_or_sleep(Manager *m, HandleAction action) { switch (action) { case HANDLE_POWEROFF: - return run_helper(POWEROFF); + return run_helper(POWEROFF, "poweroff"); case HANDLE_REBOOT: - return run_helper(REBOOT); + return run_helper(REBOOT, "reboot"); case HANDLE_HALT: - return run_helper(HALT); + return run_helper(HALT, "halt"); case HANDLE_KEXEC: - return run_helper(KEXEC); + return run_helper(KEXEC, "kexec"); case HANDLE_SUSPEND: return do_sleep(m, "suspend"); case HANDLE_HIBERNATE: diff --git a/src/login/logind-dbus.c b/src/login/logind-dbus.c index 9d7092869..acf50e62e 100644 --- a/src/login/logind-dbus.c +++ b/src/login/logind-dbus.c @@ -2440,7 +2440,9 @@ static int method_can_shutdown_or_sleep( action, result); } +#if 0 /// UNNEEDED by elogind finish: +#endif // 0 return sd_bus_reply_method_return(message, "s", result); } -- cgit v1.2.3