/* SPDX-License-Identifier: LGPL-2.1+ */
-/***
- This file is part of systemd.
-
- Copyright 2012 Lennart Poettering
-
- elogind is free software; you can redistribute it and/or modify it
- under the terms of the GNU Lesser General Public License as published by
- the Free Software Foundation; either version 2.1 of the License, or
- (at your option) any later version.
-
- elogind is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public License
- along with elogind; If not, see <http://www.gnu.org/licenses/>.
-***/
#include <unistd.h>
#include "fileio.h"
#include "sd-messages.h"
#include "strv.h"
+
+#if 0 /// elogind does this itself. No target table required
const char* manager_target_for_action(HandleAction handle) {
static const char * const target_table[_HANDLE_ACTION_MAX] = {
[HANDLE_POWEROFF] = SPECIAL_POWEROFF_TARGET,
return target_table[handle];
return NULL;
}
+#endif // 0
int manager_handle_action(
Manager *m,
[HANDLE_SUSPEND_THEN_HIBERNATE] = "Suspending, then hibernating...",
};
-#if 0 /// elogind does this itself. No target table required
-#endif // 0
_cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL;
InhibitWhat inhibit_operation;
Inhibitor *offending = NULL;
bool supported;
+#if 0 /// elogind uses its own variant, which can use the handle directly.
const char *target;
+#endif // 0
int r;
assert(m);
supported = can_sleep(m, "hibernate") > 0;
else if (handle == HANDLE_HYBRID_SLEEP)
supported = can_sleep(m, "hybrid-sleep") > 0;
+ else if (handle == HANDLE_SUSPEND_THEN_HIBERNATE)
+ supported = can_sleep(m, "suspend-then-hibernate") > 0;
#endif // 0
else if (handle == HANDLE_KEXEC)
supported = access(KEXEC, X_OK) >= 0;
return -EALREADY;
}
+#if 0 /// elogind uses its own variant, which can use the handle directly.
assert_se(target = manager_target_for_action(handle));
+#endif // 0
inhibit_operation = IN_SET(handle, HANDLE_SUSPEND, HANDLE_HIBERNATE,
HANDLE_HYBRID_SLEEP,