goto out;
}
- libusb_set_configuration((*dev)->usb_device, 2);
- libusb_claim_interface((*dev)->usb_device, 0);
+ /* XXX, the device is now open, if any
+ * of the calls below fail we need to
+ * close it again before bailing out.
+ */
+
+ ret = libusb_set_configuration((*dev)->usb_device, 2);
+ if (ret < 0) {
+ debug(ctx, "libusb_set_configuration failed\n");
+ debug(ctx, "Cannot set configuration 2\n");
+ goto out_libusb_close;
+ }
+
+ ret = libusb_claim_interface((*dev)->usb_device, 0);
+ if (ret < 0) {
+ debug(ctx, "libusb_claim_interface failed\n");
+ debug(ctx, "Cannot claim interface 0\n");
+out_libusb_close:
+ libusb_close((*dev)->usb_device);
+ (*dev)->usb_device = NULL;
+ goto out;
+ }
+
goto out;
}
current_index++;