case 'D':
if (strlen(udev->kernel_number) == 0) {
strcat(pos, "disc");
+ dbg("substitute devfs disc");
break;
}
strcat(pos, "part");
strcat(pos, udev->kernel_number);
- dbg("substitute kernel number '%s'", udev->kernel_number);
+ dbg("substitute devfs part '%s'", udev->kernel_number);
break;
case 'm':
sprintf(pos, "%u", udev->minor);
break;
}
}
- strcat(pos, pos3);
- dbg("substitute partial callout output '%s'", pos3);
+ if (pos3) {
+ strcat(pos, pos3);
+ dbg("substitute partial callout output '%s'", pos3);
+ }
} else {
strcat(pos, udev->callout_value);
dbg("substitute callout output '%s'", udev->callout_value);
} bus_files[] = {
{ .bus = "scsi", .file = "vendor" },
{ .bus = "usb", .file = "idVendor" },
+ { .bus = "ide", .file = "detach_state" },
{ .bus = "pci", .file = "vendor" },
{}
};
if (dev->type != CALLOUT)
continue;
- if (sysfs_device) {
+ if (dev->bus[0] != '\0') {
+ /* as the user specified a bus, we must match it up */
+ if (!sysfs_device)
+ continue;
dbg("dev->bus='%s' sysfs_device->bus='%s'", dev->bus, sysfs_device->bus);
if (strcasecmp(dev->bus, sysfs_device->bus) != 0)
continue;
if (dev->type != LABEL)
continue;
- if (sysfs_device) {
+ if (dev->bus[0] != '\0') {
+ /* as the user specified a bus, we must match it up */
+ if (!sysfs_device)
+ continue;
dbg("dev->bus='%s' sysfs_device->bus='%s'", dev->bus, sysfs_device->bus);
if (strcasecmp(dev->bus, sysfs_device->bus) != 0)
continue;