X-Git-Url: https://git.zerfleddert.de/cgi-bin/gitweb.cgi/hmcfgusb/blobdiff_plain/3435bdb66e2ea9d3f2be157702b2d116cc45a25f..37c97e62a5a0ae846b3823005e08ad6b4743764e:/hmcfgusb.c diff --git a/hmcfgusb.c b/hmcfgusb.c index d8a442f..d3bec90 100644 --- a/hmcfgusb.c +++ b/hmcfgusb.c @@ -32,6 +32,12 @@ #include #include +/* Workaround for old libusb-1.0 */ +#ifndef LIBUSB_CALL +#define LIBUSB_CALL +#define libusb_handle_events_timeout_completed(ctx, tv, x) libusb_handle_events_timeout(ctx, tv) +#endif + #include "hexdump.h" #include "hmcfgusb.h" @@ -150,7 +156,7 @@ int hmcfgusb_send_null_frame(struct hmcfgusb_dev *usbdev, int silent) memset(out, 0, sizeof(out)); - err = libusb_interrupt_transfer(usbdev->usb_devh, EP_OUT, out, sizeof(out), &cnt, USB_TIMEOUT); + err = libusb_interrupt_transfer(usbdev->usb_devh, EP_OUT, out, 0, &cnt, USB_TIMEOUT); if (err && (!silent)) { fprintf(stderr, "Can't send null frame: %s\n", usb_strerror(err)); return 0; @@ -393,6 +399,7 @@ int hmcfgusb_poll(struct hmcfgusb_dev *dev, int timeout) { struct timeval tv; int usb_event = 0; + int timed_out = 0; int i; int n; int fd_n; @@ -430,6 +437,7 @@ int hmcfgusb_poll(struct hmcfgusb_dev *dev, int timeout) return -1; } else if (n == 0) { usb_event = 1; + timed_out = 1; } else { for (fd_n = 0; fd_n < dev->n_pfd; fd_n++) { if (dev->pfd[fd_n].revents) { @@ -461,6 +469,9 @@ int hmcfgusb_poll(struct hmcfgusb_dev *dev, int timeout) errno = quit; } + if (timed_out) + errno = ETIMEDOUT; + return -1; }