diff --git a/service.c b/service.c index af013b3a..7c4dba90 100644 --- a/service.c +++ b/service.c @@ -787,15 +787,15 @@ void service_step(svc_t *svc) svc_cmd_t enabled; svc_state_t old_state; cond_state_t cond; - char *old_status = NULL; int err; restart: old_state = *state; enabled = service_enabled(svc); - if (debug) - old_status = strdup(svc_status(svc)); + _d("%20s(%4d): %8s %3sabled/%-7s cond:%-4s", svc->cmd, svc->pid, + svc_status(svc), enabled? "en" : "dis", svc_dirtystr(svc), + condstr(cond_get_agg(svc->cond))); switch(*state) { case SVC_HALTED_STATE: @@ -937,11 +937,7 @@ restart: } if (*state != old_state) { - if (debug) { - _d("%-20.20s %s -> %s", svc->cmd, - old_status, svc_status(svc)); - free(old_status); - } + _d("%20s(%4d): -> %8s", svc->cmd, svc->pid, svc_status(svc)); goto restart; } } diff --git a/svc.c b/svc.c index 02a1ad0c..bf33393d 100644 --- a/svc.c +++ b/svc.c @@ -434,6 +434,18 @@ char *svc_status(svc_t *svc) } } +const char *svc_dirtystr(svc_t *svc) +{ + if (svc_is_removed(svc)) + return "removed"; + else if (svc_is_updated(svc)) + return "updated"; + else if (svc_is_changed(svc)) + return "UNKNOWN"; + else + return "clean"; +} + /* Same base service, return unique ID */ int svc_next_id(char *cmd) { diff --git a/svc.h b/svc.h index 96c19358..be45c255 100644 --- a/svc.h +++ b/svc.h @@ -167,6 +167,7 @@ static inline int svc_is_dynamic(svc_t *svc) { return svc && 0 != svc->mtime; } static inline int svc_is_removed(svc_t *svc) { return svc && -1 == svc->dirty; } static inline int svc_is_changed(svc_t *svc) { return svc && 0 != svc->dirty; } static inline int svc_is_updated(svc_t *svc) { return svc && 1 == svc->dirty; } +const char *svc_dirtystr (svc_t *svc); static inline int svc_is_inetd (svc_t *svc) { return svc && SVC_TYPE_INETD == svc->type; } static inline int svc_is_daemon (svc_t *svc) { return svc && SVC_TYPE_SERVICE == svc->type; }