X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=util.c;h=5e3654d1d1ff383d96ec5de86381e85ed8a41d37;hp=95791f941d86975dbff743b26e01eda335559a9b;hb=cb8a8f78a11cedb8cba1abfa9a63b0d3ea8eef93;hpb=ca139f94c8de427616f54ab38262a47c4a636ffd diff --git a/util.c b/util.c index 95791f941..5e3654d1d 100644 --- a/util.c +++ b/util.c @@ -1910,6 +1910,23 @@ int make_stdio(int fd) { return 0; } +bool is_clean_exit(int code, int status) { + + if (code == CLD_EXITED) + return status == 0; + + /* If a daemon does not implement handlers for some of the + * signals that's not considered an unclean shutdown */ + if (code == CLD_KILLED) + return + status == SIGHUP || + status == SIGINT || + status == SIGTERM || + status == SIGPIPE; + + return false; +} + static const char *const ioprio_class_table[] = { [IOPRIO_CLASS_NONE] = "none", [IOPRIO_CLASS_RT] = "realtime",