--- /dev/null
+From 2e9b6bbebb7cf1ef0095516ec6d5203deb3822e8 Mon Sep 17 00:00:00 2001
+From: Nathan Hjelm <hjelmn@me.com>
+Date: Fri, 9 Oct 2015 15:03:10 -0600
+Subject: [PATCH 1/1] Use C99 standard fixed width integer types in usb.h
+
+This patch modifies the integer types in usb.h of the form u_int* to the
+C99 standard uint* types.
+
+Based on patch from Gwenhael Goavec-Merou.
+
+Backported from upstream commit
+https://github.com/libusb/libusb-compat-0.1/commit/2e9b6bbebb7cf1ef0095516ec6d5203deb3822e8.
+
+Signed-off-by: Gwenhael Goavec-Merou <gwenhael.goavec-merou@trabucayre.com>
+Signed-off-by: Nathan Hjelm <hjelmn@me.com>
+---
+ libusb/usb.h | 130 ++++++++++++++++++++++++++++++++---------------------------
+ 1 file changed, 70 insertions(+), 60 deletions(-)
+
+diff --git a/libusb/usb.h b/libusb/usb.h
+index 84e730f..d2c30aa 100644
+--- a/libusb/usb.h
++++ b/libusb/usb.h
+@@ -2,6 +2,7 @@
+ * Prototypes, structure definitions and macros.
+ *
+ * Copyright (c) 2000-2003 Johannes Erdfelt <johannes@erdfelt.com>
++ * Copyright (c) 2015 Nathan Hjelm <hjelmn@cs.unm.edu>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+@@ -22,8 +23,8 @@
+ * distribution for details.
+ */
+
+-#ifndef __USB_H__
+-#define __USB_H__
++#ifndef USB_H
++#define USB_H
+
+ #include <unistd.h>
+ #include <stdlib.h>
+@@ -31,6 +32,15 @@
+
+ #include <dirent.h>
+
++/* stdint.h is not available on older MSVC */
++#if defined(_MSC_VER) && (_MSC_VER < 1600) && (!defined(_STDINT)) && (!defined(_STDINT_H))
++typedef unsigned __int8 uint8_t;
++typedef unsigned __int16 uint16_t;
++typedef unsigned __int32 uint32_t;
++#else
++#include <stdint.h>
++#endif
++
+ /*
+ * USB spec information
+ *
+@@ -78,40 +88,40 @@
+
+ /* All standard descriptors have these 2 fields in common */
+ struct usb_descriptor_header {
+- u_int8_t bLength;
+- u_int8_t bDescriptorType;
++ uint8_t bLength;
++ uint8_t bDescriptorType;
+ };
+
+ /* String descriptor */
+ struct usb_string_descriptor {
+- u_int8_t bLength;
+- u_int8_t bDescriptorType;
+- u_int16_t wData[1];
++ uint8_t bLength;
++ uint8_t bDescriptorType;
++ uint16_t wData[1];
+ };
+
+ /* HID descriptor */
+ struct usb_hid_descriptor {
+- u_int8_t bLength;
+- u_int8_t bDescriptorType;
+- u_int16_t bcdHID;
+- u_int8_t bCountryCode;
+- u_int8_t bNumDescriptors;
+- /* u_int8_t bReportDescriptorType; */
+- /* u_int16_t wDescriptorLength; */
++ uint8_t bLength;
++ uint8_t bDescriptorType;
++ uint16_t bcdHID;
++ uint8_t bCountryCode;
++ uint8_t bNumDescriptors;
++ /* uint8_t bReportDescriptorType; */
++ /* uint16_t wDescriptorLength; */
+ /* ... */
+ };
+
+ /* Endpoint descriptor */
+ #define USB_MAXENDPOINTS 32
+ struct usb_endpoint_descriptor {
+- u_int8_t bLength;
+- u_int8_t bDescriptorType;
+- u_int8_t bEndpointAddress;
+- u_int8_t bmAttributes;
+- u_int16_t wMaxPacketSize;
+- u_int8_t bInterval;
+- u_int8_t bRefresh;
+- u_int8_t bSynchAddress;
++ uint8_t bLength;
++ uint8_t bDescriptorType;
++ uint8_t bEndpointAddress;
++ uint8_t bmAttributes;
++ uint16_t wMaxPacketSize;
++ uint8_t bInterval;
++ uint8_t bRefresh;
++ uint8_t bSynchAddress;
+
+ unsigned char *extra; /* Extra descriptors */
+ int extralen;
+@@ -129,15 +139,15 @@ struct usb_endpoint_descriptor {
+ /* Interface descriptor */
+ #define USB_MAXINTERFACES 32
+ struct usb_interface_descriptor {
+- u_int8_t bLength;
+- u_int8_t bDescriptorType;
+- u_int8_t bInterfaceNumber;
+- u_int8_t bAlternateSetting;
+- u_int8_t bNumEndpoints;
+- u_int8_t bInterfaceClass;
+- u_int8_t bInterfaceSubClass;
+- u_int8_t bInterfaceProtocol;
+- u_int8_t iInterface;
++ uint8_t bLength;
++ uint8_t bDescriptorType;
++ uint8_t bInterfaceNumber;
++ uint8_t bAlternateSetting;
++ uint8_t bNumEndpoints;
++ uint8_t bInterfaceClass;
++ uint8_t bInterfaceSubClass;
++ uint8_t bInterfaceProtocol;
++ uint8_t iInterface;
+
+ struct usb_endpoint_descriptor *endpoint;
+
+@@ -155,14 +165,14 @@ struct usb_interface {
+ /* Configuration descriptor information.. */
+ #define USB_MAXCONFIG 8
+ struct usb_config_descriptor {
+- u_int8_t bLength;
+- u_int8_t bDescriptorType;
+- u_int16_t wTotalLength;
+- u_int8_t bNumInterfaces;
+- u_int8_t bConfigurationValue;
+- u_int8_t iConfiguration;
+- u_int8_t bmAttributes;
+- u_int8_t MaxPower;
++ uint8_t bLength;
++ uint8_t bDescriptorType;
++ uint16_t wTotalLength;
++ uint8_t bNumInterfaces;
++ uint8_t bConfigurationValue;
++ uint8_t iConfiguration;
++ uint8_t bmAttributes;
++ uint8_t MaxPower;
+
+ struct usb_interface *interface;
+
+@@ -172,28 +182,28 @@ struct usb_config_descriptor {
+
+ /* Device descriptor */
+ struct usb_device_descriptor {
+- u_int8_t bLength;
+- u_int8_t bDescriptorType;
+- u_int16_t bcdUSB;
+- u_int8_t bDeviceClass;
+- u_int8_t bDeviceSubClass;
+- u_int8_t bDeviceProtocol;
+- u_int8_t bMaxPacketSize0;
+- u_int16_t idVendor;
+- u_int16_t idProduct;
+- u_int16_t bcdDevice;
+- u_int8_t iManufacturer;
+- u_int8_t iProduct;
+- u_int8_t iSerialNumber;
+- u_int8_t bNumConfigurations;
++ uint8_t bLength;
++ uint8_t bDescriptorType;
++ uint16_t bcdUSB;
++ uint8_t bDeviceClass;
++ uint8_t bDeviceSubClass;
++ uint8_t bDeviceProtocol;
++ uint8_t bMaxPacketSize0;
++ uint16_t idVendor;
++ uint16_t idProduct;
++ uint16_t bcdDevice;
++ uint8_t iManufacturer;
++ uint8_t iProduct;
++ uint8_t iSerialNumber;
++ uint8_t bNumConfigurations;
+ };
+
+ struct usb_ctrl_setup {
+- u_int8_t bRequestType;
+- u_int8_t bRequest;
+- u_int16_t wValue;
+- u_int16_t wIndex;
+- u_int16_t wLength;
++ uint8_t bRequestType;
++ uint8_t bRequest;
++ uint16_t wValue;
++ uint16_t wIndex;
++ uint16_t wLength;
+ };
+
+ /*
+@@ -254,7 +264,7 @@ struct usb_device {
+
+ void *dev; /* Darwin support */
+
+- u_int8_t devnum;
++ uint8_t devnum;
+
+ unsigned char num_children;
+ struct usb_device **children;
+@@ -266,7 +276,7 @@ struct usb_bus {
+ char dirname[PATH_MAX + 1];
+
+ struct usb_device *devices;
+- u_int32_t location;
++ uint32_t location;
+
+ struct usb_device *root_dev;
+ };
+--
+2.4.9
+