<pre style='margin:0'>
Ken (kencu) pushed a commit to branch master
in repository macports-legacy-support.

</pre>
<p><a href="https://github.com/macports/macports-legacy-support/commit/4f8f635675484501701c210c9b332e51f3167743">https://github.com/macports/macports-legacy-support/commit/4f8f635675484501701c210c9b332e51f3167743</a></p>
<pre style="white-space: pre; background: #F8F8F8"><span style='display:block; white-space:pre;color:#808000;'>commit 4f8f635675484501701c210c9b332e51f3167743
</span>Author: Christian Cornelssen <ccorn@1tein.de>
AuthorDate: Sat Dec 15 13:06:47 2018 +0100

<span style='display:block; white-space:pre;color:#404040;'>    Add more `wc*` functions missing in OS X 10.6 and earlier.
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    Added a test file for the `wcscasecmp` family.
</span><span style='display:block; white-space:pre;color:#404040;'>    Makefile completely rewritten. It is now more straightforward
</span><span style='display:block; white-space:pre;color:#404040;'>    and supports testing in the build tree.
</span><span style='display:block; white-space:pre;color:#404040;'>    Added parentheses to `__MP_LEGACY_SUPPORT_*` defs for safer usage.
</span>---
 Makefile                               | 118 +++++++++++++--------
 README.md                              |   5 +-
 include/MacportsLegacySupport.h        |  29 ++++--
 include/wchar.h                        |  25 ++++-
 include/{wchar.h => xlocale/_wchar.h}  |  19 ++--
 include/wchar.h => src/wcpcpy_family.c |  33 +++---
 src/wcscasecmp_family.c                |  65 ++++++++++++
 include/wchar.h => src/wcsnlen.c       |  29 ++----
 test/test_wcscasecmp.c                 | 182 +++++++++++++++++++++++++++++++++
 9 files changed, 405 insertions(+), 100 deletions(-)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/Makefile b/Makefile
</span><span style='display:block; white-space:pre;color:#808080;'>index 2fc2831..0000352 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/Makefile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/Makefile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,6 +1,5 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-# Copyright (c) 2010 Chris Jones <jonesc@macports.org>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# GNU Makefile for MacportsLegacySupport
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Copyright (c) 2018 Christian Cornelssen
</span> #
 # Permission to use, copy, modify, and distribute this software for any
 # purpose with or without fee is hereby granted, provided that the above
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -14,54 +13,89 @@
</span> # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
 # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-PREFIX  ?= /usr/local
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-DESTDIR ?= 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+DESTDIR         ?= 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PREFIX          ?= /usr/local
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+INCSUBDIR        = LegacySupport
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PKGINCDIR        = $(PREFIX)/include/$(INCSUBDIR)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+LIBDIR           = $(PREFIX)/lib
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+SOEXT            = .dylib
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+LIBNAME          = MacportsLegacySupport
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+LIBFILE          = lib$(LIBNAME)$(SOEXT)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+LIBPATH          = $(LIBDIR)/$(LIBFILE)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+BUILDLIBDIR      = lib
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+BUILDLIBPATH     = $(BUILDLIBDIR)/$(LIBFILE)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+BUILDLIBFLAGS    = -dynamiclib -headerpad_max_install_names \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                   -install_name @executable_path/../$(BUILDLIBPATH) \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                   -current_version 1.0 -compatibility_version 1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+POSTINSTALL      = install_name_tool
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+POSTINSTALLFLAGS = -id $(LIBPATH)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ARCHFLAGS       ?=
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+CC              ?= cc $(ARCHFLAGS)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+CFLAGS          ?= -Os -Wall
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+CXX             ?= c++ $(ARCHFLAGS)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+CXXFLAGS        ?= -Os -Wall
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+LDFLAGS         ?=
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+MKINSTALLDIRS    = install -d -m 755
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+INSTALL_PROGRAM  = install -c -m 755
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+INSTALL_DATA     = install -c -m 644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+RM               = rm -f
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+RMDIR            = sh -c 'for d; do test ! -d "$d" || rmdir -p "$d"; done' rmdir
</span> 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-CC       ?= cc      # The C compiler.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-CFLAGS   ?= -Os     # C compilation options which relate to
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    # optimization or debugging (usually
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    # just -g or -O).  Usually this wouldn't
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    # include -I options to specify the
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    # include directories, because then you
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    # couldn't override it on the command line
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    # easily as in the above example.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-CXX      ?= c++     # The C++ compiler.  (Sometimes "CPP" instead
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    # of CXX.)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-CXXFLAGS ?= -Os     # C++ compilation options related to 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    # optimization or debugging (-O or -g).
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-F77      ?= f77     # The fortran compiler.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-FFLAGS   ?=         # Optimization flags for fortran.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+SRCDIR           = src
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+SRCINCDIR        = include
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ALLHEADERS      := $(wildcard $(SRCINCDIR)/*.h $(SRCINCDIR)/*/*.h $(SRCDIR)/*.h)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+LIBOBJECTS      := $(patsubst %.c,%.o,$(wildcard $(SRCDIR)/*.c))
</span> 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-MPLEGACYSUPPNAME = MacportsLegacySupport
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-MPLEGACYSUPPLIB  = lib$(MPLEGACYSUPPNAME).dylib
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-INSTALLINCDIR    = $(PREFIX)/include/LegacySupport
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+TESTDIR          = test
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+TESTNAMEPREFIX   = $(TESTDIR)/test_
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+TESTRUNPREFIX    = run_
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+TESTLIBS         = -L$(BUILDLIBDIR) -l$(LIBNAME)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+TESTSRCS_C      := $(wildcard $(TESTNAMEPREFIX)*.c)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+TESTSRCS_CPP    := $(wildcard $(TESTNAMEPREFIX)*.cpp)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+TESTPRGS_C      := $(patsubst %.c,%,$(TESTSRCS_C))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+TESTPRGS_CPP    := $(patsubst %.cpp,%,$(TESTSRCS_CPP))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+TESTPRGS         = $(TESTPRGS_C) $(TESTPRGS_CPP)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+TESTRUNS        := $(patsubst $(TESTNAMEPREFIX)%,$(TESTRUNPREFIX)%,$(TESTPRGS))
</span> 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-INCDIR           = ${PWD}/include
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-SRCDIR           = ${PWD}/src/
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+all: $(BUILDLIBPATH)
</span> 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-LIBOBJECTS      := $(patsubst %.c,%.o,$(wildcard $(SRCDIR)*.c))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--include $(LIBOBJECTS:.o=.d)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Generously marking all header files as potential dependencies
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+$(LIBOBJECTS): %.o: %.c $(ALLHEADERS)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   $(CC) -c -I$(SRCINCDIR) $(CFLAGS) $< -o $@
</span> 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-%.o: %.c
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   $(CC) -c -I$(INCDIR) $(CFLAGS) -o $*.o $*.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+$(BUILDLIBPATH): $(LIBOBJECTS)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   $(MKINSTALLDIRS) $(BUILDLIBDIR)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   $(CC) $(BUILDLIBFLAGS) $(LDFLAGS) $^ -o $@
</span> 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-# Causes issues with universal builds with some compilers.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#  $(CC) -c -I$(INCDIR) $(CFLAGS) -MP -MMD -MT $*.o -MT $*.d -MF $*.d -o $*.o $*.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+install: install-headers install-lib
</span> 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-$(MPLEGACYSUPPLIB): $(LIBOBJECTS)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   $(CC) $(LDFLAGS) -dynamiclib $(LIBOBJECTS) -install_name $(PREFIX)/lib/$(MPLEGACYSUPPLIB) -current_version 1.0 -compatibility_version 1.0 -o $(MPLEGACYSUPPLIB)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+install-headers:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   $(MKINSTALLDIRS) $(DESTDIR)$(PKGINCDIR)/sys
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   $(MKINSTALLDIRS) $(DESTDIR)$(PKGINCDIR)/xlocale
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   $(INSTALL_DATA) $(wildcard include/*.h include/c*) $(DESTDIR)$(PKGINCDIR)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   $(INSTALL_DATA) $(wildcard include/sys/*)     $(DESTDIR)$(PKGINCDIR)/sys
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   $(INSTALL_DATA) $(wildcard include/xlocale/*) $(DESTDIR)$(PKGINCDIR)/xlocale
</span> 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-all: $(MPLEGACYSUPPLIB)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+install-lib: $(BUILDLIBPATH)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   $(MKINSTALLDIRS) $(DESTDIR)$(LIBDIR)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   $(INSTALL_PROGRAM) $(BUILDLIBPATH) $(DESTDIR)$(LIBDIR)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   $(POSTINSTALL) $(POSTINSTALLFLAGS) $(DESTDIR)$(LIBPATH)
</span> 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-install: all
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   @mkdir -p $(DESTDIR)$(PREFIX)/lib $(DESTDIR)$(INSTALLINCDIR) $(DESTDIR)$(INSTALLINCDIR)/sys
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   install    -m 0755 $(MPLEGACYSUPPLIB)      $(DESTDIR)$(PREFIX)/lib
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   install -m 0755 $(wildcard include/*.h)    $(DESTDIR)$(INSTALLINCDIR)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   install -m 0755 $(wildcard include/c*)     $(DESTDIR)$(INSTALLINCDIR)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   install -m 0755 $(wildcard include/sys/*)  $(DESTDIR)$(INSTALLINCDIR)/sys
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+test check: $(TESTRUNS)
</span> 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-test_time: $(install)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   $(CXX) $(CFLAGS) -I$(DESTDIR)$(INSTALLINCDIR) -L$(DESTDIR)$(PREFIX)/lib -l$(MPLEGACYSUPPNAME) test/test_time.cpp -o test_time.exe
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+$(TESTRUNS): $(TESTRUNPREFIX)%: $(TESTNAMEPREFIX)%
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   $<
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+$(TESTPRGS_C): %: %.c $(BUILDLIBPATH)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   $(CC) -I$(SRCINCDIR) $(CFLAGS) $< $(TESTLIBS) -o $@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+$(TESTPRGS_CPP): %: %.cpp $(BUILDLIBPATH)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   $(CXX) -I$(SRCINCDIR) $(CXXFLAGS) $< $(TESTLIBS) -o $@
</span> 
 clean:
<span style='display:block; white-space:pre;background:#ffe0e0;'>-        @rm -fv $(SRCDIR)*.o $(SRCDIR)*.d $(MPLEGACYSUPPLIB) test_time.exe
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   $(RM) $(SRCDIR)/*.o $(SRCDIR)/*.d $(BUILDLIBPATH) $(TESTPRGS)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   @$(RMDIR) $(BUILDLIBDIR)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+.PHONY: all clean install install-headers install-lib test check $(TESTRUNS)
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/README.md b/README.md
</span><span style='display:block; white-space:pre;color:#808080;'>index 05d31b7..3b757b3 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/README.md
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/README.md
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -19,7 +19,10 @@ Wrapped headers are:
</span>  - stdlib.h      : Adds `posix_memalign` functional replacement, missing in OSX10.5 and older.
  - string.h      : Adds `strnlen`, `strndup` and `memmem` functions missing in OSX10.6 and older.
  - time.h        : Adds `clock_gettime` function missing in OSX10.11 and older.
<span style='display:block; white-space:pre;background:#ffe0e0;'>- - wchar.h       : Adds `wcsdup` function missing in OSX10.6 and older.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ - wchar.h       : Adds functions `wcsdup`, `wcsnlen`, `wcpcpy`, `wcpncpy`,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                   `wcscasecmp`, `wcsncasecmp` missing in OSX10.6 and older.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ - xlocale/\_wchar.h : Adds functions `wcscasecmp_l`, `wcsncasecmp_l`
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                   missing in OSX10.6 and older.
</span>  - sys/fcntl.h   : Adds missing `O_CLOEXEC`, `AT_FDCWD`, `AT_EACCESS`, `AT_SYMLINK_NOFOLLOW`,
                  : `AT_SYMLINK_FOLLOW`, and `AT_REMOVEDIR` definitions as required.
  - sys/fcntl.h   : Adds `openat` function missing in OSX10.9 and older.
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/include/MacportsLegacySupport.h b/include/MacportsLegacySupport.h
</span><span style='display:block; white-space:pre;color:#808080;'>index 3b10a35..47c2875 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/include/MacportsLegacySupport.h
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/include/MacportsLegacySupport.h
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -24,33 +24,42 @@
</span> /* defines for when legacy support is required for various functions */
 
 /* clock_gettime */
<span style='display:block; white-space:pre;background:#ffe0e0;'>-#define __MP_LEGACY_SUPPORT_GETTIME__ __APPLE__ && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ < 101200
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __MP_LEGACY_SUPPORT_GETTIME__ (__APPLE__ && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ < 101200)
</span> 
 /* strnlen */
<span style='display:block; white-space:pre;background:#ffe0e0;'>-#define __MP_LEGACY_SUPPORT_STRNLEN__ __APPLE__ && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ < 1070
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __MP_LEGACY_SUPPORT_STRNLEN__ (__APPLE__ && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ < 1070)
</span> 
 /* strndup */
<span style='display:block; white-space:pre;background:#ffe0e0;'>-#define __MP_LEGACY_SUPPORT_STRNDUP__ __APPLE__ && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ < 1070
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __MP_LEGACY_SUPPORT_STRNDUP__ (__APPLE__ && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ < 1070)
</span> 
 /* getline */
<span style='display:block; white-space:pre;background:#ffe0e0;'>-#define __MP_LEGACY_SUPPORT_GETLINE__ __APPLE__ && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ < 1070
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __MP_LEGACY_SUPPORT_GETLINE__ (__APPLE__ && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ < 1070)
</span> 
 /* memmem */
<span style='display:block; white-space:pre;background:#ffe0e0;'>-#define __MP_LEGACY_SUPPORT_MEMMEM__  __APPLE__ && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ < 1070
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __MP_LEGACY_SUPPORT_MEMMEM__  (__APPLE__ && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ < 1070)
</span> 
 /* wcsdup */
<span style='display:block; white-space:pre;background:#ffe0e0;'>-#define __MP_LEGACY_SUPPORT_WCSDUP__  __APPLE__ && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ < 1070
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __MP_LEGACY_SUPPORT_WCSDUP__  (__APPLE__ && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ < 1070)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/* wcsnlen */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __MP_LEGACY_SUPPORT_WCSNLEN__ (__APPLE__ && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ < 1070)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/* wcpcpy, wcpncpy */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __MP_LEGACY_SUPPORT_WCPCPY__  (__APPLE__ && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ < 1070)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/* wcsncasecmp_l, wcscasecmp_l, wcsncasecmp, wcscasecmp */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __MP_LEGACY_SUPPORT_WCSCASECMP__  (__APPLE__ && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ < 1070)
</span> 
 /* llround */
<span style='display:block; white-space:pre;background:#ffe0e0;'>-#define __MP_LEGACY_SUPPORT_LLROUND__  __APPLE__ && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ < 1070
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __MP_LEGACY_SUPPORT_LLROUND__ (__APPLE__ && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ < 1070)
</span> 
 /* **at */
<span style='display:block; white-space:pre;background:#ffe0e0;'>-#define __MP_LEGACY_SUPPORT_ATCALLS__  __APPLE__ && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ < 101000
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __MP_LEGACY_SUPPORT_ATCALLS__ (__APPLE__ && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ < 101000)
</span> 
 /* lsmod */
<span style='display:block; white-space:pre;background:#ffe0e0;'>-#define __MP_LEGACY_SUPPORT_LSMOD__  __APPLE__ && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ < 1050
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __MP_LEGACY_SUPPORT_LSMOD__   (__APPLE__ && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ < 1050)
</span> 
 /* posix_memalign */
<span style='display:block; white-space:pre;background:#ffe0e0;'>-#define __MP_LEGACY_SUPPORT_POSIX_MEMALIGN__  __APPLE__ && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ < 1060
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define __MP_LEGACY_SUPPORT_POSIX_MEMALIGN__  (__APPLE__ && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ < 1060)
</span> 
 #endif /* _MACPORTS_LEGACYSUPPORTDEFS_H_ */
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/include/wchar.h b/include/wchar.h
</span><span style='display:block; white-space:pre;color:#808080;'>index 6061965..25233f2 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/include/wchar.h
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/include/wchar.h
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -24,15 +24,34 @@
</span> /* MP support header */
 #include "MacportsLegacySupport.h"
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-/* wcsdup */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#if __MP_LEGACY_SUPPORT_WCSDUP__
</span> #ifdef __cplusplus
 extern "C" {
 #endif
<span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/* wcsdup */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#if __MP_LEGACY_SUPPORT_WCSDUP__
</span>   extern wchar_t * wcsdup(const wchar_t *s);
<span style='display:block; white-space:pre;background:#e0ffe0;'>+#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/* wcsnlen */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#if __MP_LEGACY_SUPPORT_WCSNLEN__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  extern size_t wcsnlen(const wchar_t *, size_t);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/* wcpcpy, wcpncpy */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#if __MP_LEGACY_SUPPORT_WCPCPY__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  extern wchar_t * wcpcpy(wchar_t *__restrict d, const wchar_t *__restrict s);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  extern wchar_t *wcpncpy(wchar_t *__restrict d, const wchar_t *__restrict s, size_t n);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/* wcsncasecmp, wcscasecmp */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#if __MP_LEGACY_SUPPORT_WCSCASECMP__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  extern int  wcscasecmp(const wchar_t *l, const wchar_t *r);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  extern int wcsncasecmp(const wchar_t *l, const wchar_t *r, size_t n);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> #ifdef __cplusplus
 }
 #endif
<span style='display:block; white-space:pre;background:#ffe0e0;'>-#endif
</span> 
 #endif /* _MACPORTS_WCHAR_H_ */
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/include/wchar.h b/include/xlocale/_wchar.h
</span>similarity index 64%
copy from include/wchar.h
copy to include/xlocale/_wchar.h
<span style='display:block; white-space:pre;color:#808080;'>index 6061965..54ecea3 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/include/wchar.h
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/include/xlocale/_wchar.h
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,6 +1,6 @@
</span> 
 /*
<span style='display:block; white-space:pre;background:#ffe0e0;'>- * Copyright (c) 2010 Chris Jones <jonesc@macports.org>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * Copyright (c) 2018 Christian Cornelssen
</span>  *
  * Permission to use, copy, modify, and distribute this software for any
  * purpose with or without fee is hereby granted, provided that the above
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -15,24 +15,25 @@
</span>  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  */
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-#ifndef _MACPORTS_WCHAR_H_
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#define _MACPORTS_WCHAR_H_
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#ifndef _MACPORTS_XLOCALE__WCHAR_H_
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define _MACPORTS_XLOCALE__WCHAR_H_
</span> 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-/* Include the primary system wchar.h */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#include_next <wchar.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/* Include the primary system xlocale/_wchar.h */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include_next <xlocale/_wchar.h>
</span> 
 /* MP support header */
 #include "MacportsLegacySupport.h"
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-/* wcsdup */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#if __MP_LEGACY_SUPPORT_WCSDUP__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/* wcsncasecmp_l, wcscasecmp_l */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#if __MP_LEGACY_SUPPORT_WCSCASECMP__
</span> #ifdef __cplusplus
 extern "C" {
 #endif
<span style='display:block; white-space:pre;background:#ffe0e0;'>-  extern wchar_t * wcsdup(const wchar_t *s);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  extern int wcscasecmp_l(const wchar_t *l, const wchar_t *r, locale_t locale);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  extern int wcsncasecmp_l(const wchar_t *l, const wchar_t *r, size_t n, locale_t locale);
</span> #ifdef __cplusplus
 }
 #endif
 #endif
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-#endif /* _MACPORTS_WCHAR_H_ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#endif /* _MACPORTS_XLOCALE__WCHAR_H_ */
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/include/wchar.h b/src/wcpcpy_family.c
</span>similarity index 63%
copy from include/wchar.h
copy to src/wcpcpy_family.c
<span style='display:block; white-space:pre;color:#808080;'>index 6061965..3ff9504 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/include/wchar.h
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/src/wcpcpy_family.c
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,6 +1,6 @@
</span> 
 /*
<span style='display:block; white-space:pre;background:#ffe0e0;'>- * Copyright (c) 2010 Chris Jones <jonesc@macports.org>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * Copyright (c) 2018 Christian Cornelssen
</span>  *
  * Permission to use, copy, modify, and distribute this software for any
  * purpose with or without fee is hereby granted, provided that the above
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -15,24 +15,23 @@
</span>  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  */
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-#ifndef _MACPORTS_WCHAR_H_
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#define _MACPORTS_WCHAR_H_
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// MP support header
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include "MacportsLegacySupport.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#if __MP_LEGACY_SUPPORT_WCPCPY__
</span> 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-/* Include the primary system wchar.h */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#include_next <wchar.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include <wchar.h>
</span> 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-/* MP support header */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#include "MacportsLegacySupport.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+wchar_t *wcpncpy(wchar_t *__restrict d, const wchar_t *__restrict s, size_t n)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    wint_t c;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    while (n && (c = *s)) --n, *d++ = c, ++s;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    return wmemset(d, 0, n);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span> 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-/* wcsdup */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#if __MP_LEGACY_SUPPORT_WCSDUP__
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#ifdef __cplusplus
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-extern "C" {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  extern wchar_t * wcsdup(const wchar_t *s);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#ifdef __cplusplus
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+wchar_t *wcpcpy(wchar_t *__restrict d, const wchar_t *__restrict s)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    while (*d = *s) ++d, ++s;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    return d;
</span> }
<span style='display:block; white-space:pre;background:#ffe0e0;'>-#endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#endif
</span> 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-#endif /* _MACPORTS_WCHAR_H_ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#endif /*  __MP_LEGACY_SUPPORT_WCPCPY__ */
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/src/wcscasecmp_family.c b/src/wcscasecmp_family.c
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..52fe63d
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/src/wcscasecmp_family.c
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,65 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/*
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * Copyright (c) 2018 Christian Cornelssen
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * Permission to use, copy, modify, and distribute this software for any
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * purpose with or without fee is hereby granted, provided that the above
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * copyright notice and this permission notice appear in all copies.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// MP support header
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include "MacportsLegacySupport.h"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#if __MP_LEGACY_SUPPORT_WCSCASECMP__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include <wchar.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include <wctype.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include <xlocale.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include <limits.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include <stdint.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#if WCHAR_MAX > INT_MAX
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/* Caution: multiple argument evaluations */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define _MP_WCDIFFSIGN(a, b)    (((b) < (a)) - ((a) < (b)))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#define _MP_WCDIFFSIGN(a, b)    ((int)(a) - (int)(b))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+int wcsncasecmp_l(const wchar_t *l, const wchar_t *r, size_t n, locale_t locale)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    wint_t lc, rc;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    int d = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    while (!d && n) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        lc = *l++; rc = *r++; --n;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        if (!(lc && rc)) n = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        if (lc == rc) continue;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        lc = towlower_l(lc, locale);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        rc = towlower_l(rc, locale);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        d = _MP_WCDIFFSIGN(lc, rc);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    return d;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+int wcsncasecmp(const wchar_t *l, const wchar_t *r, size_t n)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    return wcsncasecmp_l(l, r, n, 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+int wcscasecmp_l(const wchar_t *l, const wchar_t *r, locale_t locale)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    return wcsncasecmp_l(l, r, -1, locale);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+int wcscasecmp(const wchar_t *l, const wchar_t *r)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    return wcsncasecmp_l(l, r, -1, 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#endif /* __MP_LEGACY_SUPPORT_WCSCASECMP__ */
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/include/wchar.h b/src/wcsnlen.c
</span>similarity index 66%
copy from include/wchar.h
copy to src/wcsnlen.c
<span style='display:block; white-space:pre;color:#808080;'>index 6061965..94ece11 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/include/wchar.h
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/src/wcsnlen.c
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,6 +1,6 @@
</span> 
 /*
<span style='display:block; white-space:pre;background:#ffe0e0;'>- * Copyright (c) 2010 Chris Jones <jonesc@macports.org>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * Copyright (c) 2018 Ken Cunningham
</span>  *
  * Permission to use, copy, modify, and distribute this software for any
  * purpose with or without fee is hereby granted, provided that the above
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -15,24 +15,17 @@
</span>  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  */
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-#ifndef _MACPORTS_WCHAR_H_
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#define _MACPORTS_WCHAR_H_
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-/* Include the primary system wchar.h */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#include_next <wchar.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-/* MP support header */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+// MP support header
</span> #include "MacportsLegacySupport.h"
<span style='display:block; white-space:pre;background:#e0ffe0;'>+#if __MP_LEGACY_SUPPORT_WCSNLEN__
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include <wchar.h>
</span> 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-/* wcsdup */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#if __MP_LEGACY_SUPPORT_WCSDUP__
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#ifdef __cplusplus
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-extern "C" {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-  extern wchar_t * wcsdup(const wchar_t *s);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#ifdef __cplusplus
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+size_t wcsnlen(const wchar_t *s, size_t n)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+{
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    const wchar_t *z = wmemchr(s, 0, n);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    if (z) n = z-s;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    return n;
</span> }
<span style='display:block; white-space:pre;background:#ffe0e0;'>-#endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-#endif
</span> 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-#endif /* _MACPORTS_WCHAR_H_ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#endif /* __MP_LEGACY_SUPPORT_WCSNLEN__ */
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/test/test_wcscasecmp.c b/test/test_wcscasecmp.c
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..75dc3a9
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/test/test_wcscasecmp.c
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,182 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+/*
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * Copyright (c) 2018 Christian Cornelssen
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * Permission to use, copy, modify, and distribute this software for any
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * purpose with or without fee is hereby granted, provided that the above
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * copyright notice and this permission notice appear in all copies.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ *
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include <wchar.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#include <assert.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+int main() {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcscasecmp(L"", L"") == 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcscasecmp(L"a", L"") > 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcscasecmp(L"", L"a") < 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcscasecmp(L"a", L"b") < 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcscasecmp(L"b", L"a") > 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcscasecmp(L"ab", L"b") < 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcscasecmp(L"b", L"ab") > 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcscasecmp(L"ab", L"ba") < 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcscasecmp(L"ba", L"ab") > 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcscasecmp(L"a", L"a") == 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcscasecmp(L"A", L"a") == 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcscasecmp(L"a", L"A") == 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcscasecmp(L"A", L"A") == 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcscasecmp(L"A", L"ab") < 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcscasecmp(L"a", L"Ab") < 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcscasecmp(L"Ab", L"a") > 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcscasecmp(L"ab", L"A") > 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcscasecmp(L"a", L"B") < 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcscasecmp(L"b", L"A") > 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcscasecmp(L"Ab", L"b") < 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcscasecmp(L"B", L"ab") > 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcscasecmp(L"ab", L"Ba") < 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcscasecmp(L"ba", L"Ab") > 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcscasecmp(L"ab", L"ab") == 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcscasecmp(L"aB", L"ab") == 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcscasecmp(L"Ab", L"ab") == 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcscasecmp(L"AB", L"ab") == 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcscasecmp(L"ab", L"Ab") == 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcscasecmp(L"aB", L"Ab") == 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcscasecmp(L"Ab", L"Ab") == 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcscasecmp(L"AB", L"Ab") == 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcscasecmp(L"ab", L"aB") == 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcscasecmp(L"aB", L"aB") == 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcscasecmp(L"Ab", L"aB") == 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcscasecmp(L"AB", L"aB") == 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcscasecmp(L"ab", L"AB") == 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcscasecmp(L"aB", L"AB") == 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcscasecmp(L"Ab", L"AB") == 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcscasecmp(L"AB", L"AB") == 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcsncasecmp(L"", L"", 0) == 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcsncasecmp(L"a", L"", 1) > 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcsncasecmp(L"", L"a", 1) < 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcsncasecmp(L"a", L"b", 1) < 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcsncasecmp(L"b", L"a", 1) > 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcsncasecmp(L"ab", L"b", 2) < 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcsncasecmp(L"b", L"ab", 2) > 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcsncasecmp(L"ab", L"ba", 2) < 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcsncasecmp(L"ba", L"ab", 2) > 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcsncasecmp(L"a", L"a", 1) == 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcsncasecmp(L"A", L"a", 1) == 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcsncasecmp(L"a", L"A", 1) == 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcsncasecmp(L"A", L"A", 1) == 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcsncasecmp(L"A", L"ab", 2) < 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcsncasecmp(L"a", L"Ab", 2) < 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcsncasecmp(L"Ab", L"a", 2) > 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcsncasecmp(L"ab", L"A", 2) > 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcsncasecmp(L"a", L"B", 1) < 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcsncasecmp(L"b", L"A", 1) > 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcsncasecmp(L"Ab", L"b", 2) < 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcsncasecmp(L"B", L"ab", 2) > 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcsncasecmp(L"ab", L"Ba", 2) < 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcsncasecmp(L"ba", L"Ab", 2) > 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcsncasecmp(L"ab", L"ab", 2) == 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcsncasecmp(L"aB", L"ab", 2) == 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcsncasecmp(L"Ab", L"ab", 2) == 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcsncasecmp(L"AB", L"ab", 2) == 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcsncasecmp(L"ab", L"Ab", 2) == 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcsncasecmp(L"aB", L"Ab", 2) == 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcsncasecmp(L"Ab", L"Ab", 2) == 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcsncasecmp(L"AB", L"Ab", 2) == 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcsncasecmp(L"ab", L"aB", 2) == 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcsncasecmp(L"aB", L"aB", 2) == 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcsncasecmp(L"Ab", L"aB", 2) == 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcsncasecmp(L"AB", L"aB", 2) == 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcsncasecmp(L"ab", L"AB", 2) == 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcsncasecmp(L"aB", L"AB", 2) == 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcsncasecmp(L"Ab", L"AB", 2) == 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcsncasecmp(L"AB", L"AB", 2) == 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcsncasecmp(L"x", L"y", 0) == 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcsncasecmp(L"ax", L"y", 1) < 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcsncasecmp(L"x", L"ay", 1) > 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcsncasecmp(L"ax", L"by", 1) < 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcsncasecmp(L"bx", L"ay", 1) > 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcsncasecmp(L"abx", L"by", 2) < 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcsncasecmp(L"bx", L"aby", 2) > 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcsncasecmp(L"abx", L"bay", 2) < 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcsncasecmp(L"bax", L"aby", 2) > 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcsncasecmp(L"ax", L"ay", 1) == 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcsncasecmp(L"Ax", L"ay", 1) == 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcsncasecmp(L"ax", L"Ay", 1) == 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcsncasecmp(L"Ax", L"Ay", 1) == 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcsncasecmp(L"Ax", L"aby", 2) > 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcsncasecmp(L"ax", L"Aby", 2) > 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcsncasecmp(L"Abx", L"ay", 2) < 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcsncasecmp(L"abx", L"Ay", 2) < 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcsncasecmp(L"ax", L"By", 1) < 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcsncasecmp(L"bx", L"Ay", 1) > 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcsncasecmp(L"Abx", L"by", 2) < 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcsncasecmp(L"Bx", L"aby", 2) > 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcsncasecmp(L"abx", L"Bay", 2) < 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcsncasecmp(L"bax", L"Aby", 2) > 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcsncasecmp(L"abx", L"aby", 2) == 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcsncasecmp(L"aBx", L"aby", 2) == 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcsncasecmp(L"Abx", L"aby", 2) == 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcsncasecmp(L"ABx", L"aby", 2) == 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcsncasecmp(L"abx", L"Aby", 2) == 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcsncasecmp(L"aBx", L"Aby", 2) == 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcsncasecmp(L"Abx", L"Aby", 2) == 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcsncasecmp(L"ABx", L"Aby", 2) == 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcsncasecmp(L"abx", L"aBy", 2) == 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcsncasecmp(L"aBx", L"aBy", 2) == 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcsncasecmp(L"Abx", L"aBy", 2) == 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcsncasecmp(L"ABx", L"aBy", 2) == 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcsncasecmp(L"abx", L"ABy", 2) == 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcsncasecmp(L"aBx", L"ABy", 2) == 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcsncasecmp(L"Abx", L"ABy", 2) == 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcsncasecmp(L"ABx", L"ABy", 2) == 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcsncasecmp(L"y", L"x", 0) == 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcsncasecmp(L"ay", L"x", 1) < 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcsncasecmp(L"y", L"ax", 1) > 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcsncasecmp(L"ay", L"bx", 1) < 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcsncasecmp(L"by", L"ax", 1) > 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcsncasecmp(L"aby", L"bx", 2) < 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcsncasecmp(L"by", L"abx", 2) > 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcsncasecmp(L"aby", L"bax", 2) < 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcsncasecmp(L"bay", L"abx", 2) > 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcsncasecmp(L"ay", L"ax", 1) == 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcsncasecmp(L"Ay", L"ax", 1) == 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcsncasecmp(L"ay", L"Ax", 1) == 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcsncasecmp(L"Ay", L"Ax", 1) == 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcsncasecmp(L"Ay", L"abx", 2) > 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcsncasecmp(L"ay", L"Abx", 2) > 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcsncasecmp(L"Aby", L"ax", 2) < 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcsncasecmp(L"aby", L"Ax", 2) < 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcsncasecmp(L"ay", L"Bx", 1) < 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcsncasecmp(L"by", L"Ax", 1) > 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcsncasecmp(L"Aby", L"bx", 2) < 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcsncasecmp(L"By", L"abx", 2) > 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcsncasecmp(L"aby", L"Bax", 2) < 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcsncasecmp(L"bay", L"Abx", 2) > 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcsncasecmp(L"aby", L"abx", 2) == 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcsncasecmp(L"aBy", L"abx", 2) == 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcsncasecmp(L"Aby", L"abx", 2) == 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcsncasecmp(L"ABy", L"abx", 2) == 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcsncasecmp(L"aby", L"Abx", 2) == 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcsncasecmp(L"aBy", L"Abx", 2) == 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcsncasecmp(L"Aby", L"Abx", 2) == 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcsncasecmp(L"ABy", L"Abx", 2) == 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcsncasecmp(L"aby", L"aBx", 2) == 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcsncasecmp(L"aBy", L"aBx", 2) == 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcsncasecmp(L"Aby", L"aBx", 2) == 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcsncasecmp(L"ABy", L"aBx", 2) == 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcsncasecmp(L"aby", L"ABx", 2) == 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcsncasecmp(L"aBy", L"ABx", 2) == 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcsncasecmp(L"Aby", L"ABx", 2) == 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    assert (wcsncasecmp(L"ABy", L"ABx", 2) == 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    return 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span></pre><pre style='margin:0'>

</pre>