From: Hans de G. <hde...@re...> - 2015-04-01 07:03:34
|
On some exotic hardware, e.g. HP ProLiant Moonshot Cartridge servers there are no usb controllers, so no usb devices at all. In this case currently libusb_init will fail, because find_usbfs_path fails. Many apps don't handle this gracefully, and even if they do not crash the result still is not pretty, e.g.: unable to initialize libusb: -99 Where one simply would expect empty output. Since on systems using udev the usbfs path should always be /dev/bus/usb (as that gets created by udev), simply assume /dev/bus/usb when build with USE_UDEV and the path cannot be found in the traditional way. Signed-off-by: Hans de Goede <hde...@re...> --- libusb/os/linux_usbfs.c | 8 ++++++++ libusb/version_nano.h | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/libusb/os/linux_usbfs.c b/libusb/os/linux_usbfs.c index 5e9b666..ac9cb54 100644 --- a/libusb/os/linux_usbfs.c +++ b/libusb/os/linux_usbfs.c @@ -307,6 +307,14 @@ static const char *find_usbfs_path(void) } } +/* On udev based systems without any usb-devices /dev/bus/usb will not + * exist. So if we've not found anything and we're using udev for hotplug + * simply assume /dev/bus/usb rather then making libusb_init fail. */ +#if defined(USE_UDEV) + if (ret == NULL) + ret = "/dev/bus/usb"; +#endif + if (ret != NULL) usbi_dbg("found usbfs at %s", ret); diff --git a/libusb/version_nano.h b/libusb/version_nano.h index a8bf988..d8030b5 100644 --- a/libusb/version_nano.h +++ b/libusb/version_nano.h @@ -1 +1 @@ -#define LIBUSB_NANO 10967 +#define LIBUSB_NANO 10968 -- 2.3.4 |