+2017-02-04 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Resolve a global variable naming inconsistency.
+
+ * mingwex/ofmt.c (__mingw_output_format_flag): Rename it as...
+ (__mingw_output_format_flags): ...this, at point of definition, and
+ update all references, to maintain consistency with usage...
+ * mingwex/ofmtctl.c (__mingw_output_format_flags): ...here.
+
+ * mingwex/stdio/pformat.c: Update references.
+
+2017-01-30 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Implement strerror_r()/strerror_s() API.
+
+ * mingwex/strerror_r.c: New file; it implements...
+ (strerror_r): ...this new POSIX.1-2001 conforming function.
+
+ * include/string.h (strerror_s): Add function prototype, subject to...
+ [_MSVCR80_DLL || _WIN32_WINNT_VISTA]: ...this DLL version dependency;
+ otherwise implement an inline wrapper function to emulate it, using...
+ [_POSIX_C_SOURCE > 200112L] (strerror_r): ...this; add prototype.
+
+ * Makefile.in (libmingwex.a): Add strerror_r.$OBJEXT
+
+2017-01-30 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Avoid -Wformat noise from snprintf() and vsnprintf()
+
+ * include/stdio.h (snprintf, vsnprintf): Add inline implementations;
+ they redirect to "__mingw_" prefixed alternatives, so suppressing the
+ effect of automatic format attribute recognition.
+
+2017-01-30 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Remove duplicate libmingwex.a entries.
+
+ * mingwex/jmpstub.sx (DLLENTRY): Interpret it.
+
+ * Makefile.in (jmpstub_awk_script): Handle DLLENTRY.
+ (libmingwex.a): Remove explicit object file references to...
+ (snwprintf, vsnwprintf): ...these.
+
+ * include/stdio.h (snwprintf, vsnwprintf): Map them as __JMPSTUB__
+ references to MSVCRT.DLL entry points, via DLLENTRY references to...
+ (_snwprintf, _vsnwprintf): ...these, respectively.
+
+ * mingwex/snwprintf.c: Redundant file; delete it.
+ * mingwex/vsnwprintf.c: Likewise.
+
+2017-01-29 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Clean up <limits.h> header file.
+
+ * include/limits.h: Tidy layout; assert copyright.
+ (#pragma GCC system_header): Declare it as being such.
+ (_LIMITS_H_): Rename this multiple inclusion guard macro...
+ (_LIMITS_H): ...to adopt this preferred form.
+ [__STDC_VERSION__ >= 199901L]: Infer it...
+ [_ISOC99_SOURCE]: ...from this.
+
+2017-01-29 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Expose C99 features required by C++11; fix issue [#2335]
+
+ * include/_mingw.h.in (_ISOC99_SOURCE): Ensure it is defined for...
+ [__cplusplus >= 201103L]: ...this conformance level, in addition to...
+ [__STDC_VERSION__>= 199901L || _POSIX_C_SOURCE >= 200112L]: ...these.
+ [_GLIBCXX_USE_C99]: Force it for -std=c++11, subject to...
+ [__GNUC__ < 6]: ...this.
+
+ * include/ctype.h (isblank): Declare it only if...
+ [_ISOC99_SOURCE]: ...this, thus simplifying declarative condition.
+ * include/wctype.h (iswblank) [_ISOC99_SOURCE]: Likewise.
+ * include/inttypes.h (SCNd8, SCNdLEAST8, SCNdFAST8, SCNi8, SCNiLEAST8)
+ (SCNiFAST8, SCNo8, SCNoLEAST8, SCNoFAST8, SCNx8, SCNxLEAST8, SCNxFAST8)
+ (SCNu8, SCNuLEAST8, SCNuFAST8) [_ISOC99_SOURCE]: Likewise.
+
+2017-01-28 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Make strnlen() and wcsnlen() declaratively consistent.
+
+ * include/string.h (strnlen): Do not expose its declaration, unless...
+ [_POSIX_C_SOURCE >= 200809L]: ...this feature test is enabled.
+
+2017-01-28 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Implement wcsnlen() API per feature request [#2332].
+
+ * mingwex/strnlen.s: Rename it as...
+ * mingwex/strnlen.sx: ...this; use C preprocessor logic to adapt...
+ (__mingw_strnlen): ...this existing function implementation for use...
+ [_UNICODE] (__mingw_wcsnlen): ...as this.
+
+ * include/wchar.h [_POSIX_C_SOURCE >= 200809L] (wcsnlen): Declare...
+ [__MSVCRT_VERSION__>=__MSVCR80_DLL]: ...using MS DLL implementation...
+ [!__MSVCRT_VERSION__>=__MSVCR80_DLL] (__mingw_wcsnlen): ...otherwise,
+ declare this, with inline __JMPSTUB__ implementation, providing...
+ (wcsnlen): ...this.
+
+ * Makefile.in (wcsnlen.$OBJEXT): New build rule.
+ (libmingwex.a): Add wcsnlen.$OBJEXT as new prerequisite.
+ (libmoldname.a, libmoldnamed.a): Add __JMPSTUB__ wrappers.
+ (libmoldname70.a, libmoldname70d.a): Likewise.
+ (libmoldname71.a, libmoldname71d.a): Likewise.
+
+ for all other MSVC non-free associated oldname import libraries.
+ (vpath): Add $srcdir/mingwex for %.sx; hence mapping for...
+ (jmpstub.sx): ...this becomes redundant; delete it.
+
+2017-01-26 Jason Hood <jadoxa@yahoo.com.au>
+
+ Honour GLOB_CASEMATCH for globbing sets; cf. issue [#2327].
+
+ * include/glob.h (GLOB_CASEMATCH): Update comment.
+ * mingwex/glob.c (glob_case_match): Move before, and use it in...
+ (glob_in_set): ...this function, to test characters in the set.
+
+2017-01-26 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Avoid snprintf() overhead in directory stream functions.
+
+ * mingwex/dirent.c (dirent_update): Do not use either snprintf() or
+ snwprintf() functions when updating dd->d_name and dd->d_namlen data;
+ emulate them instead, using a lightweight inline char-by-char counted
+ copy loop, operating on char or wchar_t data as appropriate.
+ (DIRENT_ASSIGN_NAME): Macro no longer required; delete it.
+ (NUL): New manifest constant; define it.
+
+2017-01-26 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Avoid #include_next misbehaviour; cf. MinGW-Bug [#2330]
+
+ * include/ctype.h (wctype.h): Use "..." form of #include, rather than
+ the <...> form; we must include our own corresponding mingwrt version
+ of this subsidiary header, and avoid any bogus alternative which may
+ have been insinuated earlier in the system header path.
+
+ * include/string.h (wchar.h): Likewise.
+
2017-01-25 Jason Hood <jadoxa@yahoo.com.au>
Correct quoted backslash handling, per bug [#2328].