chiark / gitweb /
[PATCH] update the man page to reflect the recent changes
[elogind.git] / udevstart.c
index a862dadf88c2818a365ef9b7a1ed860d4e5f6df9..60e63c5ad8a69c8c9b512ff764e97c4d310895b2 100644 (file)
@@ -123,15 +123,24 @@ static int add_device(const char *path, const char *subsystem)
                return -ENODEV;
        }
 
-       udev_init_device(&udev, devpath, subsystem);
+       udev_init_device(&udev, devpath, subsystem, "add");
        udev_add_device(&udev, class_dev);
 
-       /* run dev.d/ scripts if we created a node or changed a netif name */
-       if (udev_dev_d && udev.devname[0] != '\0') {
+       if (udev.devname[0] != '\0')
                setenv("DEVNAME", udev.devname, 1);
-               udev_multiplex_directory(&udev, DEVD_DIR, DEVD_SUFFIX);
+
+       if (udev_run && !list_empty(&udev.run_list)) {
+               struct name_entry *name_loop;
+
+               dbg("executing run list");
+               list_for_each_entry(name_loop, &udev.run_list, node)
+                       execute_command(name_loop->name, udev.subsystem);
        }
 
+       /* run dev.d/ scripts if we created a node or changed a netif name */
+       if (udev_dev_d && udev.devname[0] != '\0')
+               udev_multiplex_directory(&udev, DEVD_DIR, DEVD_SUFFIX);
+
        sysfs_close_class_device(class_dev);
        udev_cleanup_device(&udev);