chiark / gitweb /
update README
[elogind.git] / udev.c
diff --git a/udev.c b/udev.c
index 4096b8b3485bdf53dd439bc80e5f0fa506c36160..ecfd5644ec5f28ba87c970fe23c823eeb1197ff6 100644 (file)
--- a/udev.c
+++ b/udev.c
@@ -115,7 +115,7 @@ int main(int argc, char *argv[], char *envp[])
        }
 
        udev_init_device(&udev, devpath, subsystem, action);
-       udev_rules_init(&rules, 0);
+       udev_rules_init(&rules, 1, 0);
 
        retval = udev_process_event(&rules, &udev);
 
@@ -123,10 +123,15 @@ int main(int argc, char *argv[], char *envp[])
                struct name_entry *name_loop;
 
                dbg("executing run list");
-               list_for_each_entry(name_loop, &udev.run_list, node)
-                       execute_program(name_loop->name, udev.subsystem, NULL, 0, NULL);
+               list_for_each_entry(name_loop, &udev.run_list, node) {
+                       if (strncmp(name_loop->name, "socket:", strlen("socket:")) == 0)
+                               pass_env_to_socket(&name_loop->name[strlen("socket:")], devpath, action);
+                       else
+                               execute_program(name_loop->name, udev.subsystem, NULL, 0, NULL);
+               }
        }
 
+       udev_rules_close(&rules);
        udev_cleanup_device(&udev);
 
 exit: