diff options
Diffstat (limited to 'src/rc-status.c')
-rw-r--r-- | src/rc-status.c | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/src/rc-status.c b/src/rc-status.c index dacbe851..b862a27c 100644 --- a/src/rc-status.c +++ b/src/rc-status.c @@ -35,23 +35,25 @@ static void print_service (char *service) einfo_color_t color = ECOLOR_BAD; if (state & RC_SERVICE_STOPPING) - snprintf (status, sizeof (status), "stopping "); + snprintf (status, sizeof (status), "stopping "); else if (state & RC_SERVICE_STARTING) { snprintf (status, sizeof (status), "starting "); color = ECOLOR_WARN; } else if (state & RC_SERVICE_INACTIVE) { snprintf (status, sizeof (status), "inactive "); color = ECOLOR_WARN; - } else if (state & RC_SERVICE_CRASHED) - snprintf (status, sizeof (status), " crashed "); - else if (state & RC_SERVICE_STARTED) { - snprintf (status, sizeof (status), " started "); - color = ECOLOR_GOOD; + } else if (state & RC_SERVICE_STARTED) { + if (geteuid () == 0 && rc_service_daemons_crashed (service)) + snprintf (status, sizeof (status), " crashed "); + else { + snprintf (status, sizeof (status), " started "); + color = ECOLOR_GOOD; + } } else if (state & RC_SERVICE_SCHEDULED) { snprintf (status, sizeof (status), "scheduled"); color = ECOLOR_WARN; } else - snprintf (status, sizeof (status), " stopped "); + snprintf (status, sizeof (status), " stopped "); ebracket (cols, color, status); } |