From 87adda6abc3467ede45a6d2a87df2b9efdf5bb33 Mon Sep 17 00:00:00 2001 From: Nathan Hjelm <hjelmn@me.com> Date: Fri, 9 Oct 2015 15:03:10 -0600 Subject: [PATCH] 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> Signed-off-by: Bartosz Golaszewski <brgl@bgdev.pl> --- 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.9.3