chiark / gitweb /
udev: builtin - do not fail builtin initialization if one of them returns an error
[elogind.git] / src / udev / udev-builtin.c
index b632edaae15eabab1b49fa74b7fdd523935da39b..2ea7f4e20228fe9f224e721f3e51e6e70dcb1baf 100644 (file)
@@ -31,35 +31,28 @@ static const struct udev_builtin *builtins[] = {
         [UDEV_BUILTIN_BLKID] = &udev_builtin_blkid,
         [UDEV_BUILTIN_BTRFS] = &udev_builtin_btrfs,
         [UDEV_BUILTIN_FIRMWARE] = &udev_builtin_firmware,
+        [UDEV_BUILTIN_HWDB] = &udev_builtin_hwdb,
         [UDEV_BUILTIN_INPUT_ID] = &udev_builtin_input_id,
         [UDEV_BUILTIN_KMOD] = &udev_builtin_kmod,
         [UDEV_BUILTIN_PATH_ID] = &udev_builtin_path_id,
-        [UDEV_BUILTIN_PCI_DB] = &udev_builtin_pci_db,
-        [UDEV_BUILTIN_USB_DB] = &udev_builtin_usb_db,
         [UDEV_BUILTIN_USB_ID] = &udev_builtin_usb_id,
 #ifdef HAVE_ACL
         [UDEV_BUILTIN_UACCESS] = &udev_builtin_uaccess,
 #endif
 };
 
-int udev_builtin_init(struct udev *udev)
+void udev_builtin_init(struct udev *udev)
 {
         unsigned int i;
-        int err = 0;
 
         if (initialized)
-                return 0;
+                return;
 
-        for (i = 0; i < ELEMENTSOF(builtins); i++) {
-                if (builtins[i]->init) {
-                        err = builtins[i]->init(udev);
-                        if (err < 0)
-                                break;
-                }
-        }
+        for (i = 0; i < ELEMENTSOF(builtins); i++)
+                if (builtins[i]->init)
+                        builtins[i]->init(udev);
 
         initialized = true;
-        return err;
 }
 
 void udev_builtin_exit(struct udev *udev)
@@ -79,13 +72,11 @@ void udev_builtin_exit(struct udev *udev)
 bool udev_builtin_validate(struct udev *udev)
 {
         unsigned int i;
-        bool change = false;
 
         for (i = 0; i < ELEMENTSOF(builtins); i++)
-                if (builtins[i]->validate)
-                        if (builtins[i]->validate(udev))
-                                change = true;
-        return change;
+                if (builtins[i]->validate && builtins[i]->validate(udev))
+                        return true;
+        return false;
 }
 
 void udev_builtin_list(struct udev *udev)
@@ -128,6 +119,7 @@ int udev_builtin_run(struct udev_device *dev, enum udev_builtin_cmd cmd, const c
         int argc;
         char *argv[128];
 
+        /* we need '0' here to reset the internal state */
         optind = 0;
         util_strscpy(arg, sizeof(arg), command);
         udev_build_argv(udev_device_get_udev(dev), arg, &argc, argv);