chiark / gitweb /
udev: move global property handling from libudev to udevd
[elogind.git] / src / udev / udevd.c
index a040529e6f159aacdbdc47bb0d77e1b7400dae52..6335b6c75af4ffd0ed569f96a033ca5f54ae5b03 100644 (file)
 #include "dev-setup.h"
 #include "fileio.h"
 
-void udev_main_log(struct udev *udev, int priority,
-                   const char *file, int line, const char *fn,
-                   const char *format, va_list args) {
-        log_metav(priority, file, line, fn, format, args);
-}
-
 static struct udev_rules *rules;
 static struct udev_ctrl *udev_ctrl;
 static struct udev_monitor *monitor;
@@ -82,6 +76,7 @@ static UDEV_LIST(event_list);
 static UDEV_LIST(worker_list);
 static char *udev_cgroup;
 static bool udev_exit;
+static struct udev_list properties_list;
 
 enum event_state {
         EVENT_UNDEF,
@@ -644,7 +639,6 @@ static struct udev_ctrl_connection *handle_ctrl_msg(struct udev_ctrl *uctrl) {
         if (i >= 0) {
                 log_debug("udevd message (SET_LOG_LEVEL) received, log_priority=%i", i);
                 log_set_max_level(i);
-                udev_set_log_priority(udev, i);
                 worker_kill(udev);
         }
 
@@ -677,10 +671,10 @@ static struct udev_ctrl_connection *handle_ctrl_msg(struct udev_ctrl *uctrl) {
                                 val = &val[1];
                                 if (val[0] == '\0') {
                                         log_debug("udevd message (ENV) received, unset '%s'", key);
-                                        udev_add_property(udev, key, NULL);
+                                        udev_list_entry_add(&properties_list, key, NULL);
                                 } else {
                                         log_debug("udevd message (ENV) received, set '%s=%s'", key, val);
-                                        udev_add_property(udev, key, val);
+                                        udev_list_entry_add(&properties_list, key, val);
                                 }
                         } else {
                                 log_error("wrong key format '%s'", key);
@@ -984,7 +978,6 @@ static void kernel_cmdline_options(struct udev *udev) {
 
                         prio = util_log_priority(value);
                         log_set_max_level(prio);
-                        udev_set_log_priority(udev, prio);
                 } else if ((value = startswith(opt, "udev.children-max="))) {
                         r = safe_atoi(value, &arg_children_max);
                         if (r < 0)
@@ -1120,19 +1113,14 @@ int main(int argc, char *argv[]) {
         log_parse_environment();
         log_open();
 
-        udev_set_log_fn(udev, udev_main_log);
-        log_set_max_level(udev_get_log_priority(udev));
-
         r = parse_argv(argc, argv);
         if (r <= 0)
                 goto exit;
 
         kernel_cmdline_options(udev);
 
-        if (arg_debug) {
+        if (arg_debug)
                 log_set_max_level(LOG_DEBUG);
-                udev_set_log_priority(udev, LOG_DEBUG);
-        }
 
         if (getuid() != 0) {
                 log_error("root privileges required");
@@ -1154,6 +1142,8 @@ int main(int argc, char *argv[]) {
 
         umask(022);
 
+        udev_list_init(udev, &properties_list, true);
+
         r = mkdir("/run/udev", 0755);
         if (r < 0 && errno != EEXIST) {
                 log_error("could not create /run/udev: %m");
@@ -1542,6 +1532,7 @@ exit_daemonize:
         udev_monitor_unref(monitor);
         udev_ctrl_connection_unref(ctrl_conn);
         udev_ctrl_unref(udev_ctrl);
+        udev_list_cleanup(&properties_list);
         mac_selinux_finish();
         udev_unref(udev);
         log_close();