diff options
author | Joachim Nilsson <troglobit@gmail.com> | 2017-10-11 22:04:17 +0200 |
---|---|---|
committer | Joachim Nilsson <troglobit@gmail.com> | 2017-10-11 22:04:17 +0200 |
commit | 8a1015cf3e29ecba09b4d9d211904a0b02a7030e (patch) | |
tree | fbc2fa0c96467be19c321d9da78218b1f2bb7c6e | |
parent | 586f0a7799a7a7627026b67fc4537bdd95d70f0a (diff) | |
download | finit-8a1015cf3e29ecba09b4d9d211904a0b02a7030e.zip finit-8a1015cf3e29ecba09b4d9d211904a0b02a7030e.tar.gz finit-8a1015cf3e29ecba09b4d9d211904a0b02a7030e.tar.bz2 |
API refactor, allow svc_stop_completed() to return the pending svc
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
-rw-r--r-- | src/svc.c | 13 | ||||
-rw-r--r-- | src/svc.h | 2 |
2 files changed, 7 insertions, 8 deletions
@@ -307,20 +307,19 @@ void svc_foreach_type(int types, void (*cb)(svc_t *)) * svc_stop_completed - Have all stopped services been collected? * * Returns: - * 1, if all stopped services have been collected. 0 otherwise. + * %NULL if all stopped services have been collected, otherwise a + * pointer to the first svc_t waiting to be collected. */ -int svc_stop_completed(void) +svc_t *svc_stop_completed(void) { svc_t *svc; for (svc = svc_iterator(1); svc; svc = svc_iterator(0)) { - if (svc->state == SVC_STOPPING_STATE) { - _e("Waiting to collect %s(%d) ...", svc->cmd, svc->pid); - return 0; - } + if (svc->state == SVC_STOPPING_STATE) + return svc; } - return 1; + return NULL; } /** @@ -158,7 +158,7 @@ void svc_foreach (void (*cb)(svc_t *)); void svc_foreach_dynamic (void (*cb)(svc_t *)); void svc_foreach_type (int types, void (*cb)(svc_t *)); -int svc_stop_completed (void); +svc_t *svc_stop_completed (void); void svc_mark_dynamic (void); void svc_check_dirty (svc_t *svc, struct timeval *mtime); |