aboutsummaryrefslogtreecommitdiff
path: root/src/rc-status.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/rc-status.c')
-rw-r--r--src/rc-status.c16
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);
}