libusb 0.4.0 → 0.4.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (118) hide show
  1. data/.travis.yml +2 -2
  2. data/Gemfile +0 -8
  3. data/History.md +5 -0
  4. data/README.md +6 -6
  5. data/Rakefile +9 -9
  6. data/ext/extconf.rb +1 -1
  7. data/ext/{libusbx-1.0.17 → libusb-1.0.18}/AUTHORS +10 -0
  8. data/ext/{libusbx-1.0.17 → libusb-1.0.18}/COPYING +0 -0
  9. data/ext/{libusbx-1.0.17 → libusb-1.0.18}/ChangeLog +17 -9
  10. data/ext/{libusbx-1.0.17 → libusb-1.0.18}/INSTALL +0 -0
  11. data/ext/{libusbx-1.0.17 → libusb-1.0.18}/Makefile.am +0 -0
  12. data/ext/{libusbx-1.0.17 → libusb-1.0.18}/Makefile.in +153 -178
  13. data/ext/libusb-1.0.18/NEWS +2 -0
  14. data/ext/{libusbx-1.0.17 → libusb-1.0.18}/PORTING +13 -13
  15. data/ext/{libusbx-1.0.17 → libusb-1.0.18}/README +9 -11
  16. data/ext/libusb-1.0.18/TODO +2 -0
  17. data/ext/{libusbx-1.0.17 → libusb-1.0.18}/Xcode/common.xcconfig +3 -3
  18. data/ext/{libusbx-1.0.17 → libusb-1.0.18}/Xcode/config.h +0 -0
  19. data/ext/{libusbx-1.0.17 → libusb-1.0.18}/Xcode/debug.xcconfig +2 -2
  20. data/ext/{libusbx-1.0.17/Xcode/libusbx.xcconfig → libusb-1.0.18/Xcode/libusb.xcconfig} +2 -2
  21. data/ext/libusb-1.0.18/Xcode/libusb.xcodeproj/project.pbxproj +1 -0
  22. data/ext/{libusbx-1.0.17/Xcode/libusbx_debug.xcconfig → libusb-1.0.18/Xcode/libusb_debug.xcconfig} +3 -3
  23. data/ext/{libusbx-1.0.17/Xcode/libusbx_release.xcconfig → libusb-1.0.18/Xcode/libusb_release.xcconfig} +3 -3
  24. data/ext/{libusbx-1.0.17 → libusb-1.0.18}/Xcode/release.xcconfig +2 -2
  25. data/ext/{libusbx-1.0.17/m4/libtool.m4 → libusb-1.0.18/aclocal.m4} +1731 -27
  26. data/ext/{libusbx-1.0.17 → libusb-1.0.18}/android/README +0 -0
  27. data/ext/{libusbx-1.0.17 → libusb-1.0.18}/android/config.h +1 -10
  28. data/ext/{libusbx-1.0.17 → libusb-1.0.18}/android/jni/Android.mk +0 -0
  29. data/ext/{libusbx-1.0.17 → libusb-1.0.18}/android/jni/Application.mk +6 -1
  30. data/ext/{libusbx-1.0.17 → libusb-1.0.18}/android/jni/examples.mk +0 -0
  31. data/ext/{libusbx-1.0.17 → libusb-1.0.18}/android/jni/libusb.mk +0 -0
  32. data/ext/{libusbx-1.0.17 → libusb-1.0.18}/android/jni/tests.mk +0 -0
  33. data/ext/{libusbx-1.0.17 → libusb-1.0.18}/compile +3 -7
  34. data/ext/{libusbx-1.0.17 → libusb-1.0.18}/config.guess +19 -24
  35. data/ext/{libusbx-1.0.17 → libusb-1.0.18}/config.h.in +0 -0
  36. data/ext/{libusbx-1.0.17 → libusb-1.0.18}/config.sub +30 -47
  37. data/ext/{libusbx-1.0.17 → libusb-1.0.18}/configure +118 -172
  38. data/ext/{libusbx-1.0.17 → libusb-1.0.18}/configure.ac +24 -2
  39. data/ext/{libusbx-1.0.17 → libusb-1.0.18}/depcomp +186 -268
  40. data/ext/{libusbx-1.0.17 → libusb-1.0.18}/doc/Makefile.am +1 -1
  41. data/ext/{libusbx-1.0.17 → libusb-1.0.18}/doc/Makefile.in +36 -73
  42. data/ext/{libusbx-1.0.17 → libusb-1.0.18}/doc/doxygen.cfg.in +1 -1
  43. data/ext/{libusbx-1.0.17 → libusb-1.0.18}/examples/Makefile.am +0 -0
  44. data/ext/{libusbx-1.0.17 → libusb-1.0.18}/examples/Makefile.in +68 -132
  45. data/ext/{libusbx-1.0.17 → libusb-1.0.18}/examples/dpfp.c +1 -1
  46. data/ext/{libusbx-1.0.17 → libusb-1.0.18}/examples/dpfp_threaded.c +1 -1
  47. data/ext/{libusbx-1.0.17 → libusb-1.0.18}/examples/ezusb.c +57 -26
  48. data/ext/{libusbx-1.0.17 → libusb-1.0.18}/examples/ezusb.h +0 -0
  49. data/ext/{libusbx-1.0.17 → libusb-1.0.18}/examples/fxload.c +3 -3
  50. data/ext/{libusbx-1.0.17 → libusb-1.0.18}/examples/getopt/getopt.c +0 -0
  51. data/ext/{libusbx-1.0.17 → libusb-1.0.18}/examples/getopt/getopt.h +0 -0
  52. data/ext/{libusbx-1.0.17 → libusb-1.0.18}/examples/getopt/getopt1.c +0 -0
  53. data/ext/{libusbx-1.0.17 → libusb-1.0.18}/examples/hotplugtest.c +9 -2
  54. data/ext/{libusbx-1.0.17 → libusb-1.0.18}/examples/listdevs.c +1 -1
  55. data/ext/{libusbx-1.0.17 → libusb-1.0.18}/examples/sam3u_benchmark.c +0 -0
  56. data/ext/{libusbx-1.0.17 → libusb-1.0.18}/examples/xusb.c +20 -4
  57. data/ext/{libusbx-1.0.17 → libusb-1.0.18}/install-sh +7 -7
  58. data/ext/{libusbx-1.0.17 → libusb-1.0.18}/libusb-1.0.pc.in +1 -1
  59. data/ext/{libusbx-1.0.17 → libusb-1.0.18}/libusb/Makefile.am +1 -1
  60. data/ext/{libusbx-1.0.17 → libusb-1.0.18}/libusb/Makefile.in +94 -134
  61. data/ext/{libusbx-1.0.17 → libusb-1.0.18}/libusb/core.c +95 -74
  62. data/ext/{libusbx-1.0.17 → libusb-1.0.18}/libusb/descriptor.c +2 -2
  63. data/ext/{libusbx-1.0.17 → libusb-1.0.18}/libusb/hotplug.c +3 -3
  64. data/ext/{libusbx-1.0.17 → libusb-1.0.18}/libusb/hotplug.h +1 -1
  65. data/ext/{libusbx-1.0.17 → libusb-1.0.18}/libusb/io.c +127 -116
  66. data/ext/{libusbx-1.0.17 → libusb-1.0.18}/libusb/libusb-1.0.def +0 -0
  67. data/ext/{libusbx-1.0.17 → libusb-1.0.18}/libusb/libusb-1.0.rc +1 -1
  68. data/ext/{libusbx-1.0.17 → libusb-1.0.18}/libusb/libusb.h +42 -39
  69. data/ext/{libusbx-1.0.17 → libusb-1.0.18}/libusb/libusbi.h +20 -11
  70. data/ext/{libusbx-1.0.17 → libusb-1.0.18}/libusb/os/darwin_usb.c +20 -16
  71. data/ext/{libusbx-1.0.17 → libusb-1.0.18}/libusb/os/darwin_usb.h +1 -1
  72. data/ext/{libusbx-1.0.17 → libusb-1.0.18}/libusb/os/linux_netlink.c +0 -0
  73. data/ext/{libusbx-1.0.17 → libusb-1.0.18}/libusb/os/linux_udev.c +0 -0
  74. data/ext/{libusbx-1.0.17 → libusb-1.0.18}/libusb/os/linux_usbfs.c +15 -12
  75. data/ext/{libusbx-1.0.17 → libusb-1.0.18}/libusb/os/linux_usbfs.h +0 -0
  76. data/ext/{libusbx-1.0.17 → libusb-1.0.18}/libusb/os/netbsd_usb.c +2 -4
  77. data/ext/{libusbx-1.0.17 → libusb-1.0.18}/libusb/os/openbsd_usb.c +5 -2
  78. data/ext/{libusbx-1.0.17 → libusb-1.0.18}/libusb/os/poll_posix.c +0 -0
  79. data/ext/{libusbx-1.0.17 → libusb-1.0.18}/libusb/os/poll_posix.h +0 -0
  80. data/ext/{libusbx-1.0.17 → libusb-1.0.18}/libusb/os/poll_windows.c +2 -2
  81. data/ext/{libusbx-1.0.17 → libusb-1.0.18}/libusb/os/poll_windows.h +0 -0
  82. data/ext/{libusbx-1.0.17 → libusb-1.0.18}/libusb/os/threads_posix.c +1 -1
  83. data/ext/{libusbx-1.0.17 → libusb-1.0.18}/libusb/os/threads_posix.h +1 -1
  84. data/ext/{libusbx-1.0.17 → libusb-1.0.18}/libusb/os/threads_windows.c +1 -1
  85. data/ext/{libusbx-1.0.17 → libusb-1.0.18}/libusb/os/threads_windows.h +1 -1
  86. data/ext/{libusbx-1.0.17 → libusb-1.0.18}/libusb/os/wince_usb.c +1 -2
  87. data/ext/{libusbx-1.0.17 → libusb-1.0.18}/libusb/os/wince_usb.h +2 -2
  88. data/ext/{libusbx-1.0.17 → libusb-1.0.18}/libusb/os/windows_common.h +1 -1
  89. data/ext/{libusbx-1.0.17 → libusb-1.0.18}/libusb/os/windows_usb.c +53 -33
  90. data/ext/{libusbx-1.0.17 → libusb-1.0.18}/libusb/os/windows_usb.h +6 -1
  91. data/ext/{libusbx-1.0.17 → libusb-1.0.18}/libusb/strerror.c +2 -2
  92. data/ext/{libusbx-1.0.17 → libusb-1.0.18}/libusb/sync.c +6 -6
  93. data/ext/{libusbx-1.0.17 → libusb-1.0.18}/libusb/version.h +1 -1
  94. data/ext/libusb-1.0.18/libusb/version_nano.h +1 -0
  95. data/ext/{libusbx-1.0.17 → libusb-1.0.18}/ltmain.sh +3 -3
  96. data/ext/libusb-1.0.18/missing +331 -0
  97. data/ext/{libusbx-1.0.17 → libusb-1.0.18}/tests/Makefile.am +1 -1
  98. data/ext/{libusbx-1.0.17 → libusb-1.0.18}/tests/Makefile.in +69 -127
  99. data/ext/{libusbx-1.0.17/tests/libusbx_testlib.h → libusb-1.0.18/tests/libusb_testlib.h} +15 -15
  100. data/ext/{libusbx-1.0.17 → libusb-1.0.18}/tests/stress.c +16 -16
  101. data/ext/{libusbx-1.0.17 → libusb-1.0.18}/tests/testlib.c +21 -20
  102. data/lib/libusb/version_gem.rb +1 -1
  103. data/libusb.gemspec +1 -6
  104. metadata +117 -135
  105. checksums.yaml +0 -7
  106. checksums.yaml.gz.sig +0 -0
  107. data.tar.gz.sig +0 -0
  108. data/ext/libusbx-1.0.17/NEWS +0 -2
  109. data/ext/libusbx-1.0.17/TODO +0 -2
  110. data/ext/libusbx-1.0.17/Xcode/libusbx.xcodeproj/project.pbxproj +0 -864
  111. data/ext/libusbx-1.0.17/aclocal.m4 +0 -1112
  112. data/ext/libusbx-1.0.17/libusb/version_nano.h +0 -1
  113. data/ext/libusbx-1.0.17/m4/ltoptions.m4 +0 -384
  114. data/ext/libusbx-1.0.17/m4/ltsugar.m4 +0 -123
  115. data/ext/libusbx-1.0.17/m4/ltversion.m4 +0 -23
  116. data/ext/libusbx-1.0.17/m4/lt~obsolete.m4 +0 -98
  117. data/ext/libusbx-1.0.17/missing +0 -215
  118. metadata.gz.sig +0 -0
@@ -3,7 +3,7 @@ exec_prefix=@exec_prefix@
3
3
  libdir=@libdir@
4
4
  includedir=@includedir@
5
5
 
6
- Name: libusbx-1.0
6
+ Name: libusb-1.0
7
7
  Description: C API for USB device access from Linux, Mac OS X, Windows and OpenBSD/NetBSD userspace
8
8
  Version: @VERSION@
9
9
  Libs: -L${libdir} -lusb-1.0
@@ -52,7 +52,7 @@ OS_SRC = $(WINDOWS_USB_SRC)
52
52
  libusb-1.0.rc: version.h version_nano.h
53
53
  endif
54
54
 
55
- libusb-1.0.dll: libusb-1.0.def
55
+ libusb-1.0.dll: libusb-1.0.def libusb-1.0.la
56
56
  if CREATE_IMPORT_LIB
57
57
  # Rebuild the import lib from the .def so that MS and MinGW DLLs can be interchanged
58
58
  $(AM_V_GEN)$(DLLTOOL) $(DLLTOOLFLAGS) --kill-at --input-def $(srcdir)/libusb-1.0.def --dllname $@ --output-lib .libs/$@.a
@@ -1,8 +1,9 @@
1
- # Makefile.in generated by automake 1.13.4 from Makefile.am.
1
+ # Makefile.in generated by automake 1.11.5 from Makefile.am.
2
2
  # @configure_input@
3
3
 
4
- # Copyright (C) 1994-2013 Free Software Foundation, Inc.
5
-
4
+ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
5
+ # 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
6
+ # Foundation, Inc.
6
7
  # This Makefile.in is free software; the Free Software Foundation
7
8
  # gives unlimited permission to copy and/or distribute it,
8
9
  # with or without modifications, as long as this notice is preserved.
@@ -16,51 +17,23 @@
16
17
 
17
18
 
18
19
  VPATH = @srcdir@
19
- am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
20
- am__make_running_with_option = \
21
- case $${target_option-} in \
22
- ?) ;; \
23
- *) echo "am__make_running_with_option: internal error: invalid" \
24
- "target option '$${target_option-}' specified" >&2; \
25
- exit 1;; \
26
- esac; \
27
- has_opt=no; \
28
- sane_makeflags=$$MAKEFLAGS; \
29
- if $(am__is_gnu_make); then \
30
- sane_makeflags=$$MFLAGS; \
31
- else \
20
+ am__make_dryrun = \
21
+ { \
22
+ am__dry=no; \
32
23
  case $$MAKEFLAGS in \
33
24
  *\\[\ \ ]*) \
34
- bs=\\; \
35
- sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
36
- | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
37
- esac; \
38
- fi; \
39
- skip_next=no; \
40
- strip_trailopt () \
41
- { \
42
- flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
43
- }; \
44
- for flg in $$sane_makeflags; do \
45
- test $$skip_next = yes && { skip_next=no; continue; }; \
46
- case $$flg in \
47
- *=*|--*) continue;; \
48
- -*I) strip_trailopt 'I'; skip_next=yes;; \
49
- -*I?*) strip_trailopt 'I';; \
50
- -*O) strip_trailopt 'O'; skip_next=yes;; \
51
- -*O?*) strip_trailopt 'O';; \
52
- -*l) strip_trailopt 'l'; skip_next=yes;; \
53
- -*l?*) strip_trailopt 'l';; \
54
- -[dEDm]) skip_next=yes;; \
55
- -[JT]) skip_next=yes;; \
25
+ echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \
26
+ | grep '^AM OK$$' >/dev/null || am__dry=yes;; \
27
+ *) \
28
+ for am__flg in $$MAKEFLAGS; do \
29
+ case $$am__flg in \
30
+ *=*|--*) ;; \
31
+ *n*) am__dry=yes; break;; \
32
+ esac; \
33
+ done;; \
56
34
  esac; \
57
- case $$flg in \
58
- *$$target_option*) has_opt=yes; break;; \
59
- esac; \
60
- done; \
61
- test $$has_opt = yes
62
- am__make_dryrun = (target_option=n; $(am__make_running_with_option))
63
- am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
35
+ test $$am__dry = yes; \
36
+ }
64
37
  pkgdatadir = $(datadir)/@PACKAGE@
65
38
  pkgincludedir = $(includedir)/@PACKAGE@
66
39
  pkglibdir = $(libdir)/@PACKAGE@
@@ -80,13 +53,11 @@ POST_UNINSTALL = :
80
53
  build_triplet = @build@
81
54
  host_triplet = @host@
82
55
  subdir = libusb
83
- DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
84
- $(top_srcdir)/depcomp $(hdr_HEADERS)
56
+ DIST_COMMON = $(hdr_HEADERS) $(srcdir)/Makefile.am \
57
+ $(srcdir)/Makefile.in
85
58
  ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
86
- am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
87
- $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
88
- $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
89
- $(top_srcdir)/libusb/version.h $(top_srcdir)/configure.ac
59
+ am__aclocal_m4_deps = $(top_srcdir)/libusb/version.h \
60
+ $(top_srcdir)/configure.ac
90
61
  am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
91
62
  $(ACLOCAL_M4)
92
63
  mkinstalldirs = $(install_sh) -d
@@ -163,22 +134,9 @@ libusb_1_0_la_OBJECTS = $(am_libusb_1_0_la_OBJECTS)
163
134
  AM_V_lt = $(am__v_lt_@AM_V@)
164
135
  am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
165
136
  am__v_lt_0 = --silent
166
- am__v_lt_1 =
167
137
  libusb_1_0_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
168
138
  $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libusb_1_0_la_CFLAGS) \
169
139
  $(CFLAGS) $(libusb_1_0_la_LDFLAGS) $(LDFLAGS) -o $@
170
- AM_V_P = $(am__v_P_@AM_V@)
171
- am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
172
- am__v_P_0 = false
173
- am__v_P_1 = :
174
- AM_V_GEN = $(am__v_GEN_@AM_V@)
175
- am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
176
- am__v_GEN_0 = @echo " GEN " $@;
177
- am__v_GEN_1 =
178
- AM_V_at = $(am__v_at_@AM_V@)
179
- am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
180
- am__v_at_0 = @
181
- am__v_at_1 =
182
140
  DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
183
141
  depcomp = $(SHELL) $(top_srcdir)/depcomp
184
142
  am__depfiles_maybe = depfiles
@@ -191,16 +149,20 @@ LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
191
149
  $(AM_CFLAGS) $(CFLAGS)
192
150
  AM_V_CC = $(am__v_CC_@AM_V@)
193
151
  am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
194
- am__v_CC_0 = @echo " CC " $@;
195
- am__v_CC_1 =
152
+ am__v_CC_0 = @echo " CC " $@;
153
+ AM_V_at = $(am__v_at_@AM_V@)
154
+ am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
155
+ am__v_at_0 = @
196
156
  CCLD = $(CC)
197
157
  LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
198
158
  $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
199
159
  $(AM_LDFLAGS) $(LDFLAGS) -o $@
200
160
  AM_V_CCLD = $(am__v_CCLD_@AM_V@)
201
161
  am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
202
- am__v_CCLD_0 = @echo " CCLD " $@;
203
- am__v_CCLD_1 =
162
+ am__v_CCLD_0 = @echo " CCLD " $@;
163
+ AM_V_GEN = $(am__v_GEN_@AM_V@)
164
+ am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
165
+ am__v_GEN_0 = @echo " GEN " $@;
204
166
  SOURCES = $(libusb_1_0_la_SOURCES)
205
167
  DIST_SOURCES = $(am__libusb_1_0_la_SOURCES_DIST)
206
168
  am__can_run_installinfo = \
@@ -209,23 +171,6 @@ am__can_run_installinfo = \
209
171
  *) (install-info --version) >/dev/null 2>&1;; \
210
172
  esac
211
173
  HEADERS = $(hdr_HEADERS)
212
- am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
213
- # Read a list of newline-separated strings from the standard input,
214
- # and print each of them once, without duplicates. Input order is
215
- # *not* preserved.
216
- am__uniquify_input = $(AWK) '\
217
- BEGIN { nonempty = 0; } \
218
- { items[$$0] = 1; nonempty = 1; } \
219
- END { if (nonempty) { for (i in items) print i; }; } \
220
- '
221
- # Make sure the list of sources is unique. This is necessary because,
222
- # e.g., the same source file might be shared among _SOURCES variables
223
- # for different programs/libraries.
224
- am__define_uniq_tagged_files = \
225
- list='$(am__tagged_files)'; \
226
- unique=`for i in $$list; do \
227
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
228
- done | $(am__uniquify_input)`
229
174
  ETAGS = etags
230
175
  CTAGS = ctags
231
176
  DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
@@ -424,7 +369,6 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
424
369
  $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
425
370
  cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
426
371
  $(am__aclocal_m4_deps):
427
-
428
372
  install-libLTLIBRARIES: $(lib_LTLIBRARIES)
429
373
  @$(NORMAL_INSTALL)
430
374
  @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
@@ -451,14 +395,12 @@ uninstall-libLTLIBRARIES:
451
395
 
452
396
  clean-libLTLIBRARIES:
453
397
  -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
454
- @list='$(lib_LTLIBRARIES)'; \
455
- locs=`for p in $$list; do echo $$p; done | \
456
- sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
457
- sort -u`; \
458
- test -z "$$locs" || { \
459
- echo rm -f $${locs}; \
460
- rm -f $${locs}; \
461
- }
398
+ @list='$(lib_LTLIBRARIES)'; for p in $$list; do \
399
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
400
+ test "$$dir" != "$$p" || dir=.; \
401
+ echo "rm -f \"$${dir}/so_locations\""; \
402
+ rm -f "$${dir}/so_locations"; \
403
+ done
462
404
  os/$(am__dirstamp):
463
405
  @$(MKDIR_P) os
464
406
  @: > os/$(am__dirstamp)
@@ -487,14 +429,33 @@ os/libusb_1_0_la-poll_windows.lo: os/$(am__dirstamp) \
487
429
  os/$(DEPDIR)/$(am__dirstamp)
488
430
  os/libusb_1_0_la-windows_usb.lo: os/$(am__dirstamp) \
489
431
  os/$(DEPDIR)/$(am__dirstamp)
490
-
491
432
  libusb-1.0.la: $(libusb_1_0_la_OBJECTS) $(libusb_1_0_la_DEPENDENCIES) $(EXTRA_libusb_1_0_la_DEPENDENCIES)
492
433
  $(AM_V_CCLD)$(libusb_1_0_la_LINK) -rpath $(libdir) $(libusb_1_0_la_OBJECTS) $(libusb_1_0_la_LIBADD) $(LIBS)
493
434
 
494
435
  mostlyclean-compile:
495
436
  -rm -f *.$(OBJEXT)
496
- -rm -f os/*.$(OBJEXT)
497
- -rm -f os/*.lo
437
+ -rm -f os/libusb_1_0_la-darwin_usb.$(OBJEXT)
438
+ -rm -f os/libusb_1_0_la-darwin_usb.lo
439
+ -rm -f os/libusb_1_0_la-linux_netlink.$(OBJEXT)
440
+ -rm -f os/libusb_1_0_la-linux_netlink.lo
441
+ -rm -f os/libusb_1_0_la-linux_udev.$(OBJEXT)
442
+ -rm -f os/libusb_1_0_la-linux_udev.lo
443
+ -rm -f os/libusb_1_0_la-linux_usbfs.$(OBJEXT)
444
+ -rm -f os/libusb_1_0_la-linux_usbfs.lo
445
+ -rm -f os/libusb_1_0_la-netbsd_usb.$(OBJEXT)
446
+ -rm -f os/libusb_1_0_la-netbsd_usb.lo
447
+ -rm -f os/libusb_1_0_la-openbsd_usb.$(OBJEXT)
448
+ -rm -f os/libusb_1_0_la-openbsd_usb.lo
449
+ -rm -f os/libusb_1_0_la-poll_posix.$(OBJEXT)
450
+ -rm -f os/libusb_1_0_la-poll_posix.lo
451
+ -rm -f os/libusb_1_0_la-poll_windows.$(OBJEXT)
452
+ -rm -f os/libusb_1_0_la-poll_windows.lo
453
+ -rm -f os/libusb_1_0_la-threads_posix.$(OBJEXT)
454
+ -rm -f os/libusb_1_0_la-threads_posix.lo
455
+ -rm -f os/libusb_1_0_la-threads_windows.$(OBJEXT)
456
+ -rm -f os/libusb_1_0_la-threads_windows.lo
457
+ -rm -f os/libusb_1_0_la-windows_usb.$(OBJEXT)
458
+ -rm -f os/libusb_1_0_la-windows_usb.lo
498
459
 
499
460
  distclean-compile:
500
461
  -rm -f *.tab.c
@@ -688,15 +649,26 @@ uninstall-hdrHEADERS:
688
649
  files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
689
650
  dir='$(DESTDIR)$(hdrdir)'; $(am__uninstall_files_from_dir)
690
651
 
691
- ID: $(am__tagged_files)
692
- $(am__define_uniq_tagged_files); mkid -fID $$unique
693
- tags: tags-am
694
- TAGS: tags
695
-
696
- tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
652
+ ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
653
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
654
+ unique=`for i in $$list; do \
655
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
656
+ done | \
657
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
658
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
659
+ mkid -fID $$unique
660
+ tags: TAGS
661
+
662
+ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
663
+ $(TAGS_FILES) $(LISP)
697
664
  set x; \
698
665
  here=`pwd`; \
699
- $(am__define_uniq_tagged_files); \
666
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
667
+ unique=`for i in $$list; do \
668
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
669
+ done | \
670
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
671
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
700
672
  shift; \
701
673
  if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
702
674
  test -n "$$unique" || unique=$$empty_fix; \
@@ -708,11 +680,15 @@ tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
708
680
  $$unique; \
709
681
  fi; \
710
682
  fi
711
- ctags: ctags-am
712
-
713
- CTAGS: ctags
714
- ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
715
- $(am__define_uniq_tagged_files); \
683
+ ctags: CTAGS
684
+ CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
685
+ $(TAGS_FILES) $(LISP)
686
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
687
+ unique=`for i in $$list; do \
688
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
689
+ done | \
690
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
691
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
716
692
  test -z "$(CTAGS_ARGS)$$unique" \
717
693
  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
718
694
  $$unique
@@ -721,21 +697,6 @@ GTAGS:
721
697
  here=`$(am__cd) $(top_builddir) && pwd` \
722
698
  && $(am__cd) $(top_srcdir) \
723
699
  && gtags -i $(GTAGS_ARGS) "$$here"
724
- cscopelist: cscopelist-am
725
-
726
- cscopelist-am: $(am__tagged_files)
727
- list='$(am__tagged_files)'; \
728
- case "$(srcdir)" in \
729
- [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
730
- *) sdir=$(subdir)/$(srcdir) ;; \
731
- esac; \
732
- for i in $$list; do \
733
- if test -f "$$i"; then \
734
- echo "$(subdir)/$$i"; \
735
- else \
736
- echo "$$sdir/$$i"; \
737
- fi; \
738
- done >> $(top_builddir)/cscope.files
739
700
 
740
701
  distclean-tags:
741
702
  -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
@@ -882,20 +843,19 @@ uninstall-am: uninstall-hdrHEADERS uninstall-libLTLIBRARIES
882
843
 
883
844
  .MAKE: install-am install-strip
884
845
 
885
- .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
886
- clean-libLTLIBRARIES clean-libtool cscopelist-am ctags \
887
- ctags-am distclean distclean-compile distclean-generic \
888
- distclean-libtool distclean-tags distdir dvi dvi-am html \
889
- html-am info info-am install install-am install-data \
890
- install-data-am install-dvi install-dvi-am install-exec \
891
- install-exec-am install-hdrHEADERS install-html \
892
- install-html-am install-info install-info-am \
846
+ .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
847
+ clean-libLTLIBRARIES clean-libtool ctags distclean \
848
+ distclean-compile distclean-generic distclean-libtool \
849
+ distclean-tags distdir dvi dvi-am html html-am info info-am \
850
+ install install-am install-data install-data-am install-dvi \
851
+ install-dvi-am install-exec install-exec-am install-hdrHEADERS \
852
+ install-html install-html-am install-info install-info-am \
893
853
  install-libLTLIBRARIES install-man install-pdf install-pdf-am \
894
854
  install-ps install-ps-am install-strip installcheck \
895
855
  installcheck-am installdirs maintainer-clean \
896
856
  maintainer-clean-generic mostlyclean mostlyclean-compile \
897
857
  mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
898
- tags tags-am uninstall uninstall-am uninstall-hdrHEADERS \
858
+ tags uninstall uninstall-am uninstall-hdrHEADERS \
899
859
  uninstall-libLTLIBRARIES
900
860
 
901
861
  all: libusb-1.0.la libusb-1.0.dll
@@ -905,7 +865,7 @@ all: libusb-1.0.la libusb-1.0.dll
905
865
 
906
866
  @OS_WINDOWS_TRUE@libusb-1.0.rc: version.h version_nano.h
907
867
 
908
- libusb-1.0.dll: libusb-1.0.def
868
+ libusb-1.0.dll: libusb-1.0.def libusb-1.0.la
909
869
  # Rebuild the import lib from the .def so that MS and MinGW DLLs can be interchanged
910
870
  @CREATE_IMPORT_LIB_TRUE@ $(AM_V_GEN)$(DLLTOOL) $(DLLTOOLFLAGS) --kill-at --input-def $(srcdir)/libusb-1.0.def --dllname $@ --output-lib .libs/$@.a
911
871
 
@@ -1,6 +1,6 @@
1
1
  /* -*- Mode: C; indent-tabs-mode:t ; c-basic-offset:8 -*- */
2
2
  /*
3
- * Core functions for libusbx
3
+ * Core functions for libusb
4
4
  * Copyright © 2012-2013 Nathan Hjelm <hjelmn@cs.unm.edu>
5
5
  * Copyright © 2007-2008 Daniel Drake <dsd@gentoo.org>
6
6
  * Copyright © 2001 Johannes Erdfelt <johannes@erdfelt.com>
@@ -63,7 +63,7 @@ const struct usbi_os_backend * const usbi_backend = &wince_backend;
63
63
  struct libusb_context *usbi_default_context = NULL;
64
64
  static const struct libusb_version libusb_version_internal =
65
65
  { LIBUSB_MAJOR, LIBUSB_MINOR, LIBUSB_MICRO, LIBUSB_NANO,
66
- LIBUSB_RC, "http://libusbx.org" };
66
+ LIBUSB_RC, "http://libusb.info" };
67
67
  static int default_context_refcnt = 0;
68
68
  static usbi_mutex_static_t default_context_lock = USBI_MUTEX_INITIALIZER;
69
69
  static struct timeval timestamp_origin = { 0, 0 };
@@ -72,18 +72,18 @@ usbi_mutex_static_t active_contexts_lock = USBI_MUTEX_INITIALIZER;
72
72
  struct list_head active_contexts_list;
73
73
 
74
74
  /**
75
- * \mainpage libusbx-1.0 API Reference
75
+ * \mainpage libusb-1.0 API Reference
76
76
  *
77
77
  * \section intro Introduction
78
78
  *
79
- * libusbx is an open source library that allows you to communicate with USB
79
+ * libusb is an open source library that allows you to communicate with USB
80
80
  * devices from userspace. For more info, see the
81
- * <a href="http://libusbx.org">libusbx homepage</a>.
81
+ * <a href="http://libusb.info">libusb homepage</a>.
82
82
  *
83
83
  * This documentation is aimed at application developers wishing to
84
84
  * communicate with USB peripherals from their own software. After reviewing
85
85
  * this documentation, feedback and questions can be sent to the
86
- * <a href="http://mailing-list.libusbx.org">libusbx-devel mailing list</a>.
86
+ * <a href="http://mailing-list.libusb.info">libusb-devel mailing list</a>.
87
87
  *
88
88
  * This documentation assumes knowledge of how to operate USB devices from
89
89
  * a software standpoint (descriptors, configurations, interfaces, endpoints,
@@ -107,25 +107,25 @@ struct list_head active_contexts_list;
107
107
  * \section gettingstarted Getting Started
108
108
  *
109
109
  * To begin reading the API documentation, start with the Modules page which
110
- * links to the different categories of libusbx's functionality.
110
+ * links to the different categories of libusb's functionality.
111
111
  *
112
112
  * One decision you will have to make is whether to use the synchronous
113
113
  * or the asynchronous data transfer interface. The \ref io documentation
114
114
  * provides some insight into this topic.
115
115
  *
116
- * Some example programs can be found in the libusbx source distribution under
117
- * the "examples" subdirectory. The libusbx homepage includes a list of
118
- * real-life project examples which use libusbx.
116
+ * Some example programs can be found in the libusb source distribution under
117
+ * the "examples" subdirectory. The libusb homepage includes a list of
118
+ * real-life project examples which use libusb.
119
119
  *
120
120
  * \section errorhandling Error handling
121
121
  *
122
- * libusbx functions typically return 0 on success or a negative error code
122
+ * libusb functions typically return 0 on success or a negative error code
123
123
  * on failure. These negative error codes relate to LIBUSB_ERROR constants
124
124
  * which are listed on the \ref misc "miscellaneous" documentation page.
125
125
  *
126
126
  * \section msglog Debug message logging
127
127
  *
128
- * libusbx uses stderr for all logging. By default, logging is set to NONE,
128
+ * libusb uses stderr for all logging. By default, logging is set to NONE,
129
129
  * which means that no output will be produced. However, unless the library
130
130
  * has been compiled with logging disabled, then any application calls to
131
131
  * libusb_set_debug(), or the setting of the environmental variable
@@ -134,19 +134,19 @@ struct list_head active_contexts_list;
134
134
  * direct it to the null device if its output is undesireable.
135
135
  *
136
136
  * The libusb_set_debug() function can be used to enable logging of certain
137
- * messages. Under standard configuration, libusbx doesn't really log much
137
+ * messages. Under standard configuration, libusb doesn't really log much
138
138
  * so you are advised to use this function to enable all error/warning/
139
139
  * informational messages. It will help debug problems with your software.
140
140
  *
141
141
  * The logged messages are unstructured. There is no one-to-one correspondence
142
142
  * between messages being logged and success or failure return codes from
143
- * libusbx functions. There is no format to the messages, so you should not
143
+ * libusb functions. There is no format to the messages, so you should not
144
144
  * try to capture or parse them. They are not and will not be localized.
145
145
  * These messages are not intended to being passed to your application user;
146
- * instead, you should interpret the error codes returned from libusbx functions
146
+ * instead, you should interpret the error codes returned from libusb functions
147
147
  * and provide appropriate notification to the user. The messages are simply
148
148
  * there to aid you as a programmer, and if you're confused because you're
149
- * getting a strange error code from a libusbx function, enabling message
149
+ * getting a strange error code from a libusb function, enabling message
150
150
  * logging may give you a suitable explanation.
151
151
  *
152
152
  * The LIBUSB_DEBUG environment variable can be used to enable message logging
@@ -155,18 +155,18 @@ struct list_head active_contexts_list;
155
155
  * environment variable is set, the message logging verbosity level is fixed
156
156
  * and libusb_set_debug() effectively does nothing.
157
157
  *
158
- * libusbx can be compiled without any logging functions, useful for embedded
158
+ * libusb can be compiled without any logging functions, useful for embedded
159
159
  * systems. In this case, libusb_set_debug() and the LIBUSB_DEBUG environment
160
160
  * variable have no effects.
161
161
  *
162
- * libusbx can also be compiled with verbose debugging messages always. When
162
+ * libusb can also be compiled with verbose debugging messages always. When
163
163
  * the library is compiled in this way, all messages of all verbosities are
164
164
  * always logged. libusb_set_debug() and the LIBUSB_DEBUG environment variable
165
165
  * have no effects.
166
166
  *
167
167
  * \section remarks Other remarks
168
168
  *
169
- * libusbx does have imperfections. The \ref caveats "caveats" page attempts
169
+ * libusb does have imperfections. The \ref caveats "caveats" page attempts
170
170
  * to document these.
171
171
  */
172
172
 
@@ -181,7 +181,7 @@ struct list_head active_contexts_list;
181
181
  * reset).
182
182
  *
183
183
  * The problem is that any other program could reset the device your program
184
- * is working with, at any time. libusbx does not offer a mechanism to inform
184
+ * is working with, at any time. libusb does not offer a mechanism to inform
185
185
  * you when this has happened, so if someone else resets your device it will
186
186
  * not be clear to your own program why the device state has changed.
187
187
  *
@@ -206,7 +206,7 @@ struct list_head active_contexts_list;
206
206
  *
207
207
  * \section configsel Configuration selection and handling
208
208
  *
209
- * When libusbx presents a device handle to an application, there is a chance
209
+ * When libusb presents a device handle to an application, there is a chance
210
210
  * that the corresponding device may be in unconfigured state. For devices
211
211
  * with multiple configurations, there is also a chance that the configuration
212
212
  * currently selected is not the one that the application wants to use.
@@ -217,13 +217,13 @@ struct list_head active_contexts_list;
217
217
  * -# If the device is already in the desired configuration, calling
218
218
  * libusb_set_configuration() using the same configuration value will cause
219
219
  * a lightweight device reset. This may not be desirable behaviour.
220
- * -# libusbx will be unable to change configuration if the device is in
220
+ * -# libusb will be unable to change configuration if the device is in
221
221
  * another configuration and other programs or drivers have claimed
222
222
  * interfaces under that configuration.
223
- * -# In the case where the desired configuration is already active, libusbx
223
+ * -# In the case where the desired configuration is already active, libusb
224
224
  * may not even be able to perform a lightweight device reset. For example,
225
225
  * take my USB keyboard with fingerprint reader: I'm interested in driving
226
- * the fingerprint reader interface through libusbx, but the kernel's
226
+ * the fingerprint reader interface through libusb, but the kernel's
227
227
  * USB-HID driver will almost always have claimed the keyboard interface.
228
228
  * Because the kernel has claimed an interface, it is not even possible to
229
229
  * perform the lightweight device reset, so libusb_set_configuration() will
@@ -263,13 +263,13 @@ if (cfg != desired)
263
263
  * considerations apply to Darwin or other platforms.
264
264
  *
265
265
  * When a transfer completes early (i.e. when less data is received/sent in
266
- * any one packet than the transfer buffer allows for) then libusbx is designed
266
+ * any one packet than the transfer buffer allows for) then libusb is designed
267
267
  * to terminate the transfer immediately, not transferring or receiving any
268
268
  * more data unless other transfers have been queued by the user.
269
269
  *
270
- * On legacy platforms, libusbx is unable to do this in all situations. After
270
+ * On legacy platforms, libusb is unable to do this in all situations. After
271
271
  * the incomplete packet occurs, "surplus" data may be transferred. For recent
272
- * versions of libusbx, this information is kept (the data length of the
272
+ * versions of libusb, this information is kept (the data length of the
273
273
  * transfer is updated) and, for device-to-host transfers, any surplus data was
274
274
  * added to the buffer. Still, this is not a nice solution because it loses the
275
275
  * information about the end of the short packet, and the user probably wanted
@@ -278,7 +278,7 @@ if (cfg != desired)
278
278
  *
279
279
  * \section zlp Zero length packets
280
280
  *
281
- * - libusbx is able to send a packet of zero length to an endpoint simply by
281
+ * - libusb is able to send a packet of zero length to an endpoint simply by
282
282
  * submitting a transfer of zero length.
283
283
  * - The \ref libusb_transfer_flags::LIBUSB_TRANSFER_ADD_ZERO_PACKET
284
284
  * "LIBUSB_TRANSFER_ADD_ZERO_PACKET" flag is currently only supported on Linux.
@@ -287,24 +287,24 @@ if (cfg != desired)
287
287
  /**
288
288
  * \page contexts Contexts
289
289
  *
290
- * It is possible that libusbx may be used simultaneously from two independent
290
+ * It is possible that libusb may be used simultaneously from two independent
291
291
  * libraries linked into the same executable. For example, if your application
292
292
  * has a plugin-like system which allows the user to dynamically load a range
293
293
  * of modules into your program, it is feasible that two independently
294
- * developed modules may both use libusbx.
294
+ * developed modules may both use libusb.
295
295
  *
296
- * libusbx is written to allow for these multiple user scenarios. The two
297
- * "instances" of libusbx will not interfere: libusb_set_debug() calls
296
+ * libusb is written to allow for these multiple user scenarios. The two
297
+ * "instances" of libusb will not interfere: libusb_set_debug() calls
298
298
  * from one user will not affect the same settings for other users, other
299
- * users can continue using libusbx after one of them calls libusb_exit(), etc.
299
+ * users can continue using libusb after one of them calls libusb_exit(), etc.
300
300
  *
301
- * This is made possible through libusbx's <em>context</em> concept. When you
301
+ * This is made possible through libusb's <em>context</em> concept. When you
302
302
  * call libusb_init(), you are (optionally) given a context. You can then pass
303
- * this context pointer back into future libusbx functions.
303
+ * this context pointer back into future libusb functions.
304
304
  *
305
305
  * In order to keep things simple for more simplistic applications, it is
306
306
  * legal to pass NULL to all functions requiring a context pointer (as long as
307
- * you're sure no other code will attempt to use libusbx from the same process).
307
+ * you're sure no other code will attempt to use libusb from the same process).
308
308
  * When you pass NULL, the default context will be used. The default context
309
309
  * is created the first time a process calls libusb_init() when no other
310
310
  * context is alive. Contexts are destroyed during libusb_exit().
@@ -317,17 +317,17 @@ if (cfg != desired)
317
317
  * reference count goes from 0 to 1, and is deinitialized and destroyed when
318
318
  * its reference count goes from 1 to 0.
319
319
  *
320
- * You may be wondering why only a subset of libusbx functions require a
321
- * context pointer in their function definition. Internally, libusbx stores
320
+ * You may be wondering why only a subset of libusb functions require a
321
+ * context pointer in their function definition. Internally, libusb stores
322
322
  * context pointers in other objects (e.g. libusb_device instances) and hence
323
323
  * can infer the context from those objects.
324
324
  */
325
325
 
326
326
  /**
327
327
  * @defgroup lib Library initialization/deinitialization
328
- * This page details how to initialize and deinitialize libusbx. Initialization
329
- * must be performed before using any libusbx functionality, and similarly you
330
- * must not call any libusbx functions after deinitialization.
328
+ * This page details how to initialize and deinitialize libusb. Initialization
329
+ * must be performed before using any libusb functionality, and similarly you
330
+ * must not call any libusb functions after deinitialization.
331
331
  */
332
332
 
333
333
  /**
@@ -384,7 +384,7 @@ libusb_free_device_list(list, 1);
384
384
  * device.
385
385
  *
386
386
  * \section devshandles Devices and device handles
387
- * libusbx has a concept of a USB device, represented by the
387
+ * libusb has a concept of a USB device, represented by the
388
388
  * \ref libusb_device opaque type. A device represents a USB device that
389
389
  * is currently or was previously connected to the system. Using a reference
390
390
  * to a device, you can determine certain information about the device (e.g.
@@ -400,8 +400,8 @@ libusb_free_device_list(list, 1);
400
400
  * using the device.
401
401
  *
402
402
  * When you've found a device that you'd like to operate, you must ask
403
- * libusbx to open the device using the libusb_open() function. Assuming
404
- * success, libusbx then returns you a <em>device handle</em>
403
+ * libusb to open the device using the libusb_open() function. Assuming
404
+ * success, libusb then returns you a <em>device handle</em>
405
405
  * (a \ref libusb_device_handle pointer). All "real" I/O operations then
406
406
  * operate on the handle rather than the original device pointer.
407
407
  *
@@ -409,10 +409,10 @@ libusb_free_device_list(list, 1);
409
409
  *
410
410
  * Device discovery (i.e. calling libusb_get_device_list()) returns a
411
411
  * freshly-allocated list of devices. The list itself must be freed when
412
- * you are done with it. libusbx also needs to know when it is OK to free
412
+ * you are done with it. libusb also needs to know when it is OK to free
413
413
  * the contents of the list - the devices themselves.
414
414
  *
415
- * To handle these issues, libusbx provides you with two separate items:
415
+ * To handle these issues, libusb provides you with two separate items:
416
416
  * - A function to free the list itself
417
417
  * - A reference counting system for the devices inside
418
418
  *
@@ -608,7 +608,7 @@ int usbi_sanitize_device(struct libusb_device *dev)
608
608
  return 0;
609
609
  }
610
610
 
611
- /* Examine libusbx's internal list of known devices, looking for one with
611
+ /* Examine libusb's internal list of known devices, looking for one with
612
612
  * a specific session ID. Returns the matching device if it was found, and
613
613
  * NULL otherwise. */
614
614
  struct libusb_device *usbi_get_device_by_session_id(struct libusb_context *ctx,
@@ -620,7 +620,7 @@ struct libusb_device *usbi_get_device_by_session_id(struct libusb_context *ctx,
620
620
  usbi_mutex_lock(&ctx->usb_devs_lock);
621
621
  list_for_each_entry(dev, &ctx->usb_devs, list, struct libusb_device)
622
622
  if (dev->session_data == session_id) {
623
- ret = dev;
623
+ ret = libusb_ref_device(dev);
624
624
  break;
625
625
  }
626
626
  usbi_mutex_unlock(&ctx->usb_devs_lock);
@@ -763,7 +763,7 @@ uint8_t API_EXPORTED libusb_get_port_number(libusb_device *dev)
763
763
  /** \ingroup dev
764
764
  * Get the list of all port numbers from root for the specified device
765
765
  *
766
- * Since version 1.0.16, \ref LIBUSBX_API_VERSION >= 0x01000102
766
+ * Since version 1.0.16, \ref LIBUSB_API_VERSION >= 0x01000102
767
767
  * \param dev a device
768
768
  * \param port_numbers the array that should contain the port numbers
769
769
  * \param port_numbers_len the maximum length of the array. As per the USB 3.0
@@ -811,7 +811,7 @@ int API_EXPORTED libusb_get_port_path(libusb_context *ctx, libusb_device *dev,
811
811
  * \returns the device parent or NULL if not available
812
812
  * You should issue a \ref libusb_get_device_list() before calling this
813
813
  * function and make sure that you only access the parent before issuing
814
- * \ref libusb_free_device_list(). The reason is that libusbx currently does
814
+ * \ref libusb_free_device_list(). The reason is that libusb currently does
815
815
  * not maintain a permanent list of device instances, and therefore can
816
816
  * only guarantee that parents are fully instantiated within a
817
817
  * libusb_get_device_list() - libusb_free_device_list() block.
@@ -1120,7 +1120,7 @@ int API_EXPORTED libusb_open(libusb_device *dev,
1120
1120
  /* At this point, we want to interrupt any existing event handlers so
1121
1121
  * that they realise the addition of the new device's poll fd. One
1122
1122
  * example when this is desirable is if the user is running a separate
1123
- * dedicated libusbx events handling thread, which is running with a long
1123
+ * dedicated libusb events handling thread, which is running with a long
1124
1124
  * or infinite timeout. We want to interrupt that iteration of the loop,
1125
1125
  * so that it picks up the new fd, and then continues. */
1126
1126
  usbi_fd_notification(ctx);
@@ -1131,7 +1131,7 @@ int API_EXPORTED libusb_open(libusb_device *dev,
1131
1131
  /** \ingroup dev
1132
1132
  * Convenience function for finding a device with a particular
1133
1133
  * <tt>idVendor</tt>/<tt>idProduct</tt> combination. This function is intended
1134
- * for those scenarios where you are using libusbx to knock up a quick test
1134
+ * for those scenarios where you are using libusb to knock up a quick test
1135
1135
  * application - it allows you to avoid calling libusb_get_device_list() and
1136
1136
  * worrying about traversing/freeing the list.
1137
1137
  *
@@ -1425,7 +1425,7 @@ int API_EXPORTED libusb_set_configuration(libusb_device_handle *dev,
1425
1425
  * you wish to use before you can perform I/O on any of its endpoints.
1426
1426
  *
1427
1427
  * It is legal to attempt to claim an already-claimed interface, in which
1428
- * case libusbx just returns 0 without doing anything.
1428
+ * case libusb just returns 0 without doing anything.
1429
1429
  *
1430
1430
  * If auto_detach_kernel_driver is set to 1 for <tt>dev</tt>, the kernel driver
1431
1431
  * will be detached if necessary, on failure the detach error is returned.
@@ -1617,7 +1617,7 @@ int API_EXPORTED libusb_reset_device(libusb_device_handle *dev)
1617
1617
 
1618
1618
  /** \ingroup dev
1619
1619
  * Determine if a kernel driver is active on an interface. If a kernel driver
1620
- * is active, you cannot claim the interface, and libusbx will be unable to
1620
+ * is active, you cannot claim the interface, and libusb will be unable to
1621
1621
  * perform I/O.
1622
1622
  *
1623
1623
  * This functionality is not available on Windows.
@@ -1652,7 +1652,7 @@ int API_EXPORTED libusb_kernel_driver_active(libusb_device_handle *dev,
1652
1652
  *
1653
1653
  * This functionality is not available on Darwin or Windows.
1654
1654
  *
1655
- * Note that libusbx itself also talks to the device through a special kernel
1655
+ * Note that libusb itself also talks to the device through a special kernel
1656
1656
  * driver, if this driver is already attached to the device, this call will
1657
1657
  * not detach it and return LIBUSB_ERROR_NOT_FOUND.
1658
1658
  *
@@ -1716,15 +1716,15 @@ int API_EXPORTED libusb_attach_kernel_driver(libusb_device_handle *dev,
1716
1716
  }
1717
1717
 
1718
1718
  /** \ingroup dev
1719
- * Enable/disable libusbx's automatic kernel driver detachment. When this is
1720
- * enabled libusbx will automatically detach the kernel driver on an interface
1719
+ * Enable/disable libusb's automatic kernel driver detachment. When this is
1720
+ * enabled libusb will automatically detach the kernel driver on an interface
1721
1721
  * when claiming the interface, and attach it when releasing the interface.
1722
1722
  *
1723
1723
  * Automatic kernel driver detachment is disabled on newly opened device
1724
1724
  * handles by default.
1725
1725
  *
1726
1726
  * On platforms which do not have LIBUSB_CAP_SUPPORTS_DETACH_KERNEL_DRIVER
1727
- * this function will return LIBUSB_ERROR_NOT_SUPPORTED, and libusbx will
1727
+ * this function will return LIBUSB_ERROR_NOT_SUPPORTED, and libusb will
1728
1728
  * continue as if this function was never called.
1729
1729
  *
1730
1730
  * \param dev a device handle
@@ -1754,19 +1754,19 @@ int API_EXPORTED libusb_set_auto_detach_kernel_driver(
1754
1754
  * printed. If you choose to increase the message verbosity level, ensure
1755
1755
  * that your application does not close the stdout/stderr file descriptors.
1756
1756
  *
1757
- * You are advised to use level LIBUSB_LOG_LEVEL_WARNING. libusbx is conservative
1757
+ * You are advised to use level LIBUSB_LOG_LEVEL_WARNING. libusb is conservative
1758
1758
  * with its message logging and most of the time, will only log messages that
1759
1759
  * explain error conditions and other oddities. This will help you debug
1760
1760
  * your software.
1761
1761
  *
1762
- * If the LIBUSB_DEBUG environment variable was set when libusbx was
1762
+ * If the LIBUSB_DEBUG environment variable was set when libusb was
1763
1763
  * initialized, this function does nothing: the message verbosity is fixed
1764
1764
  * to the value in the environment variable.
1765
1765
  *
1766
- * If libusbx was compiled without any message logging, this function does
1766
+ * If libusb was compiled without any message logging, this function does
1767
1767
  * nothing: you'll never get any messages.
1768
1768
  *
1769
- * If libusbx was compiled with verbose debug message logging, this function
1769
+ * If libusb was compiled with verbose debug message logging, this function
1770
1770
  * does nothing: you'll always get messages from all levels.
1771
1771
  *
1772
1772
  * \param ctx the context to operate on, or NULL for the default context
@@ -1781,7 +1781,7 @@ void API_EXPORTED libusb_set_debug(libusb_context *ctx, int level)
1781
1781
 
1782
1782
  /** \ingroup lib
1783
1783
  * Initialize libusb. This function must be called before calling any other
1784
- * libusbx function.
1784
+ * libusb function.
1785
1785
  *
1786
1786
  * If you do not provide an output location for a context pointer, a default
1787
1787
  * context will be created. If there was already a default context, it will
@@ -1836,7 +1836,7 @@ int API_EXPORTED libusb_init(libusb_context **context)
1836
1836
  usbi_dbg("created default context");
1837
1837
  }
1838
1838
 
1839
- usbi_dbg("libusbx v%d.%d.%d.%d", libusb_version_internal.major, libusb_version_internal.minor,
1839
+ usbi_dbg("libusb v%d.%d.%d.%d", libusb_version_internal.major, libusb_version_internal.minor,
1840
1840
  libusb_version_internal.micro, libusb_version_internal.nano);
1841
1841
 
1842
1842
  usbi_mutex_init(&ctx->usb_devs_lock, NULL);
@@ -1907,6 +1907,7 @@ err_unlock:
1907
1907
  void API_EXPORTED libusb_exit(struct libusb_context *ctx)
1908
1908
  {
1909
1909
  struct libusb_device *dev, *next;
1910
+ struct timeval tv = { 0, 0 };
1910
1911
 
1911
1912
  usbi_dbg("");
1912
1913
  USBI_GET_CONTEXT(ctx);
@@ -1931,6 +1932,19 @@ void API_EXPORTED libusb_exit(struct libusb_context *ctx)
1931
1932
 
1932
1933
  if (libusb_has_capability(LIBUSB_CAP_HAS_HOTPLUG)) {
1933
1934
  usbi_hotplug_deregister_all(ctx);
1935
+
1936
+ /*
1937
+ * Ensure any pending unplug events are read from the hotplug
1938
+ * pipe. The usb_device-s hold in the events are no longer part
1939
+ * of usb_devs, but the events still hold a reference!
1940
+ *
1941
+ * Note we don't do this if the application has left devices
1942
+ * open (which implies a buggy app) to avoid packet completion
1943
+ * handlers running when the app does not expect them to run.
1944
+ */
1945
+ if (list_empty(&ctx->open_devs))
1946
+ libusb_handle_events_timeout(ctx, &tv);
1947
+
1934
1948
  usbi_mutex_lock(&ctx->usb_devs_lock);
1935
1949
  list_for_each_entry_safe(dev, next, &ctx->usb_devs, list, struct libusb_device) {
1936
1950
  list_del(&dev->list);
@@ -2082,17 +2096,24 @@ void usbi_log_v(struct libusb_context *ctx, enum libusb_log_level level,
2082
2096
  global_debug = 1;
2083
2097
  UNUSED(ctx);
2084
2098
  #else
2099
+ int ctx_level = 0;
2100
+
2085
2101
  USBI_GET_CONTEXT(ctx);
2086
- if (ctx == NULL)
2087
- return;
2088
- global_debug = (ctx->debug == LIBUSB_LOG_LEVEL_DEBUG);
2089
- if (!ctx->debug)
2102
+ if (ctx) {
2103
+ ctx_level = ctx->debug;
2104
+ } else {
2105
+ char *dbg = getenv("LIBUSB_DEBUG");
2106
+ if (dbg)
2107
+ ctx_level = atoi(dbg);
2108
+ }
2109
+ global_debug = (ctx_level == LIBUSB_LOG_LEVEL_DEBUG);
2110
+ if (!ctx_level)
2090
2111
  return;
2091
- if (level == LIBUSB_LOG_LEVEL_WARNING && ctx->debug < LIBUSB_LOG_LEVEL_WARNING)
2112
+ if (level == LIBUSB_LOG_LEVEL_WARNING && ctx_level < LIBUSB_LOG_LEVEL_WARNING)
2092
2113
  return;
2093
- if (level == LIBUSB_LOG_LEVEL_INFO && ctx->debug < LIBUSB_LOG_LEVEL_INFO)
2114
+ if (level == LIBUSB_LOG_LEVEL_INFO && ctx_level < LIBUSB_LOG_LEVEL_INFO)
2094
2115
  return;
2095
- if (level == LIBUSB_LOG_LEVEL_DEBUG && ctx->debug < LIBUSB_LOG_LEVEL_DEBUG)
2116
+ if (level == LIBUSB_LOG_LEVEL_DEBUG && ctx_level < LIBUSB_LOG_LEVEL_DEBUG)
2096
2117
  return;
2097
2118
  #endif
2098
2119
 
@@ -2131,11 +2152,11 @@ void usbi_log_v(struct libusb_context *ctx, enum libusb_log_level level,
2131
2152
 
2132
2153
  if (global_debug) {
2133
2154
  header_len = snprintf(buf, sizeof(buf),
2134
- "[%2d.%06d] [%08x] libusbx: %s [%s] ",
2155
+ "[%2d.%06d] [%08x] libusb: %s [%s] ",
2135
2156
  (int)now.tv_sec, (int)now.tv_usec, usbi_get_tid(), prefix, function);
2136
2157
  } else {
2137
2158
  header_len = snprintf(buf, sizeof(buf),
2138
- "libusbx: %s [%s] ", prefix, function);
2159
+ "libusb: %s [%s] ", prefix, function);
2139
2160
  }
2140
2161
 
2141
2162
  if (header_len < 0 || header_len >= sizeof(buf)) {
@@ -2172,7 +2193,7 @@ void usbi_log(struct libusb_context *ctx, enum libusb_log_level level,
2172
2193
  }
2173
2194
 
2174
2195
  /** \ingroup misc
2175
- * Returns a constant NULL-terminated string with the ASCII name of a libusbx
2196
+ * Returns a constant NULL-terminated string with the ASCII name of a libusb
2176
2197
  * error or transfer status code. The caller must not free() the returned
2177
2198
  * string.
2178
2199
  *