Index: src/libusb1-glue.c |
=================================================================== |
--- src/libusb1-glue.c (revision 160213) |
+++ src/libusb1-glue.c (working copy) |
@@ -84,7 +84,7 @@ |
static const int mtp_device_table_size = sizeof(mtp_device_table) / sizeof(LIBMTP_device_entry_t); |
// Local functions |
-static void init_usb(); |
+static LIBMTP_error_number_t init_usb(); |
static void close_usb(PTP_USB* ptp_usb); |
static int find_interface_and_endpoints(libusb_device *dev, |
uint8_t *interface, |
@@ -125,16 +125,20 @@ |
} |
-static void init_usb() |
+static LIBMTP_error_number_t init_usb() |
{ |
/* |
* Some additional libusb debugging please. |
* We use the same level debug between MTP and USB. |
*/ |
- libusb_init(NULL); |
+ if (libusb_init(NULL) < 0) { |
+ LIBMTP_ERROR("Libusb1 init failed\n"); |
+ return LIBMTP_ERROR_USB_LAYER; |
+ } |
if ((LIBMTP_debug & LIBMTP_DEBUG_USB) != 0) |
libusb_set_debug(NULL,9); |
+ return LIBMTP_ERROR_NONE; |
} |
/** |
@@ -478,8 +482,11 @@ |
ssize_t nrofdevs; |
libusb_device **devs = NULL; |
int ret, i; |
+ LIBMTP_error_number_t init_usb_ret; |
- init_usb(); |
+ init_usb_ret = init_usb(); |
+ if (init_usb_ret != LIBMTP_ERROR_NONE) |
+ return init_usb_ret; |
nrofdevs = libusb_get_device_list (NULL, &devs); |
for (i = 0; i < nrofdevs ; i++) { |
@@ -551,8 +558,11 @@ |
ssize_t nrofdevs; |
libusb_device **devs = NULL; |
int i; |
+ LIBMTP_error_number_t init_usb_ret; |
- init_usb(); |
+ init_usb_ret = init_usb(); |
+ if (init_usb_ret != LIBMTP_ERROR_NONE) |
+ return 0; |
nrofdevs = libusb_get_device_list (NULL, &devs); |
for (i = 0; i < nrofdevs ; i++ ) { |
@@ -1904,9 +1914,12 @@ |
ssize_t nrofdevs; |
libusb_device **devs = NULL; |
struct libusb_device_descriptor desc; |
+ LIBMTP_error_number_t init_usb_ret; |
/* See if we can find this raw device again... */ |
- init_usb(); |
+ init_usb_ret = init_usb(); |
+ if (init_usb_ret != LIBMTP_ERROR_NONE) |
+ return init_usb_ret; |
nrofdevs = libusb_get_device_list (NULL, &devs); |
for (i = 0; i < nrofdevs ; i++) { |