chiark / gitweb /
util: introduce waitpid_loop()
[elogind.git] / src / kmod-setup.c
index e3925c5ac92bf0dc450a5d60032cd34a4353157c..0bcad3ceb487377db0a4458e799c4381c01ae6d7 100644 (file)
@@ -1,4 +1,4 @@
-/*-*- Mode: C; c-basic-offset: 8 -*-*/
+/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
 
 /***
   This file is part of systemd.
@@ -48,9 +48,9 @@ int kmod_setup(void) {
                 if (access(kmod_table[i+1], F_OK) >= 0)
                         continue;
 
-                log_info("Your kernel apparently lacks built-in %s support. Please fix that. "
-                         "We'll now try to work around this by calling '/sbin/modprobe %s'...",
-                         kmod_table[i], kmod_table[i]);
+                log_debug("Your kernel apparently lacks built-in %s support. Might be a good idea to compile it in. "
+                          "We'll now try to work around this by calling '/sbin/modprobe %s'...",
+                          kmod_table[i], kmod_table[i]);
 
                 cmdline[3 + n++] = kmod_table[i];
         }
@@ -70,23 +70,14 @@ int kmod_setup(void) {
         command.argv = (char**) cmdline;
 
         exec_context_init(&context);
-        r = exec_spawn(&command, NULL, &context, NULL, 0, NULL, false, false, false, NULL, &pid);
+        r = exec_spawn(&command, NULL, &context, NULL, 0, NULL, false, false, false, false, NULL, &pid);
         exec_context_done(&context);
 
         if (r < 0)
                 return r;
 
-        for (;;) {
-                if (waitpid(pid, &status, 0) < 0) {
-
-                        if (errno == EINTR)
-                                continue;
-
-                        return -errno;
-                }
-
-                break;
-        }
+        if ((r = waitpid_loop(pid, &status)) < 0)
+                return -errno;
 
         if (WIFEXITED(status)) {
                 if (WEXITSTATUS(status) != 0) {
@@ -99,7 +90,7 @@ int kmod_setup(void) {
         }
 
         if (WIFSIGNALED(status)) {
-                log_warning("/sbin/modprobe terminated by signal %s.", strsignal(WTERMSIG(status)));
+                log_warning("/sbin/modprobe terminated by signal %s.", signal_to_string(WTERMSIG(status)));
                 return -EPROTO;
         }