debug(ctx, "libusb_claim_interface failed\n");
debug(ctx, "Cannot claim interface %hhu\n",
(*dev)->desc->interface_number);
-out_libusb_close:
- libusb_close((*dev)->usb_device);
- (*dev)->usb_device = NULL;
+ goto out_libusb_close;
}
out:
return ret;
+
+out_libusb_close:
+ libusb_close((*dev)->usb_device);
+ (*dev)->usb_device = NULL;
+ return ret;
}
typedef enum {
* This is where the central logic of multi-device support is.
*
* When 'op' == SCAN_OP_BUILD_DEVLIST the parameters 'open_device_index' and
- * 'dev' are ignored; the function returns 0 on success and a negative value
+ * 'dev' are ignored; the function returns 0 on success or a negative value
* on error.
*
* When 'op' == SCAN_OP_OPEN_DEVICE the function opens the supported USB
* device with index 'open_device_index' and returns the correspondent
- * am7xxx_device in the 'dev' parameter; the function returns 0 on success,
- * 1 if the device was already open and a negative value on error.
+ * am7xxx_device in the 'dev' parameter; the function returns the value from
+ * open_device(), which is 0 on success, 1 if the device was already open or
+ * a negative value on error.
*
* NOTES:
* if scan_devices() fails when called with 'op' == SCAN_OP_BUILD_DEVLIST,
open_device_index,
list[i],
dev);
- if (ret < 0) {
+ if (ret < 0)
debug(ctx, "open_device failed\n");
- goto out;
- }
+ /* exit the loop unconditionally after
+ * attempting to open the device
+ * requested by the user */
goto out;
}
current_index++;