From edbdc25dc0e133f861e7e7b01489d4dc9e8ca914 Mon Sep 17 00:00:00 2001 From: stefanrueger Date: Tue, 21 Oct 2025 14:04:46 +0200 Subject: [PATCH] Match bus:device for usbtiny using str_busdev_eq() --- src/usbtiny.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/src/usbtiny.c b/src/usbtiny.c index fbe2eff2..23e205f4 100644 --- a/src/usbtiny.c +++ b/src/usbtiny.c @@ -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