disk: Fix detection of busnum

Unpatched version of libusb on linux platform does not set location, but
Debian's version of libusb has a patch which set it. For compatibility with
other systems without unpatched libusb version, read busnum from dirname
which seems to be always set.

Fixes: https://github.com/pali/0xFFFF/issues/5
This commit is contained in:
Pali Rohár committed 2018-02-08 23:20:14 +01:00
1 parent e987dcd948
commit 33442482c6
1 file changed
+9 -1
+9 -1
View File
@@ -363,9 +363,17 @@ int disk_init(struct usb_device_info * dev) {
fclose(f); fclose(f);
if ( devnum != device->devnum || device->bus->location != busnum ) if ( device->devnum != devnum )
continue; continue;
if ( device->bus->location ) {
if ( device->bus->location != busnum )
continue;
} else if ( device->bus->dirname[0] ) {
if ( atoi(device->bus->dirname) != (int)busnum )
continue;
}
if ( sscanf(dirent->d_name, "%d:%d", &maj2, &min2) != 2 ) { if ( sscanf(dirent->d_name, "%d:%d", &maj2, &min2) != 2 ) {
maj2 = -1; maj2 = -1;
min2 = -1; min2 = -1;