#include "bus-error.h"
#include "bus-util.h"
#include "logind-action.h"
+#include "formats-util.h"
+#include "process-util.h"
+#include "terminal-util.h"
int manager_handle_action(
Manager *m,
return r;
}
-static int do_sleep(const char *arg_verb) {
- _cleanup_strv_free_ char **modes = NULL, **states = NULL;
+static int do_sleep(const char *arg_verb, const char **modes, const char **states) {
char *arguments[] = {
NULL,
(char*) "pre",
int r;
_cleanup_fclose_ FILE *f = NULL;
- r = parse_sleep_config(arg_verb, &modes, &states);
- if (r < 0)
- return r;
-
/* This file is opened first, so that if we hit an error,
* we can abort before modifying any state. */
f = fopen("/sys/power/state", "we");
return r;
}
-int shutdown_or_sleep(HandleAction action) {
+int shutdown_or_sleep(Manager *m, HandleAction action) {
switch (action) {
case HANDLE_POWEROFF:
return run_helper(HALT);
case HANDLE_KEXEC:
return run_helper(KEXEC);
case HANDLE_SUSPEND:
- return do_sleep("suspend");
+ return do_sleep("suspend", m->suspend_mode, m->suspend_state);
case HANDLE_HIBERNATE:
- return do_sleep("hibernate");
+ return do_sleep("hibernate", m->hibernate_mode, m->hibernate_state);
case HANDLE_HYBRID_SLEEP:
- return do_sleep("hybrid-sleep");
+ return do_sleep("hybrid-sleep", m->hybrid_sleep_mode, m->hybrid_sleep_state);
default:
return -EINVAL;
}