From 2e78aa9988425d540a572535fa2e3d68ff519316 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Wed, 15 Sep 2010 14:37:16 +0200 Subject: util: introduce waitpid_loop() --- src/util.c | 32 +++++++++++++++++++++++++------- 1 file changed, 25 insertions(+), 7 deletions(-) (limited to 'src/util.c') diff --git a/src/util.c b/src/util.c index 48cdb19ef1..805d47afb4 100644 --- a/src/util.c +++ b/src/util.c @@ -49,6 +49,7 @@ #include #include #include +#include #include "macro.h" #include "util.h" @@ -2849,18 +2850,18 @@ void status_welcome(void) { free(r); #elif defined(TARGET_DEBIAN) - char *r; + char *r; - if (read_one_line_file("/etc/debian_version", &r) < 0) - return; + if (read_one_line_file("/etc/debian_version", &r) < 0) + return; - truncate_nl(r); + truncate_nl(r); - status_printf("Welcome to Debian \x1B[1;31m%s\x1B[0m!\n", r); /* Light Red for Debian */ + status_printf("Welcome to Debian \x1B[1;31m%s\x1B[0m!\n", r); /* Light Red for Debian */ - free(r); + free(r); #elif defined(TARGET_ARCH) - status_printf("Welcome to \x1B[1;36mArch Linux\x1B[0m!\n"); /* Cyan for Arch */ + status_printf("Welcome to \x1B[1;36mArch Linux\x1B[0m!\n"); /* Cyan for Arch */ #else #warning "You probably should add a welcome text logic here." #endif @@ -3100,6 +3101,23 @@ char *unquote(const char *s, const char quote) { return strdup(s); } +int waitpid_loop(pid_t pid, int *status) { + assert(pid >= 1); + assert(status); + + for (;;) { + if (waitpid(pid, status, 0) < 0) { + + if (errno == EINTR) + continue; + + return -errno; + } + + return 0; + } +} + static const char *const ioprio_class_table[] = { [IOPRIO_CLASS_NONE] = "none", [IOPRIO_CLASS_RT] = "realtime", -- cgit v1.2.3-54-g00ecf