From 1d61ddf16b2140b9ce474a2231f187b65ce4b401 Mon Sep 17 00:00:00 2001 From: Patrick Gaskin Date: Tue, 4 Aug 2020 11:36:02 -0400 Subject: [PATCH] Implemented power:sleep action (closes #69) --- res/doc | 1 + src/action_cc.cc | 10 +++++++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/res/doc b/res/doc index 2b3a236..2ce6c60 100644 --- a/res/doc +++ b/res/doc @@ -100,6 +100,7 @@ # power - one of: # shutdown (4.13.12638+) # reboot (4.13.12638+) +# sleep (4.13.12638+) # skip - the number of actions to skip, or -1 to skip all remaining ones (i.e. end the chain) # # chain_success:: diff --git a/src/action_cc.cc b/src/action_cc.cc index be8ef29..f5117b7 100644 --- a/src/action_cc.cc +++ b/src/action_cc.cc @@ -459,7 +459,7 @@ NM_ACTION_(nickel_misc) { } NM_ACTION_(power) { - if (!strcmp(arg, "shutdown") || !strcmp(arg, "reboot")) { + if (!strcmp(arg, "shutdown") || !strcmp(arg, "reboot") || !strcmp(arg, "sleep")) { //libnickel 4.13.12638 * _ZN22N3PowerWorkflowManager14sharedInstanceEv N3PowerWorkflowManager *(*N3PowerWorkflowManager_sharedInstance)(); reinterpret_cast(N3PowerWorkflowManager_sharedInstance) = dlsym(RTLD_DEFAULT, "_ZN22N3PowerWorkflowManager14sharedInstanceEv"); @@ -484,6 +484,14 @@ NM_ACTION_(power) { N3PowerWorkflowManager_reboot(pwm); return nm_action_result_toast("Rebooting..."); + } else if (!strcmp(arg, "sleep")) { + //libnickel 4.13.12638 * _ZN22N3PowerWorkflowManager12requestSleepEv + void (*N3PowerWorkflowManager_requestSleep)(N3PowerWorkflowManager*); + reinterpret_cast(N3PowerWorkflowManager_requestSleep) = dlsym(RTLD_DEFAULT, "_ZN22N3PowerWorkflowManager12requestSleepEv"); + NM_CHECK(nullptr, N3PowerWorkflowManager_requestSleep, "could not dlsym N3PowerWorkflowManager::requestSleep"); + + N3PowerWorkflowManager_requestSleep(pwm); + return nm_action_result_silent(); } } else { NM_ERR_RET(nullptr, "unknown power action '%s'", arg);