diff options
Diffstat (limited to 'libusb/os/netbsd_usb.c')
-rw-r--r-- | libusb/os/netbsd_usb.c | 25 |
1 files changed, 7 insertions, 18 deletions
diff --git a/libusb/os/netbsd_usb.c b/libusb/os/netbsd_usb.c index 91f2472..485208d 100644 --- a/libusb/os/netbsd_usb.c +++ b/libusb/os/netbsd_usb.c @@ -37,7 +37,6 @@ struct device_priv { int fd; usb_config_descriptor_t *cdesc; /* active config descriptor */ - usb_device_descriptor_t ddesc; /* usb device descriptor */ }; struct handle_priv { @@ -52,8 +51,6 @@ static int netbsd_get_device_list(struct libusb_context *, static int netbsd_open(struct libusb_device_handle *); static void netbsd_close(struct libusb_device_handle *); -static int netbsd_get_device_descriptor(struct libusb_device *, void *, - int *); static int netbsd_get_active_config_descriptor(struct libusb_device *, void *, size_t); static int netbsd_get_config_descriptor(struct libusb_device *, uint8_t, @@ -90,7 +87,6 @@ const struct usbi_os_backend usbi_backend = { .open = netbsd_open, .close = netbsd_close, - .get_device_descriptor = netbsd_get_device_descriptor, .get_active_config_descriptor = netbsd_get_active_config_descriptor, .get_config_descriptor = netbsd_get_config_descriptor, @@ -121,6 +117,7 @@ netbsd_get_device_list(struct libusb_context * ctx, struct libusb_device *dev; struct device_priv *dpriv; struct usb_device_info di; + usb_device_descriptor_t ddesc; unsigned long session_id; char devnode[16]; int fd, err, i; @@ -157,11 +154,16 @@ netbsd_get_device_list(struct libusb_context * ctx, strlcpy(dpriv->devnode, devnode, sizeof(devnode)); dpriv->fd = -1; - if (ioctl(fd, USB_GET_DEVICE_DESC, &dpriv->ddesc) < 0) { + if (ioctl(fd, USB_GET_DEVICE_DESC, &ddesc) < 0) { err = errno; goto error; } + static_assert(sizeof(dev->device_descriptor) == sizeof(ddesc), + "mismatch between libusb and OS device descriptor sizes"); + memcpy(&dev->device_descriptor, &ddesc, LIBUSB_DT_DEVICE_SIZE); + usbi_localize_device_descriptor(&dev->device_descriptor); + if (_cache_active_config_descriptor(dev, fd)) { err = errno; goto error; @@ -220,19 +222,6 @@ netbsd_close(struct libusb_device_handle *handle) } int -netbsd_get_device_descriptor(struct libusb_device *dev, void *buf, - int *host_endian) -{ - struct device_priv *dpriv = usbi_get_device_priv(dev); - - usbi_dbg(" "); - - memcpy(buf, &dpriv->ddesc, LIBUSB_DT_DEVICE_SIZE); - - return (LIBUSB_SUCCESS); -} - -int netbsd_get_active_config_descriptor(struct libusb_device *dev, void *buf, size_t len) { |