Match bus:device for usbtiny using str_busdev_eq()

This commit is contained in:
stefanrueger
2025-10-21 14:04:46 +02:00
parent 88eea2f908
commit edbdc25dc0

View File

@@ -282,8 +282,7 @@ static int usbtiny_avr_op(const PROGRAMMER *pgm, const AVRPART *p, int op, unsig
static int usbtiny_open(PROGRAMMER *pgm, const char *name) {
struct usb_bus *bus;
struct usb_device *dev = 0;
const char *bus_name = NULL;
char *dev_name = NULL;
const char *bus_name = NULL, *dev_name = NULL;
int vid, pid;
// If no -P was given or '-P usb' was given
@@ -296,8 +295,6 @@ static int usbtiny_open(PROGRAMMER *pgm, const char *name) {
if(str_starts(name, "usb") && ':' == name[usb_len]) {
bus_name = name + usb_len + 1;
dev_name = strchr(bus_name, ':');
if(NULL != dev_name)
*dev_name++ = '\0';
}
}
@@ -322,13 +319,13 @@ static int usbtiny_open(PROGRAMMER *pgm, const char *name) {
pid = USBTINY_PRODUCT_DEFAULT;
}
// Now we iterate through all the buses and devices
// Iterate through all the buses and devices
for(bus = usb_busses; bus; bus = bus->next) {
for(dev = bus->devices; dev; dev = dev->next) {
if(dev->descriptor.idVendor == vid && dev->descriptor.idProduct == pid) { // Found match?
pmsg_notice("found USBtiny with bus:device = %s:%s\n", bus->dirname, dev->filename);
// If -P was given, match device by device name and bus name
if(name != NULL && (NULL == dev_name || !str_eq(bus->dirname, bus_name) || !str_eq(dev->filename, dev_name)))
if(name && (!dev_name || !str_busdev_eq(bus->dirname, bus_name) || !str_busdev_eq(dev->filename, dev_name)))
continue;
my.usb_handle = usb_open(dev); // Attempt to connect to device