diff --git a/src/initctl.c b/src/initctl.c index d8235ff8..67e0e6a3 100644 --- a/src/initctl.c +++ b/src/initctl.c @@ -791,8 +791,15 @@ static int show_status(char *arg) if (!svc) return 255; - if (quiet) - return svc->state != SVC_RUNNING_STATE; + if (quiet) { + if (svc_is_runtask(svc)) + if (svc->started) + return 0; + else + return 1; + else + return svc->state != SVC_RUNNING_STATE; + } pidfn = svc->pidfile; if (pidfn[0] == '!') diff --git a/src/svc.h b/src/svc.h index 3a670fe4..d6baeb29 100644 --- a/src/svc.h +++ b/src/svc.h @@ -332,7 +332,10 @@ static inline char *svc_status(svc_t *svc) return "unknown"; case SVC_DONE_STATE: - return "done"; + if (svc->started) + return "done"; + else + return "failed"; case SVC_STOPPING_STATE: switch (svc->type) {