Hello. Do you mean LIBUSB20_NO_BACKWARDS_COMPAT applies only to
libusb20,  or to both libusb10 and libusb20. Since I don't think there is 
anyone use
libusb20 directly and the structure in libusb20 is for decoding only.

> On 7/8/25 14:40, Adrian Chadd wrote:
>> hi! Thanks for this!
>> Could we possibly wrap stuff like these compat macros in a #define
>> that we can undefine? So we can make sure no new code shows up that
>> uses the "old" paths?
>> eg LIBUSB10_NO_BACKWARDS_COMPAT / LIBUSB20_NO_BACKWARDS_COMPAT ?
>> Thanks!
>> 
>
> The latter, please.  +1
>
> Thanks,
>
> Kyle Evans
>
>> -adrian
>> On Tue, 8 Jul 2025 at 08:12, ShengYi Hung <aokbl...@freebsd.org
>> <mailto:aokbl...@freebsd.org>> wrote:
>>     The branch main has been updated by aokblast:
>>     URL: https://cgit.FreeBSD.org/src/commit/?
>>     id=f84a0da4e0608a970c775f3d605f8de2b0b8d322 <https://
>>     cgit.FreeBSD.org/src/commit/?
>>     id=f84a0da4e0608a970c775f3d605f8de2b0b8d322>
>>     commit f84a0da4e0608a970c775f3d605f8de2b0b8d322
>>     Author:     ShengYi Hung <aokbl...@freebsd.org>
>>     AuthorDate: 2025-06-07 19:43:15 +0000
>>     Commit:     ShengYi Hung <aokbl...@freebsd.org>
>>     CommitDate: 2025-07-08 15:11:41 +0000
>>          libusb: rename bNumDeviceCapabilities to bNumDeviceCaps for
>>     compatibility with libusb
>>          THe member bNumDeviceCapabilities is referred to as
>>     bNumDeviceCaps in
>>          the upstream libusb project.
>>          To improve compatibility, we are renaming the member
>> accordingly.
>>          For backward compatibility, a mocro will be defined to map
>>          bNumDeviceCapabilities to bNumDeviceCaps.
>>          See: https://github.com/libusb/libusb/
>>     commit/02ebafc85d3f219842cbabaf78abc8100b6656e5 <https://github.com/
>>     libusb/libusb/commit/02ebafc85d3f219842cbabaf78abc8100b6656e5>
>>          Reviewed by:    kevans
>>          Approved by:    markj (mentor)
>>          MFC after:      2 weeks
>>          Sponsored by:   FreeBSD Foundation
>>          Differential Revision: https://reviews.freebsd.org/D50740
>>     <https://reviews.freebsd.org/D50740>
>>     ---
>>       lib/libusb/libusb.h        |  5 ++++-
>>       lib/libusb/libusb10_desc.c | 11 ++++++-----
>>       lib/libusb/libusb20_desc.h |  6 +++++-
>>       3 files changed, 15 insertions(+), 7 deletions(-)
>>     diff --git a/lib/libusb/libusb.h b/lib/libusb/libusb.h
>>     index 0aad29aa4ecc..491af3d0a5ec 100644
>>     --- a/lib/libusb/libusb.h
>>     +++ b/lib/libusb/libusb.h
>>     @@ -418,7 +418,10 @@ typedef struct libusb_bos_descriptor {
>>              uint8_t bLength;
>>              uint8_t bDescriptorType;
>>              uint16_t wTotalLength;
>>     -       uint8_t bNumDeviceCapabilities;
>>     +#ifndef bNumDeviceCapabilities
>>     +#define bNumDeviceCapabilities bNumDeviceCaps
>>     +#endif
>>     +       uint8_t bNumDeviceCaps;
>>              struct libusb_usb_2_0_device_capability_descriptor
>>     *usb_2_0_ext_cap;
>>              struct libusb_ss_usb_device_capability_descriptor *ss_usb_cap;
>>              struct libusb_bos_dev_capability_descriptor **dev_capability;
>>     diff --git a/lib/libusb/libusb10_desc.c b/lib/libusb/libusb10_desc.c
>>     index 3e36009cbb3a..5f4c46740688 100644
>>     --- a/lib/libusb/libusb10_desc.c
>>     +++ b/lib/libusb/libusb10_desc.c
>>     @@ -470,10 +470,11 @@ libusb_parse_bos_descriptor(const void *buf,
>>     int len,
>>                              ptr->bDescriptorType = dtype;
>>                              ptr->wTotalLength = ((const uint8_t *)buf)[2] |
>>                                  (((const uint8_t *)buf)[3] << 8);
>>     -                       ptr->bNumDeviceCapabilities = ((const
>>     uint8_t *)buf)[4];
>>     +                       ptr->bNumDeviceCaps = ((const uint8_t *)buf)[4];
>>                              ptr->usb_2_0_ext_cap = NULL;
>>                              ptr->ss_usb_cap = NULL;
>>     -                       ptr->dev_capability = calloc(ptr-
>>      >bNumDeviceCapabilities, sizeof(void *));
>>     +                       ptr->dev_capability = calloc(ptr-
>>      >bNumDeviceCaps,
>>     +                           sizeof(void *));
>>                              if (ptr->dev_capability == NULL) {
>>                                      free(ptr);
>>                                      return (LIBUSB_ERROR_NO_MEM);
>>     @@ -485,7 +486,7 @@ libusb_parse_bos_descriptor(const void *buf, int
>>     len,
>>                      if (dlen >= 3 &&
>>                          ptr != NULL &&
>>                          dtype == LIBUSB_DT_DEVICE_CAPABILITY) {
>>     -                       if (index != ptr->bNumDeviceCapabilities) {
>>     +                       if (index != ptr->bNumDeviceCaps) {
>>                                      ptr->dev_capability[index] =
>>     malloc(dlen);
>>                                      if (ptr->dev_capability[index] ==
>>     NULL) {
>>                                                 
>> libusb_free_bos_descriptor(ptr);
>>     @@ -542,7 +543,7 @@ libusb_parse_bos_descriptor(const void *buf, int
>>     len,
>>              }
>>              if (ptr != NULL) {
>>     -               ptr->bNumDeviceCapabilities = index;
>>     +               ptr->bNumDeviceCaps = index;
>>                      return (0);             /* success */
>>              }
>>     @@ -557,7 +558,7 @@ libusb_free_bos_descriptor(struct
>>     libusb_bos_descriptor *bos)
>>              if (bos == NULL)
>>                      return;
>>     -       for (i = 0; i != bos->bNumDeviceCapabilities; i++)
>>     +       for (i = 0; i != bos->bNumDeviceCaps; i++)
>>                      free(bos->dev_capability[i]);
>>              free(bos->dev_capability);
>>              free(bos);
>>     diff --git a/lib/libusb/libusb20_desc.h b/lib/libusb/libusb20_desc.h
>>     index 017148a34b1c..0f7c9294ebc8 100644
>>     --- a/lib/libusb/libusb20_desc.h
>>     +++ b/lib/libusb/libusb20_desc.h
>>     @@ -298,11 +298,15 @@ LIBUSB20_MAKE_STRUCT(LIBUSB20_USB_20_DEVCAP_DESC);
>>       LIBUSB20_MAKE_STRUCT(LIBUSB20_SS_USB_DEVCAP_DESC);
>>     +#ifndef bNumDeviceCapabilities
>>     +#define bNumDeviceCapabilities bNumDeviceCaps
>>     +#endif
>>     +
>>       #define        LIBUSB20_BOS_DESCRIPTOR(m,n) \
>>         m(n, UINT8_T,  bLength, ) \
>>         m(n, UINT8_T,  bDescriptorType, ) \
>>         m(n, UINT16_T, wTotalLength, ) \
>>     -  m(n, UINT8_T,  bNumDeviceCapabilities, ) \
>>     +  m(n, UINT8_T,  bNumDeviceCaps, ) \
>>       LIBUSB20_MAKE_STRUCT(LIBUSB20_BOS_DESCRIPTOR);
>> 

-- 
Best Regards.
ShengYi Hung.

Reply via email to