chiark / gitweb /
getty-generator: fix stripping /dev/
[elogind.git] / src / udev / udevd.c
index c4127cd03b45017309229b554b0d575e4b21ee8a..572bca881d40a06dde9725bf80a54316908aaef9 100644 (file)
@@ -75,7 +75,7 @@ static int exec_delay;
 static sigset_t sigmask_orig;
 static UDEV_LIST(event_list);
 static UDEV_LIST(worker_list);
-char *udev_cgroup;
+static char *udev_cgroup;
 static bool udev_exit;
 
 enum event_state {
@@ -779,10 +779,11 @@ static void handle_signal(struct udev *udev, int signo)
 
                                 if (WIFEXITED(status)) {
                                         if (WEXITSTATUS(status) != 0)
-                                                log_error("worker [%u] exit with return code %i\n", pid, WEXITSTATUS(status));
+                                                log_error("worker [%u] exit with return code %i\n",
+                                                          pid, WEXITSTATUS(status));
                                 } else if (WIFSIGNALED(status)) {
                                         log_error("worker [%u] terminated by signal %i (%s)\n",
-                                            pid, WTERMSIG(status), strsignal(WTERMSIG(status)));
+                                                  pid, WTERMSIG(status), strsignal(WTERMSIG(status)));
                                 } else if (WIFSTOPPED(status)) {
                                         log_error("worker [%u] stopped\n", pid);
                                 } else if (WIFCONTINUED(status)) {
@@ -856,10 +857,15 @@ static int systemd_fds(struct udev *udev, int *rctrl, int *rnetlink)
  */
 static void kernel_cmdline_options(struct udev *udev)
 {
-        char *line, *w, *state;
+        _cleanup_free_ char *line = NULL;
+        char *w, *state;
         size_t l;
+        int r;
 
-        if (read_one_line_file("/proc/cmdline", &line) < 0)
+        r = proc_cmdline(&line);
+        if (r < 0)
+                log_warning("Failed to read /proc/cmdline, ignoring: %s", strerror(-r));
+        if (r <= 0)
                 return;
 
         FOREACH_WORD_QUOTED(w, l, line, state) {
@@ -889,8 +895,6 @@ static void kernel_cmdline_options(struct udev *udev)
 
                 free(s);
         }
-
-        free(line);
 }
 
 int main(int argc, char *argv[])
@@ -923,7 +927,10 @@ int main(int argc, char *argv[])
         log_set_target(LOG_TARGET_AUTO);
         log_parse_environment();
         log_open();
+
         udev_set_log_fn(udev, udev_main_log);
+        log_set_max_level(udev_get_log_priority(udev));
+
         log_debug("version %s\n", VERSION);
         label_init("/dev");
 
@@ -1197,7 +1204,9 @@ int main(int argc, char *argv[])
         }
         log_debug("set children_max to %u\n", children_max);
 
-        udev_rules_apply_static_dev_perms(rules);
+        rc = udev_rules_apply_static_dev_perms(rules);
+        if (rc < 0)
+                log_error("failed to apply permissions on static device nodes - %s\n", strerror(-rc));
 
         udev_list_node_init(&event_list);
         udev_list_node_init(&worker_list);