<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>