diff options
author | Lennart Poettering <lennart@poettering.net> | 2011-03-08 01:44:19 +0100 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2011-03-08 01:53:47 +0100 |
commit | d68201e9aa5e9ebd6085b1bb8892c42e9d20be75 (patch) | |
tree | f6d4a0193e7d9fcf78f7df35a022ada939f1ca60 /src | |
parent | 81253930180bac6b6fb372a9c7bea724bd795c86 (diff) |
job: introduce new job result code 'skipped' to use when pre conditions of job did not apply
https://bugzilla.redhat.com/show_bug.cgi?id=682245
https://bugzilla.redhat.com/show_bug.cgi?id=635780
Diffstat (limited to 'src')
-rw-r--r-- | src/job.c | 5 | ||||
-rw-r--r-- | src/job.h | 1 | ||||
-rw-r--r-- | src/systemctl.c | 8 |
3 files changed, 11 insertions, 3 deletions
@@ -465,6 +465,8 @@ int job_run_and_invalidate(Job *j) { if ((j = manager_get_job(m, id))) { if (r == -EALREADY) r = job_finish_and_invalidate(j, JOB_DONE); + else if (r == -ENOEXEC) + r = job_finish_and_invalidate(j, JOB_SKIPPED); else if (r == -EAGAIN) j->state = JOB_WAITING; else if (r < 0) @@ -702,7 +704,8 @@ static const char* const job_result_table[_JOB_RESULT_MAX] = { [JOB_CANCELED] = "canceled", [JOB_TIMEOUT] = "timeout", [JOB_FAILED] = "failed", - [JOB_DEPENDENCY] = "dependency" + [JOB_DEPENDENCY] = "dependency", + [JOB_SKIPPED] = "skipped" }; DEFINE_STRING_TABLE_LOOKUP(job_result, JobResult); @@ -78,6 +78,7 @@ enum JobResult { JOB_TIMEOUT, JOB_FAILED, JOB_DEPENDENCY, + JOB_SKIPPED, _JOB_RESULT_MAX, _JOB_RESULT_INVALID = -1 }; diff --git a/src/systemctl.c b/src/systemctl.c index 6adcbcc066..f5a87fc701 100644 --- a/src/systemctl.c +++ b/src/systemctl.c @@ -1249,7 +1249,7 @@ 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 if (!streq(d.result, "done")) + else if (!streq(d.result, "done") && !streq(d.result, "skipped")) log_error("Job failed. See system logs and 'systemctl status' for details."); } @@ -1257,7 +1257,7 @@ static int wait_for_jobs(DBusConnection *bus, Set *s) { r = -ETIME; else if (streq_ptr(d.result, "canceled")) r = -ECANCELED; - else if (!streq_ptr(d.result, "done")) + else if (!streq_ptr(d.result, "done") && !streq_ptr(d.result, "skipped")) r = -EIO; else r = 0; @@ -1417,11 +1417,15 @@ static int start_unit(DBusConnection *bus, char **args, unsigned n) { streq(args[0], "stop") ? "StopUnit" : streq(args[0], "reload") ? "ReloadUnit" : streq(args[0], "restart") ? "RestartUnit" : + streq(args[0], "try-restart") || streq(args[0], "condrestart") ? "TryRestartUnit" : + streq(args[0], "reload-or-restart") ? "ReloadOrRestartUnit" : + streq(args[0], "reload-or-try-restart") || streq(args[0], "condreload") || + streq(args[0], "force-reload") ? "ReloadOrTryRestartUnit" : "StartUnit"; |