diff options
-rw-r--r-- | src/core/service.c | 2 | ||||
-rw-r--r-- | src/shared/exit-status.c | 7 | ||||
-rw-r--r-- | src/shared/exit-status.h | 1 |
3 files changed, 9 insertions, 1 deletions
diff --git a/src/core/service.c b/src/core/service.c index be88670bd8..0b19767d9e 100644 --- a/src/core/service.c +++ b/src/core/service.c @@ -335,7 +335,7 @@ static int service_verify(Service *s) { return -EINVAL; } - if (s->type == SERVICE_ONESHOT && !(set_isempty(s->restart_force_status.signal) && set_isempty(s->restart_force_status.status))) { + if (s->type == SERVICE_ONESHOT && !exit_status_set_is_empty(&s->restart_force_status)) { log_error_unit(UNIT(s)->id, "%s has RestartForceStatus= set, which isn't allowed for Type=oneshot services. Refusing.", UNIT(s)->id); return -EINVAL; } diff --git a/src/shared/exit-status.c b/src/shared/exit-status.c index 942ac86128..f3434f7ccc 100644 --- a/src/shared/exit-status.c +++ b/src/shared/exit-status.c @@ -216,3 +216,10 @@ void exit_status_set_free(ExitStatusSet *x) { set_free(x->signal); x->status = x->signal = NULL; } + +bool exit_status_set_is_empty(ExitStatusSet *x) { + if (!x) + return true; + + return set_isempty(x->status) && set_isempty(x->signal); +} diff --git a/src/shared/exit-status.h b/src/shared/exit-status.h index 744f2d5376..7438508e4d 100644 --- a/src/shared/exit-status.h +++ b/src/shared/exit-status.h @@ -97,3 +97,4 @@ bool is_clean_exit(int code, int status, ExitStatusSet *success_status); bool is_clean_exit_lsb(int code, int status, ExitStatusSet *success_status); void exit_status_set_free(ExitStatusSet *x); +bool exit_status_set_is_empty(ExitStatusSet *x); |