commit 4831748a1439aec81e9cbb9984b1b0289c1c7051
Author: mcuee <xiaofanc@gmail.com>
Date:   Mon May 18 07:45:24 2026 +0800

    Prepare for 0.1.9 release

commit 326c6577d0f5a52588eae0508bb8e8e43fad6830
Author: mcuee <xiaofanc@gmail.com>
Date:   Thu Apr 30 19:31:13 2026 +0800

    Bump version to 0.1.9-rc1 in configure.ac

commit 58a78dc49eb7495aa243246a5acbb98f4ffb57d8
Merge: 089f853 d5598ff
Author: mcuee <xiaofanc@gmail.com>
Date:   Mon Apr 27 15:22:38 2026 +0800

    Merge pull request #34 from libusb/claude/fix-build-warnings
    
    Fix testlibusb -Wformat-truncation warning and bump actions/checkout

commit 089f853e58cd76c9d23dcb4a155fb0b5e80c03a9
Merge: 8608a71 dd76a66
Author: mcuee <xiaofanc@gmail.com>
Date:   Mon Apr 27 14:58:05 2026 +0800

    Merge pull request #33 from libusb/claude/fix-issue-28-yhadz
    
    Update autoconf macros to use modern AC_* syntax

commit d5598ffd5208c35bf8da1624097e2d6391f217f5
Author: Ihor Dutchak <5939659+Youw@users.noreply.github.com>
Date:   Mon Apr 27 06:32:45 2026 +0000

    ci: bump actions/checkout from v2 to v6
    
    actions/checkout v2 runs on Node 12, which is end-of-life in GitHub
    Actions runners and emits a deprecation warning on every job. v6 is
    the current major release and runs on the actively supported Node
    runtime. The action is invoked with no inputs here, so no migration
    work beyond the version bump is needed.
    
    msys2/setup-msys2 is left at v2: that is still its current major
    version.
    
    Assisted-by: Claude:claude-opus-4-7

commit 4ea451e7b3a9c64829aa0ac0b723c90fc10cfee9
Author: Ihor Dutchak <5939659+Youw@users.noreply.github.com>
Date:   Mon Apr 27 06:32:40 2026 +0000

    examples: enlarge testlibusb description buffer
    
    GCC's -Wformat-truncation analyses the first snprintf in print_device()
    and warns:
    
      testlibusb.c:74: warning: ' - ' directive output may be truncated
          writing 3 bytes into a region of size between 1 and 256
          [-Wformat-truncation=]
    
    description and string are both 256 bytes, so when the manufacturer
    string fills string completely, '%s - ' has no room left for the
    literal ' - '. The same buffer then has to absorb the product string
    appended via snprintf(description + strlen(description), ...), which
    makes 256 too small to hold "manufacturer - product" anyway.
    
    Bumping description to 512 bytes silences the warning and gives the
    combined "manufacturer - product" line enough room without truncation
    under realistic USB string descriptors. The bounded snprintf calls
    keep the buffer safe regardless.
    
    Assisted-by: Claude:claude-opus-4-7

commit dd76a6630889e9b871bba8c572ae4f29095f6a92
Author: Ihor Dutchak <5939659+Youw@users.noreply.github.com>
Date:   Mon Apr 27 05:17:50 2026 +0000

    build: replace obsolete autoconf macros
    
    autoconf 2.70 emits deprecation warnings for AC_PROG_LIBTOOL,
    AC_TRY_LINK and AC_TRY_COMPILE and tells the user to run autoupdate.
    Apply the standard replacements so a fresh autogen.sh is quiet:
    
    * AC_PROG_LIBTOOL -> LT_INIT (libtool 2 spelling).
    * AC_TRY_LINK([prologue], [body], ...) ->
      AC_LINK_IFELSE([AC_LANG_PROGRAM([prologue], [body])], ...) in
      AU_CHECK_LIB_SONAME.
    * AC_TRY_COMPILE([prologue], [body], ...) ->
      AC_COMPILE_IFELSE([AC_LANG_PROGRAM([prologue], [body])], ...) in
      AU_HAVE_GNU_ERRNO_H.
    
    Behaviour is unchanged: SONAME detection still picks up
    libusb-1.0.so.0, the GNU errno.h probe still detects
    program_invocation_name, and the resulting library and examples
    build cleanly.
    
    Closes: #28
    Assisted-by: Claude:claude-opus-4-7

commit 8608a71654f9f61ff716b5d8aed805c540b25562
Merge: f16e0b3 46da511
Author: mcuee <xiaofanc@gmail.com>
Date:   Mon Apr 27 11:39:25 2026 +0800

    Merge pull request #31 from libusb/claude/fix-libusb-compat-issue-2wVhM
    
    Fix memory leaks in USB bus and device cleanup

commit 46da511fa8df89fbc767f14247c6c8f34def46be
Author: Claude <noreply@anthropic.com>
Date:   Sun Apr 26 15:14:16 2026 +0000

    gitignore: ignore the new hotplug_monitor example binary
    
    Matches the existing entries for examples/lsusb and examples/testlibusb.

commit 1d9a2a25cc2ad0c71da06bc9fc6e77647167361a
Author: Claude <noreply@anthropic.com>
Date:   Sun Apr 26 15:13:47 2026 +0000

    examples: add hotplug-monitor and a README
    
    hotplug-monitor polls usb_find_busses() and usb_find_devices() and
    prints the bus/device tree whenever either reports a change. It
    exercises the bus-removal path in usb_find_busses() and the device
    add/remove paths in usb_find_devices(), and on Ctrl-C exit the
    destructor runs so the absence of "device X.Y still referenced"
    warnings can be verified.
    
    The README documents lsusb, testlibusb, and hotplug_monitor; explains
    how to trigger device hot-plug (plug/unplug) and bus hot-plug (Linux
    PCI driver unbind/bind on the host controller); and shows how to
    verify reference accounting under LIBUSB_DEBUG and valgrind.
    
    Assisted-by: Claude:claude-opus-4-7

commit 756365e20dbccb6f331151af7e974f6a64d90e01
Author: Claude <noreply@anthropic.com>
Date:   Sun Apr 26 11:56:29 2026 +0000

    core: fix two more leaks in error paths
    
    After auditing the file alongside the destructor cleanup added earlier,
    two pre-existing leaks in error paths stand out and are in scope for
    the same series:
    
    * find_busses(): the malloc-failure goto err freed the partial bus list
      but left dev_list (allocated by libusb_get_device_list) untouched,
      leaking the array and one libusb ref per enumerated device. Free the
      list before returning.
    
    * usb_find_devices(): when initialize_device() failed, dev was left
      inside the function-local new_devices list. The next outer iteration
      resets new_devices to NULL, leaking the wrapper. We cannot use
      free_device() here -- depending on which point initialize_device
      failed at, dev->config is either uninitialized or already freed and
      no libusb ref has been taken. The wrapper malloc is the only thing
      outstanding, so just LIST_DEL and free(dev).
    
    Assisted-by: Claude:claude-opus-4-7
    
    https://claude.ai/code/session_01JdNX3ZQuo2ysAVSRJtxNPo

commit 5684120023a1fc52adc27f6f69338605f8b819ad
Author: Claude <noreply@anthropic.com>
Date:   Sun Apr 26 11:53:10 2026 +0000

    core: free dev->config in free_device to plug per-device leak
    
    Address Copilot review on PR #31. clear_device() walks each
    usb_config_descriptor and releases its nested allocations but never
    frees the config array itself, which initialize_device() allocates
    with malloc(). The error paths in initialize_device already pair
    clear_device(dev) with free(dev->config); free_device() must do the
    same so the new bus/device shutdown path actually releases all
    device-owned allocations.
    
    Assisted-by: Claude:claude-opus-4-7
    
    https://claude.ai/code/session_01JdNX3ZQuo2ysAVSRJtxNPo

commit 245350a2308b6d3335e7e667c44256c62f1aa2ed
Author: Claude <noreply@anthropic.com>
Date:   Sun Apr 26 11:44:53 2026 +0000

    core: release device refs in destructor to fix exit-time leaks (#25)
    
    NOTE: This patch was generated by an AI coding assistant (Claude). A
    human contributor should review the diagnosis and the change before
    merging. See the Assisted-by trailer below, per the format suggested
    in https://docs.kernel.org/process/coding-assistants.html.
    
    The destructor only called libusb_exit(ctx); it never walked usb_busses
    to free the usb_device wrappers populated by usb_find_devices(). Each
    wrapper holds a libusb_ref_device() taken in initialize_device(), so at
    process exit those refs are still outstanding and libusb_exit prints
    "device X.Y still referenced" warnings.
    
    Free the bus/device tree in _usb_exit before libusb_exit so each
    libusb_unref_device() in free_device() runs. The same helper also fixes
    the bus-removed branch in usb_find_busses, which previously freed the
    bus struct without freeing its devices.
    
    The ref/unref in initialize_device/free_device is intentionally kept:
    libusb_free_device_list(dev_list, 1) at the end of usb_find_devices
    drops the temporary refs, so without the extra ref taken here dev->dev
    would dangle for any device retained in bus->devices, causing
    use-after-free in usb_open() and elsewhere (this is what PR #30 missed).
    
    Assisted-by: Claude:claude-opus-4-7
    
    https://claude.ai/code/session_01JdNX3ZQuo2ysAVSRJtxNPo

commit f16e0b30dae41858ef976823e71a1bafd6ec11f9
Author: mcuee <xiaofanc@gmail.com>
Date:   Sat Apr 1 12:11:52 2023 +0800

    Revert Pull Request #26
    
    https://github.com/libusb/libusb/pull/1241 has been merged and libusb_init is not deprecated now in libusb.

commit c497eff1ae8c4cfd4fdff370f04c78fa0584f4f3
Merge: 9ef3f08 d54a104
Author: mcuee <xiaofanc@gmail.com>
Date:   Sun Feb 26 21:58:32 2023 +0800

    Merge pull request #27 from ycongal-smile/master
    
    autoconf: change SONAME detection source from ldd to objdump

commit 9ef3f0896212bbbe9aad1a7aa41addf44b8f5c7d
Merge: 3e8a88d d53f1ab
Author: mcuee <xiaofanc@gmail.com>
Date:   Sun Feb 26 21:58:01 2023 +0800

    Merge pull request #26 from mcuee/libusb_init_deprecate
    
    Change libusb_init to libusb_init_context for new version of libusb

commit d54a104c441cae40f2edf06f39563744f9929afe
Author: Yoann Congal <yoann.congal@smile.fr>
Date:   Tue Feb 21 00:15:23 2023 +0100

    autoconf: change SONAME detection source from ldd to objdump
    
    ldd detects used libraries by partially running the target binary. This
    is a problem for when the target binary is not runnable
    (e.g. cross-compilation).
    
    Switch to objdump which only reads info from the ELF file without
    running anything from it.
    
    Note: the output of objdump -p looks like this:
      [...]
      Dynamic Section:
        NEEDED               libusb-1.0.so.0
        NEEDED               libc.so.6
      [...]

commit d53f1ab0c51bcb0b9d6580094fed6cdd7392669f
Author: mcuee <xiaofanc@gmail.com>
Date:   Tue Jan 31 17:32:04 2023 +0800

    Change libusb_init to libusb_init_context for new version of libusb

commit 3e8a88d296b5405902c22d2ada61937bd9a89415
Author: mcuee <xiaofanc@gmail.com>
Date:   Fri Nov 18 13:30:08 2022 +0800

    Prepare for 0.1.8 release

commit a1d9745f46321acc9ec0287bec4f17145445d98a
Author: mcuee <xiaofanc@gmail.com>
Date:   Tue Nov 1 10:20:41 2022 +0800

    On to v0.1.8-rc1 release

commit 8f1b5d97237eedc72f1aa73d217aa63b79046abb
Merge: 88740f0 0ff8334
Author: mcuee <xiaofanc@gmail.com>
Date:   Tue Nov 1 10:12:44 2022 +0800

    Merge pull request #24 from mcuee/msys2_action
    
    Add MSYS2 mingw64 github action

commit 0ff8334a4633c227ade7f58e08b38fb3e543ffbe
Author: mcuee <xiaofanc@gmail.com>
Date:   Tue Nov 1 09:51:43 2022 +0800

    Add MSYS2 mingw64 github action

commit 88740f0fe497b473c8ef40093ab7daeebfb40eb6
Author: mcuee <xiaofanc@gmail.com>
Date:   Sun Oct 30 07:59:42 2022 +0800

    0.1.8 snapshot1 release
    
    Maybe we will go for rc1 soon.

commit 1107f94871ba6589c75e701536b215ebf2ac9638
Merge: dcf9074 e322761
Author: mcuee <xiaofanc@gmail.com>
Date:   Sat Oct 29 21:36:46 2022 +0800

    Merge pull request #16 from Florin-Popescu/master
    
    Fix empty else in configure script

commit dcf90744e856f300b170e7445d8a3ea69454686e
Merge: 287cd99 283c604
Author: mcuee <xiaofanc@gmail.com>
Date:   Sat Oct 29 21:33:49 2022 +0800

    Merge pull request #13 from ffontaine/master
    
    fix a build issue on linux

commit 287cd999582cc2d9ea7747f32c2b9b83f4a397e1
Author: mcuee <xiaofanc@gmail.com>
Date:   Sat Oct 29 20:44:30 2022 +0800

    Create linux.yml

commit 971899293da7dc92b1a71da822af1a01e376dc01
Author: mcuee <xiaofanc@gmail.com>
Date:   Sat Oct 29 20:36:36 2022 +0800

    Add macOS github action

commit e04506f66ab69c4fc5160c418b988b16a9c45e2f
Author: mcuee <xiaofanc@gmail.com>
Date:   Sat Oct 29 20:34:40 2022 +0800

    Delete .travis.yml
    
    This is outdated.

commit e3227615663d310f5b9c1cd3cc17118a93041684
Author: Florin Popescu <florinsgpopescu@gmail.com>
Date:   Fri Feb 12 04:11:56 2021 +0200

    Fix empty else in configure script

commit 283c604d3d3b44004ff46cad9b3b98b1fcc94f51
Author: Fabrice Fontaine <fontaine.fabrice@gmail.com>
Date:   Thu Feb 28 19:57:20 2019 +0100

    fix a build issue on linux
    
    On linux PATH_MAX is defined in linux/limits.h. If we include usb.h
    without previously having indirectly included it, the build fails.
    
    Signed-off-by: Bartosz Golaszewski <brgl@bgdev.pl>
    [Retrieved from:
    https://git.buildroot.net/buildroot/tree/package/libusb-compat/0002-fix-a-build-issue-on-linux.patch]
    Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>

commit b5db9d011728e957ec87f38a4dcf07cd464ac003
Merge: 4a27760 3db2078
Author: Nathan Hjelm <hjelmn@cs.unm.edu>
Date:   Wed Aug 22 18:26:01 2018 -0600

    Merge pull request #10 from trabucayre/master
    
    use stdint uintxx_t instead of u_intxx_t

commit 4a27760ec5954ec8605e052a3207afbe0979eeef
Author: Nathan Hjelm <hjelmn@me.com>
Date:   Sun Aug 19 18:41:46 2018 -0600

    screwed up v0.1.6 tag so move on to v0.1.7 (minor release)
    
    Signed-off-by: Nathan Hjelm <hjelmn@me.com>

commit 2e9844673c8f2a326261bc5207c4a9d75c6d85bc
Author: mcuee <xiaofanc@gmail.com>
Date:   Fri Jun 15 11:43:52 2018 +0800

    Update README to be in sync with libusb
    
    Change the homepage

commit 92deb38f4bb4f505d4234bff7d59ce5831c52d2c
Author: Nathan Hjelm <hjelmn@lanl.gov>
Date:   Thu Aug 25 12:42:05 2016 -0600

    travis: make sure examples are built
    
    Signed-off-by: Nathan Hjelm <hjelmn@mac.com>

commit f636cdc871f210719fa0baa6d7b14a8712144e80
Author: Nathan Hjelm <hjelmn@lanl.gov>
Date:   Thu Aug 25 12:37:48 2016 -0600

    opps, fix travis.
    
    Signed-off-by: Nathan Hjelm <hjelmn@mac.com>

commit 08d8563f60c65ad18fd5127ce662ec6ad3c7240e
Author: Nathan Hjelm <hjelmn@lanl.gov>
Date:   Thu Aug 25 12:35:12 2016 -0600

    Add travis yml file
    
    Signed-off-by: Nathan Hjelm <hjelmn@lanl.gov>

commit 54332552a1a7df052c318b09f939fbbd0f6b05a4
Author: Nathan Hjelm <hjelmn@lanl.gov>
Date:   Thu Aug 25 11:03:15 2016 -0600

    on to 0.1.6-rc2
    
    Signed-off-by: Nathan Hjelm <hjelmn@mac.com>

commit eaed7b8f11badaf07a91e07538f6e8842f59eaab
Author: Nathan Hjelm <hjelmn@lanl.gov>
Date:   Thu Aug 25 10:59:37 2016 -0600

    core: fix dlopen interception of libusb-1.0 functions
    
    This commit fixes a bug introduced in 0.1.6rc1 that caused a linking
    error on looking for libusb_control_transfer. This function is called
    in two inline functions from libusb.h: libusb_get_descriptor, and
    libusb_get_string_descriptor. Because the call is in an inline
    function the #define's that overwrite the libusb_* calls do not
    apply. I copied these functions into libusb-dload.h to fix the
    bug. This is not a clean solution but will suffice for 0.1.6.
    
    Signed-off-by: Nathan Hjelm <hjelmn@mac.com>

commit 272388e744cae3ac720a0c2592d2b75e3a93e412
Author: Nathan Hjelm <hjelmn@me.com>
Date:   Fri Oct 9 16:00:10 2015 -0600

    add git ignores
    
    Signed-off-by: Nathan Hjelm <hjelmn@me.com>

commit a13f0208ce297cf5cd75b726a9f2133c892a30c1
Author: Nathan Hjelm <hjelmn@me.com>
Date:   Fri Oct 9 15:52:24 2015 -0600

    update NEWS and add ChangeLog
    
    Signed-off-by: Nathan Hjelm <hjelmn@me.com>

commit 5c2ad5409419c28b8e52a8d4e6cada405ddc3bc4
Author: Nathan Hjelm <hjelmn@me.com>
Date:   Fri Oct 9 15:42:54 2015 -0600

    tag the 0.1.6-rc1 release
    
    Signed-off-by: Nathan Hjelm <hjelmn@me.com>

commit e6a2d1b18ac86714b219a1ed1bcee08b169bffd9
Author: Ray Donnelly <mingw.android@gmail.com>
Date:   Tue Jan 20 19:30:30 2015 +0000

    Add -no-undefined to LDFLAGS
    
    As otherwise libtool won't build Win32 DLLs
    
    Signed-off-by: Nathan Hjelm <hjelmn@me.com>

commit ded6bf77758415ca56e4825036f00eb31750c3df
Author: Ray Donnelly <mingw.android@gmail.com>
Date:   Tue Jan 20 19:29:55 2015 +0000

    Add some missing definitions
    
    Needed for Win32
    
    Signed-off-by: Nathan Hjelm <hjelmn@me.com>

commit 2e9b6bbebb7cf1ef0095516ec6d5203deb3822e8
Author: Nathan Hjelm <hjelmn@me.com>
Date:   Fri Oct 9 15:03:10 2015 -0600

    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.
    
    Signed-off-by: Gwenhael Goavec-Merou <gwenhael.goavec-merou@trabucayre.com>
    Signed-off-by: Nathan Hjelm <hjelmn@me.com>

commit b6f5a2fe12ca19d658d7180e106254b31cf1f8f5
Author: Stanislav Brabec <sbrabec@suse.cz>
Date:   Tue May 12 17:19:05 2015 +0200

    Prevent libusb-1.0 library symbol clash
    
    libusb-1.0 uses functions like libusb_open. These names are generic, and
    there are applications using libusb-0.1 using these names for its own
    functions (e. g. scanbuttond). If such applications uses libusb-compat,
    it crashes due to symbol clash.
    
    Such clash is easy to fix in Open Source applications, but impossible to
    fix inside closed source applications.
    
    Dynamic linker does not allow to hide symbols from dependent library.
    This could be worked around by loading this library later by dlopen()
    with RTLD_LOCAL flag.
    
    Do this on platforms where it can be done.
    
    This change makes visible only libusb-0.1 symbols but not libusb-1.0
    symbols.
    
    (It could be theoretically possible to introduce clashes with libdl, but
    it is much less probable.)
    
    How to reproduce:
    
    Take testlibusb.c from libusb-0.1.12/tests and replace print_device
    by libusb_open. Without this change the application crashes.
    
    Reference:
    https://bugzilla.opensuse.org/show_bug.cgi?id=596411
    
    Signed-off-by: Stanislav Brabec <sbrabec@suse.cz>
    Signed-off-by: Nathan Hjelm <hjelmn@me.com>

commit 3db2078a86c5dbed3d7341cf1bc87290d6f63c58
Author: Gwenhael Goavec-Merou <gwenhael.goavec-merou@trabucayre.com>
Date:   Mon Sep 21 10:57:44 2015 +0200

    use stdint uintxx_t instead of u_intxx_t

commit 072a5e4ee6a2658d8f422a707115fb36f3e6f959
Author: Nathan Hjelm <hjelmn@me.com>
Date:   Tue Feb 25 23:10:01 2014 -0700

    Add a library destructor to handle cleaning up libusb.
    
    References #6

commit 929029867c3d42ef759e3a5f6290250ecc7ebf58
Author: Nathan Hjelm <hjelmn@me.com>
Date:   Tue Feb 25 22:52:23 2014 -0700

    Revert "Link with -znodelete to disallow unloading"
    
    -znodelete is causing problems on Darwin. We will use a library destructor
    function to ensure proper cleanup.
    
    This reverts commit 89a55e84b390225d2ad47a300191770e95307f05.

commit eb590b4dac00a5188b93e1d6ebdd60b06f9ab3d7
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Thu Feb 13 17:25:27 2014 +0100

    Revert "use atexit() to call libusb_exit()"
    
    The use of atexit() breaks various users of libusb-compat,
    see ie: https://bugzilla.redhat.com/show_bug.cgi?id=1003193
    
    This reverts commit 0be16b8dd25733d242ae32b57823a9513ec21353.
    
    Closes libusbx/libusb-compat-0.1#2
    
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>

commit 89a55e84b390225d2ad47a300191770e95307f05
Author: Daniel Berrange <berrange@redhat.com>
Date:   Wed Aug 14 16:00:56 2013 +0200

    Link with -znodelete to disallow unloading
    
    Since libusb-0.1 did not have any init / exit function, code using the
    libusb-0.1 API will not call libusb_exit.
    
    Now, libgphoto uses libusb and will dlopen() and dlclose() it. Unfortunately
    since there is no way to ensure libusb_exit() is called, when libgphoto
    dlcloses the libusb.so library, the thread from libusbx.so will not be
    stopped. So a thread will remain running, executing code from a memory
    region that has now been freed. Crash-tastic results ensue.
    
    I don't see a good way to fix this from libusb or libusbx, given the need to
    preserve the existing API of libusb.
    
    If, however, we link libusb.so using  -znodelete, we will prevent it from
    ever being unloaded, despite the dlclose() calls. This is not ideal, but
    better than allowing it to be unloaded which is a guaranteed crash.
    
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>

commit 8fc7a4f671833d7142e632517d25d0015b648c3c
Author: Nathan Hjelm <hjelmn@me.com>
Date:   Thu May 23 19:11:16 2013 -0600

    Update news for 0.1.5

commit cab33bcf07541d1a36e1e9d4ec75a3c080e98b2d
Author: Nathan Hjelm <hjelmn@me.com>
Date:   Mon May 20 17:34:02 2013 -0600

    libusb-compat-0.1.5

commit 86dafa1443aef6fb9df50734df7b6e2240de4d9c
Author: Nathan Hjelm <hjelmn@me.com>
Date:   Mon May 20 17:33:43 2013 -0600

    Add bootstrap.sh and do not set debug mode by default.

commit 72dc8b5987580c73e5df14cc330cea72b0f5a827
Author: Nathan Hjelm <hjelmn@me.com>
Date:   Mon May 20 17:32:43 2013 -0600

    Replace the deprecated INCLUDES token with AM_CPPFLAGS in Makefile.am

commit 70083af73554fec63fa4c13b0211b4d5ddf5a8cd
Author: Brad Smith <brad@comstyle.com>
Date:   Fri Aug 24 17:13:11 2012 -0400

    libusb.pc.in: Add missing Requires.private: libusb-1.0 so that pkg-config adds the libusb 1.0 library and dependencies when static linking.

commit 0be16b8dd25733d242ae32b57823a9513ec21353
Author: Nathan Hjelm <hjelmn@cs.unm.edu>
Date:   Thu Apr 4 10:53:42 2013 -0600

    use atexit() to call libusb_exit()
    
    Fixes #130

commit f52bc041ccadbc72860fcc3409e915121f6a22ac
Author: Nathan Hjelm <hjelmn@cs.unm.edu>
Date:   Thu Apr 4 10:53:01 2013 -0600

    fix autoconf errors/warnings
    
    Fixes #161

commit b2200bea0cf009f4ca31717b588e3c78bbda4e96
Author: Xiaofan Chen <xiaofanc@gmail.com>
Date:   Sun May 13 19:50:38 2012 +0800

    examples: Link only with ../libusb/libusb.la and not with -lusb
    
    Similar to libusb.git commit 93b0e09d53ed1d177631af9182378492481a790a
    http://git.libusb.org/?p=libusb.git;a=commitdiff;h=93b0e09d53ed1d177631af918
    
    Previous _LDFLAGS included both the freshly built libusb in ../libusb
    and -lusb, where libtool would usually resolve the latter to an
    already-installed libusb library in the system. The extra reference
    to a second libusb library may cause failures to build examples
    on some platforms and is wrong.
    
    Fixes #135.

commit 96aed2f7963d4a55d575a701adce8e64c0ae89fb
Author: Peter Stuge <peter@stuge.se>
Date:   Tue Apr 24 07:27:08 2012 +0200

    libusb-compat-0.1.4

commit 2ec4b60bc6394356975757b754e2b52b1dc17bb8
Author: Peter Stuge <peter@stuge.se>
Date:   Tue Apr 24 07:21:54 2012 +0200

    README: Add Peter Stuge and remove Daniel Drake

commit 2236a36fe8acdf1bc74239e5dae4d4cad4f679be
Author: Peter Stuge <peter@stuge.se>
Date:   Tue Apr 24 07:20:58 2012 +0200

    README: Update libusb homepage URL

commit 1e00ab3f042a8d37558e321e3240df514b6d9d81
Author: Peter Stuge <peter@stuge.se>
Date:   Tue Apr 24 07:43:39 2012 +0200

    examples/Makefile.am: -I$(top_srcdir)/libusb to reach usb.h properly

commit 983fabd544ca9879d8901f05e286a674db97070e
Author: Stanislav Brabec <sbrabec@suse.cz>
Date:   Wed Apr 4 17:44:24 2012 +0200

    Fix #42 usb_detach_kernel_driver_np() error mapping
    
    usb_detach_kernel_driver_np() from libusb-compat-0.1 returns different
    error messages than the old libusb-0.1. It causes problems for drivers
    that expect exact error code.
    
    Convert libusb-1.0 errors back to libusb-0.1 errors to get 1:1 mapping
    of kernel error codes.
    
    Affected software:
    lirc-0.8.7/daemons/hw_srm7500libusb.c: srm7500_initialize_usbdongle()
    The function continues if usb_detach_kernel_driver_np() finishes with
    no error or if it returns -ENODATA. But libusb-compat-0.1 used to
    return -ENOENT and the driver considers this error as fatal.
    
    Upstream bug reference:
    http://libusb.org/ticket/42
    Upstream mailing list reference:
    http://marc.info/?m=133355454809642
    Downstream bug reference:
    https://bugzilla.novell.com/show_bug.cgi?id=683307

commit 284235b7e71978f2c2068fbd66698bc4c6770559
Author: Peter Stuge <peter@stuge.se>
Date:   Tue Apr 24 06:15:35 2012 +0200

    autogen.sh: Try to use libtoolize before trying glibtoolize
    
    This helps on Mac OS X where an old glibtoolize is included in the
    system and newer, manually installed, versions provide libtoolize.
    
    See also http://marc.info/?m=132490560131894
    
    libusb.git commit 3df437680f8f5406795ec5f32d96612d327b2ca4

commit 1aa067b7d2ab313096bdc16b5a3aa050971b14d5
Author: Peter Stuge <peter@stuge.se>
Date:   Tue Apr 24 07:36:47 2012 +0200

    Silence warnings: passing argument 3 of 'usb_*_io' discards qualifiers

commit ab21a0312fe2df754fd7a4cf4c45050233ee443d
Author: Ludovic Rousseau <ludovic.rousseau+github@gmail.com>
Date:   Tue May 3 11:12:13 2011 +0200

    Use const for read only buffers
    
    Change the usb_bulk_write() and usb_interrupt_write() API to use
    "const char *bytes" for read only buffers (data sent to the device).
    
    See Debian bug #473814
    "libusb: Please use const where appropriate in headers"
    http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=473814
    
    [stuge: Also change actual function definitions]

commit ccb66689c0e04db4ac8474e573ca2e5f055f5d7b
Author: Daniel Drake <dan@reactivated.net>
Date:   Tue Jun 22 18:19:15 2010 -0500

    Add log message for open permission denied errors
    
    This message was previously in libusb but is being removed (ticket #44).
    Move it here so that this caveat (also documented in README) is more
    obvious.

commit cbfeff38e3a10b9e28a575a47e39b2311f38ce9a
Author: Ludovic Rousseau <rousseau@debian.org>
Date:   Sun Oct 25 10:33:02 2009 +0100

    testlibusb warning fixes
    
    testlibusb.c:14: warning: no previous prototype for 'print_endpoint'
    testlibusb.c:24: warning: no previous prototype for 'print_altsetting'
    testlibusb.c:40: warning: no previous prototype for 'print_interface'
    testlibusb.c:48: warning: no previous prototype for 'print_configuration'
    testlibusb.c:63: warning: no previous prototype for 'print_device'

commit 511324a538a034f7f0766b7689ed50ed4e21ee43
Author: Daniel Drake <dsd@gentoo.org>
Date:   Thu Sep 17 23:49:53 2009 +0545

    Document breakage from internal handle structure change
    
    Code exists which expects usb_dev_handle to always have the same
    contents as it did in libusb-0.1.12. Such code will not work with the
    compat layer since the structure has changed.

commit 713a4c3c2097e6d060d41718b2005490dfd7c71c
Author: Daniel Drake <dsd@gentoo.org>
Date:   Thu Jul 9 22:15:32 2009 +0100

    v0.1.3 release

commit 3874dfa6141e0e4cee8ccc6c3d4ff522698ebd7d
Author: John Smith <john@smith.com>
Date:   Thu Jul 9 22:13:45 2009 +0100

    Improve libusb-config for cross-compiling (SF#2809877)
    
    The sed applied to this file only affects to assignments that happen
    at the start of the line.
    
    This fixes cross compiling for OpenWRT, etc.

commit 15bf9b0a2d3fed8f0fe69d002a4fcd0140679f2d
Author: Kyle McKay <mackyle@gmail.com>
Date:   Fri Jun 19 22:11:02 2009 +0100

    Improved error code compatibility
    
    libusb-1.0 can return result codes 0, -1 through -12 and -99.  The old
    libusb-0.1 software was always returning the negative of an errno.h
    error code.
    
    Unfortunately the current version of libusb-compat passes through some
    of the libusb-1.0 error codes unchanged.  (Some of the error codes are
    translated for some functions and different ones for other functions
    but plenty are not translated.)
    
    The patch attached to the below bug report makes sure all libusb-1.0
    error codes are translated into the libusb-0.1 equivalent negative of
    an errno.h define value.  Additionally, this patch makes sure that
    errno is always being set as some callers of libusb-0.1 expect that to
    be the case.  Finally since errno is now always being set by libusb-
    compat, the implementation of usb_strerror is changed to return
    strerror(errno) instead of the unhelpful "Unknown error".

commit 3ffc1160f0599ceb503aa2e0dbbf51a5b72bb9b9
Author: Daniel Drake <dsd@gentoo.org>
Date:   Thu Jun 11 23:50:59 2009 +0100

    v0.1.2 release

commit 29af8617ad6d460c3bff927f17c4938dab8f10d3
Author: Daniel Drake <dsd@gentoo.org>
Date:   Fri May 29 12:28:05 2009 -0400

    Better handling of library initialization failure

commit f0909ef85c5bf2ee8655864041e5e0453adc9ff0
Author: Daniel Drake <dsd@gentoo.org>
Date:   Thu May 28 09:28:50 2009 -0400

    v0.1.1 release

commit b090e024b9dbd8d94ba6f2b6eeb629d3fd461d6e
Author: Stanislav Brabec <sbrabec@suse.cz>
Date:   Wed May 27 15:39:54 2009 -0400

    Sanitize more endpoint addresses
    
    For maximum compatibility, this makes libusb-compat-0.1 behave like
    libusb-0.1 on BSD, where endpoint addresses are sanitized for all control
    and bulk transfers. (Linux and Darwin also sanitize some of these)

commit cf9ce427f4bb62b7d575b70b299f1a582fb1baa1
Author: Daniel Drake <dsd@gentoo.org>
Date:   Sat Dec 13 20:30:54 2008 +0000

    v0.1.0 release

commit c2ffa94cbcab67324aebc1b32dad69f875b6481a
Author: Daniel Drake <dsd@gentoo.org>
Date:   Sat Dec 13 20:25:27 2008 +0000

    Document the danger of forcefully killing threads
    
    Ludovic Rousseau has explained that he achieved transfer cancellation in
    libusb-0.1 by running each transfer in it's own thread, and forcefully
    killing the thread when he doesn't want the transfer any more.
    
    This bad programming practice is imposed by libusb-0.1 not offering any
    way to cancel ongoing transfers. Someone should rewrite libusb-0.1 to
    avoid this limitation. Oh, wait...
    
    Killing libusb-1.0 threads while they are event handling will often
    result in I/O halt. Document this in the README.

commit 14e5a692c62c07e9698e5b51b4da5f48a7da1912
Author: Daniel Drake <dsd@gentoo.org>
Date:   Fri Nov 21 16:52:42 2008 +0000

    v0.1.0-beta3 release

commit 8cc08f2c34f0efb809b98b4704e70a3c350cc9a1
Author: Daniel Drake <dsd@gentoo.org>
Date:   Sun Aug 10 17:05:08 2008 -0500

    Allow usb_set_debug before usb_init()
    
    Xiofan Chen reports that this worked on libusb-0.1.
    Also fix NULL initialization of ctx.

commit 0dc6967ca823d177503fe91de67de9801496cfec
Author: Daniel Drake <dsd@gentoo.org>
Date:   Sat Jun 28 21:35:11 2008 -0500

    v0.1.0-beta2 release

commit 788e70c700d1d3a00e9deee67aa24b7c920650e2
Author: Daniel Drake <dsd@gentoo.org>
Date:   Sat Jun 28 21:33:09 2008 -0500

    Update to new libusb context API

commit 7999d97c699493da2e04fa7e9cd9bfe4e080c49f
Author: Daniel Drake <dsd@gentoo.org>
Date:   Tue Jun 17 18:19:16 2008 -0500

    Fixup read endpoint addresses
    
    This doesn't make much sense, but libusb-0.1 does it, so we will do it
    too.

commit fcf3834702d6dab8ce1181678131376f1badd62d
Author: Daniel Drake <dsd@gentoo.org>
Date:   Mon May 26 00:05:32 2008 +0100

    v0.1.0-beta1 release

commit c7746a0c411b2e4edec178d1ae7783d40152bc7b
Author: Daniel Drake <dsd@gentoo.org>
Date:   Fri May 23 16:01:18 2008 +0100

    link usb_set_debug to libusb_set_debug

commit 1c59b329f3f4f8644011b37414695df2c5e54586
Author: Daniel Drake <dsd@gentoo.org>
Date:   Fri May 23 15:32:30 2008 +0100

    don't log anything by default
    
    Only log messages if the user asked for them using usb_set_debug()
    
    Ludovic Rousseau pointed out that library users may close stdout/stderr
    and those file descriptors may be reused for other things.

commit fa323490e8e66fe0e95e1545d0c921e947ed6f93
Author: Daniel Drake <dsd@gentoo.org>
Date:   Tue May 20 16:27:17 2008 +0100

    Update for new libusb_open API
    
    Pointed out by Soumen Mondal

commit c5c6684c06bcf8e922601fc1c0d994552abf1e92
Author: Daniel Drake <dsd@gentoo.org>
Date:   Mon May 19 16:15:17 2008 +0100

    Add emulation info to pkg-config file
    
    Ludovic Rousseau requested a way of distinguishing between
    libusb-compat-0.1 and the real libusb-0.1, and suggested this approach.
    
    You can access this info through pkg-config e.g.:
            pkg-config --variable=emulated libusb

commit 49057f6ce5cd4d51e31594f290b2dd3c9f1dbaf8
Author: Daniel Drake <dsd@gentoo.org>
Date:   Mon May 19 15:21:04 2008 +0100

    Pretend to be libusb-0.1.12
    
    Pointed out by Ludovic Rousseau: some programs check for specific libusb
    versions, so pretend to be v0.1.12.

commit 727fe5651bfcdd789c2ea4ce462df398b4cacc69
Author: Daniel Drake <dsd@gentoo.org>
Date:   Fri May 16 23:38:46 2008 +0100

    remove FIXME about parent-child relationships
    
    Doesn't seem worth this holding things up.

commit 2b6bdd1aeca38bb4211b704fd76faa0f41272807
Author: Daniel Drake <dsd@gentoo.org>
Date:   Sat May 10 22:17:26 2008 +0100

    Update for new descriptors API

commit bb248deecfc6b7718ef849ad9f3f394483d429c8
Author: Daniel Drake <dsd@gentoo.org>
Date:   Sat May 10 15:36:54 2008 +0100

    update for new libusb configuration API

commit b8893bca200a24acbda8ba9d2816da743e8783a0
Author: Daniel Drake <dsd@gentoo.org>
Date:   Mon May 5 16:33:37 2008 +0100

    match error reporting better, and handle endpoint halts

commit f06d81be9634a0b160caa11cd66f7fcc9354b28a
Author: Daniel Drake <dsd@gentoo.org>
Date:   Mon May 5 16:32:47 2008 +0100

    make log function static

commit a390eee8402634f5ecefc617832af1b4fd8af2ee
Author: Daniel Drake <dsd@gentoo.org>
Date:   Mon May 5 15:13:40 2008 +0100

    add usb_set_debug
    
    Pointed out by Xiaofan Chen

commit c062b2b41183d98ac8a5f568d84472b422ec8285
Author: Daniel Drake <dsd@gentoo.org>
Date:   Mon May 5 15:11:36 2008 +0100

    populate bus->dirname and dev->filename
    
    lsusb uses these. Problem spotted by Xiaofan Chen

commit 71225af5613d512b3a26ed94410f6d6ed2cebb30
Author: Daniel Drake <dsd@gentoo.org>
Date:   Mon May 5 00:37:12 2008 +0100

    fix timeout handling for bulk/interrupt IO

commit 2bb614e567d921a80224139b01742b718f8d420a
Author: Daniel Drake <dsd@gentoo.org>
Date:   Sun May 4 17:29:15 2008 +0100

    implement a couple more functions

commit 1ad492d8b46e4b41f5193f461ec356ec95368875
Author: Daniel Drake <dsd@gentoo.org>
Date:   Sun May 4 17:18:11 2008 +0100

    installation fixes

commit 89dde2002fc4f08a5b90bd7e143c6ec06d86d279
Author: Daniel Drake <dsd@gentoo.org>
Date:   Sun May 4 16:55:50 2008 +0100

    add testlibusb example from libusb-0.1

commit b9478137cb8a6f4a6ba758c3b3d3bc5173a623d8
Author: Daniel Drake <dsd@gentoo.org>
Date:   Sun May 4 16:53:45 2008 +0100

    implement usb_get_driver_np() and usb_detach_kernel_driver_np()

commit eae1ee2b7bac39f408a9ee61f1e3a80e6425e483
Author: Daniel Drake <dsd@gentoo.org>
Date:   Sun May 4 16:28:32 2008 +0100

    control transfer functions

commit 493e756b5b08ba98b612679bcc210d87c20859f0
Author: Daniel Drake <dsd@gentoo.org>
Date:   Sun May 4 14:25:28 2008 +0100

    bulk and interrupt I/O

commit ce86f26e5d8f49001cee79a40b0baebbcc965d1d
Author: Daniel Drake <dsd@gentoo.org>
Date:   Sun May 4 14:11:28 2008 +0100

    Implement remaining device operations

commit 78740a7b8f537bc3d6b6c0c09368be453ff3c4d9
Author: Daniel Drake <dsd@gentoo.org>
Date:   Sun May 4 01:15:50 2008 +0100

    implement some device operations

commit 7d7cb91be1307aa6e56c0534e3fba20afc45977d
Author: Daniel Drake <dsd@gentoo.org>
Date:   Sun May 4 00:59:56 2008 +0100

    Initial commit
