summaryrefslogtreecommitdiff
path: root/src/systemctl/systemctl.c
diff options
context:
space:
mode:
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2014-12-30 18:38:21 -0500
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2014-12-30 18:39:52 -0500
commita39b4bdd10fc15654db37459fe8235a3de1ad817 (patch)
tree946ea345a6aa9cbc12be2ad25500c8656927829a /src/systemctl/systemctl.c
parentcaffa4ef700fdd0eadd6c0b2ef9925611672a1bc (diff)
systemctl: do not repeat hibernate/sleep attempts
If some sleep operation was not possible (e.g. because swap is missing), we would try twice: once through logind, which would result in a clean error: Failed to execute operation: Sleep verb not supported and then second time by starting the appropriate unit directly, which is more messy. If logind tells us that something is not possible (or already in progress), report that to the user and quit. If logind is present and working we should not try to work around it. Loosely based on https://bugs.freedesktop.org/show_bug.cgi?id=87832.
Diffstat (limited to 'src/systemctl/systemctl.c')
-rw-r--r--src/systemctl/systemctl.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c
index a6c7e91f54..9c4b9ed277 100644
--- a/src/systemctl/systemctl.c
+++ b/src/systemctl/systemctl.c
@@ -2966,7 +2966,7 @@ static int start_special(sd_bus *bus, char **args) {
a == ACTION_HIBERNATE ||
a == ACTION_HYBRID_SLEEP)) {
r = reboot_with_logind(bus, a);
- if (r >= 0)
+ if (r >= 0 || IN_SET(r, -ENOTSUP, -EINPROGRESS))
return r;
}