summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--devel/libusb/Makefile1
-rw-r--r--devel/libusb/files/patch-bsd.c62
2 files changed, 63 insertions, 0 deletions
diff --git a/devel/libusb/Makefile b/devel/libusb/Makefile
index eb38a81..3630bc2 100644
--- a/devel/libusb/Makefile
+++ b/devel/libusb/Makefile
@@ -7,6 +7,7 @@
PORTNAME= libusb
PORTVERSION= 0.1.7
+PORTREVISION= 1
CATEGORIES= devel
MASTER_SITES= ${MASTER_SITE_SOURCEFORGE}
MASTER_SITE_SUBDIR= ${PORTNAME}
diff --git a/devel/libusb/files/patch-bsd.c b/devel/libusb/files/patch-bsd.c
new file mode 100644
index 0000000..7f188bf
--- /dev/null
+++ b/devel/libusb/files/patch-bsd.c
@@ -0,0 +1,62 @@
+--- bsd.c.orig Mon Nov 11 19:04:16 2002
++++ bsd.c Sun Nov 23 15:51:49 2003
+@@ -276,7 +276,7 @@
+ int usb_bulk_write(usb_dev_handle *dev, int ep, char *bytes, int size,
+ int timeout)
+ {
+- int fd, ret, sent = 0;
++ int fd, ret;
+
+ /* Ensure the endpoint address is correct */
+ ep &= ~USB_ENDPOINT_IN;
+@@ -298,8 +298,7 @@
+ USB_ERROR_STR(ret, "error setting timeout: %s",
+ strerror(errno));
+
+- do {
+- ret = write(fd, bytes+sent, size-sent);
++ ret = write(fd, bytes, size);
+ if (ret < 0)
+ #if __FreeBSD__
+ USB_ERROR_STR(ret, "error writing to bulk endpoint %s.%d: %s",
+@@ -309,16 +308,13 @@
+ dev->device->filename, UE_GET_ADDR(ep), strerror(errno));
+ #endif
+
+- sent += ret;
+- } while(ret > 0 && sent < size);
+-
+- return sent;
++ return ret;
+ }
+
+ int usb_bulk_read(usb_dev_handle *dev, int ep, char *bytes, int size,
+ int timeout)
+ {
+- int fd, ret, retrieved = 0, one = 1;
++ int fd, ret, one = 1;
+
+ /* Ensure the endpoint address is correct */
+ ep |= USB_ENDPOINT_IN;
+@@ -345,8 +341,7 @@
+ USB_ERROR_STR(ret, "error setting short xfer: %s",
+ strerror(errno));
+
+- do {
+- ret = read(fd, bytes+retrieved, size-retrieved);
++ ret = read(fd, bytes, size);
+ if (ret < 0)
+ #if __FreeBSD__
+ USB_ERROR_STR(ret, "error reading from bulk endpoint %s.%d: %s",
+@@ -355,10 +350,8 @@
+ USB_ERROR_STR(ret, "error reading from bulk endpoint %s.%02d: %s",
+ dev->device->filename, UE_GET_ADDR(ep), strerror(errno));
+ #endif
+- retrieved += ret;
+- } while (ret > 0 && retrieved < size);
+
+- return retrieved;
++ return ret;
+ }
+
+ int usb_control_msg(usb_dev_handle *dev, int requesttype, int request,
OpenPOWER on IntegriCloud