- devices_scan_subsystems(udev, "/bus", subsystem, "/devices", &device_list);
- devices_scan_subsystems(udev, "/class", subsystem, NULL, &device_list);
- }
+ info(udev, "searching '/bus/*/devices/*' dir\n");
+ devices_scan_subsystems(udev, "/bus", "/devices",
+ list_get_entry(&subsystem_include_list),
+ list_get_entry(&subsystem_exclude_list),
+ &udev_enumerate->devices_list);
+ info(udev, "searching '/class/*' dir\n");
+ devices_scan_subsystems(udev, "/class", NULL,
+ list_get_entry(&subsystem_include_list),
+ list_get_entry(&subsystem_exclude_list),
+ &udev_enumerate->devices_list);
+ /* if block isn't a class, scan /block/ */
+ util_strlcpy(base, udev_get_sys_path(udev), sizeof(base));
+ util_strlcat(base, "/class/block", sizeof(base));
+ if (stat(base, &statbuf) != 0) {
+ struct udev_list_entry *include_list = list_get_entry(&subsystem_include_list);
+ struct udev_list_entry *exclude_list = list_get_entry(&subsystem_exclude_list);
+ int include_block = (include_list == NULL || udev_list_entry_get_by_name(include_list, "block") != NULL);
+ int exclude_block = (udev_list_entry_get_by_name(exclude_list, "block") != NULL);