From: Lennart Poettering Date: Thu, 24 Feb 2011 02:24:51 +0000 (+0100) Subject: systemctl: properly handle job results X-Git-Tag: v19~15 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=commitdiff_plain;h=8e20e31a65ec9e637abf3821087946e9160001ac systemctl: properly handle job results --- diff --git a/src/systemctl.c b/src/systemctl.c index 82741bc6e..b33a89f63 100644 --- a/src/systemctl.c +++ b/src/systemctl.c @@ -1248,11 +1248,19 @@ static int wait_for_jobs(DBusConnection *bus, Set *s) { log_error("Job canceled."); else if (streq(d.result, "dependency")) log_error("A dependency job failed. See system logs for details."); - else + else if (!streq(d.result, "done")) log_error("Job failed. See system logs and 'systemctl status' for details."); } - r = d.result ? -EIO : 0; + if (streq_ptr(d.result, "timeout")) + r = -ETIME; + else if (streq_ptr(d.result, "canceled")) + r = -ECANCELED; + else if (!streq_ptr(d.result, "done")) + r = -EIO; + else + r = 0; + free(d.result); finish: