strerror: Micro-optimize implementation and remove use of strncasecmp()

When comparing the user-provided locale string in libusb_setlocale(), we
only care about the first two characters. The lookup strings within
libusb are always lowercase, so simplify the comparison by directly
comparing the result of tolower(). This removes the need for
strncasecmp() which was not able to be cleanly included in the first
place.

Rather than storing an index into the array of localized strings, store
a pointer to the selected sub-array instead. This trims the generated
code of libusb_strerror() by nearly half as loads can be dropped.

Also constify the arrays of strings as they should not be mutable.

Signed-off-by: Chris Dickens <christopher.a.dickens@gmail.com>
2 files changed
tree: 6836e21a88e894b5a65ddf09bb677499bce0c895
  1. .private/
  2. android/
  3. doc/
  4. examples/
  5. libusb/
  6. msvc/
  7. tests/
  8. Xcode/
  9. .gitattributes
  10. .gitignore
  11. .travis.yml
  12. appveyor.yml
  13. appveyor_build.sh
  14. AUTHORS
  15. autogen.sh
  16. bootstrap.sh
  17. Brewfile
  18. ChangeLog
  19. configure.ac
  20. COPYING
  21. INSTALL_WIN.txt
  22. libusb-1.0.pc.in
  23. Makefile.am
  24. NEWS
  25. PORTING
  26. README.git
  27. README.md
  28. TODO
  29. travis-autogen.sh
README.md

libusb

Build Status Build Status Coverity Scan Build Status

libusb is a library for USB device access from Linux, macOS, Windows, OpenBSD/NetBSD, Haiku and Solaris userspace. It is written in C (Haiku backend in C++) and licensed under the GNU Lesser General Public License version 2.1 or, at your option, any later version (see COPYING).

libusb is abstracted internally in such a way that it can hopefully be ported to other operating systems. Please see the PORTING file for more information.

libusb homepage: http://libusb.info/

Developers will wish to consult the API documentation: http://api.libusb.info

Use the mailing list for questions, comments, etc: http://mailing-list.libusb.info

(Please use the mailing list rather than mailing developers directly)