+2022-08-26 Keith Marshall <keith@users.osdn.me>
+
+ Do not expose private declarations in <search.h>
+
+ * include/search.h [_SEARCH_PRIVATE]: Do not consider.
+ (struct node, node_t, __MINGW_NONNULL): Relocate [re]definitions...
+ * mingwex/tsearch.h: ...to this new (private) header file.
+
+ * mingwex/tdelete.c mingwex/tfind.c mingwex/tsearch.c
+ * mingwex/twalk.c: Include "tsearch.h" in each, in place of
+ <search.h>; (the latter will be indirectly included by the former).
+ (_SEARCH_PRIVATE): Remove definition; it is no longer required.
+
+2022-08-15 Keith Marshall <keith@users.osdn.me>
+
+ Correct project name references in mingwrt manpages.
+
+ * man/btowc.3.man man/dirname.3.man man/getline.3.man man/mbrlen.3.man
+ * man/mbrtowc.3.man man/mbsinit.3.man man/mbsrtowcs.3.man
+ * man/wcrtomb.3.man man/wcsrtombs.3.man man/wctob.3.man: Replace all
+ references to defunct "MinGW.org" project name; refer to "MinGW.OSDN"
+ instead.
+
+2022-08-15 Keith Marshall <keith@users.osdn.me>
+
+ Correct project name references in mingwrt source files.
+
+ * README CRT_fenv.c Makefile.in configure.ac cpu_features.sx crt1.c
+ * setargv.c include/_mingw.h.in include/alloca.h include/conio.h
+ * include/ctype.h include/dir.h include/direct.h include/dlfcn.h
+ * include/dos.h include/errno.h include/excpt.h include/fenv.h
+ * include/float.h include/getopt.h include/glob.h include/io.h
+ * include/libgen.h include/limits.h include/locale.h include/malloc.h
+ * include/math.h include/msvcrtver.h include/process.h
+ * include/stdint.h include/stdio.h include/stdlib.h include/string.h
+ * include/strings.h include/time.h include/unistd.h include/wchar.h
+ * include/wctype.h include/sys/bsdtypes.h include/sys/stat.h
+ * include/sys/time.h include/sys/timeb.h include/sys/types.h
+ * include/sys/utime.h mingwex/basename.c mingwex/btowc.c
+ * mingwex/clockapi.c mingwex/clockapi.h mingwex/clockres.c
+ * mingwex/clockset.c mingwex/clocktime.c mingwex/codeset.c
+ * mingwex/complex/cabs_generic.c mingwex/complex/casin_generic.c
+ * mingwex/complex/catan_generic.c mingwex/complex/clog_generic.c
+ * mingwex/complex/cpow_generic.c mingwex/complex/csqrt_generic.c
+ * mingwex/cryptnam.c mingwex/dirent.c mingwex/dirname.c
+ * mingwex/dlfcn.c mingwex/fesetenv.c mingwex/ftruncate.c
+ * mingwex/glob.c mingwex/imaxdiv.c mingwex/insque.c mingwex/jmpstub.sx
+ * mingwex/math/asinh_generic.c mingwex/math/errno.sx
+ * mingwex/math/fmod_generic.sx.in mingwex/math/hypot_generic.c
+ * mingwex/math/log10_generic.sx mingwex/math/log1p_generic.sx
+ * mingwex/math/log2_generic.sx mingwex/math/log_generic.sx
+ * mingwex/math/pow_generic.sx mingwex/math/random.c
+ * mingwex/math/remquo_generic.sx mingwex/math/x87cvt_generic.sx
+ * mingwex/mbrconv.c mingwex/mbrlen.c mingwex/mbrscan.c
+ * mingwex/mbrtowc.c mingwex/mbsrtowcs.c mingwex/memalign.c
+ * mingwex/memcrypt.c mingwex/mkdtemp.c mingwex/mkstemp.c
+ * mingwex/nsleep.c mingwex/ofmt.c mingwex/ofmtctl.c mingwex/remque.c
+ * mingwex/setenv.c mingwex/stdio/fseeki64.c mingwex/stdio/ftelli64.c
+ * mingwex/stdio/fwrite.c mingwex/stdio/getdelim.c
+ * mingwex/stdio/pformat.c mingwex/stdio/snprintf.c
+ * mingwex/stdio/vsnprintf.c mingwex/strerror_r.c mingwex/strnlen.sx
+ * mingwex/strtok_r.c mingwex/wcharmap.c mingwex/wcharmap.h
+ * mingwex/wcrtomb.c mingwex/wcsrtombs.c mingwex/wcstofp.c
+ * mingwex/wctob.c tests/Makefile.in tests/ansiprintf.at
+ * tests/atlocal.in tests/clockapi.at tests/headers.at
+ * tests/logarithms.at tests/memalign.at tests/powerfunc.at
+ * tests/testsuite.at.in: Replace all references to defunct "MinGW.org"
+ project name; refer to "MinGW.OSDN" instead.
+
+2022-01-29 Keith Marshall <keith@users.osdn.me>
+
+ Stop creating redundant "include/parts" directory.
+
+ * Makefile.in (mingwrt_include_subdirs): Remove reference to...
+ (parts): ...this; the directory is no longer used by mingwrt, so it
+ need not be created when performing "make install".
+
+2021-06-25 Keith Marshall <keith@users.osdn.me>
+
+ Correct Microsoft's dup2() POSIX.1 non-conformity.
+
+ * include/unistd.h [! defined dup2]: Define macro reference to...
+ (__mingw_posix_dup2): ...this new in-line function, (as named by the
+ macro); it overrides the Microsoft dup2() function, to ensure that it
+ returns the correct file descriptor, as specified by POSIX.1, rather
+ than zero, as returned by the Microsoft implementation, on success.
+
+2021-06-13 Keith Marshall <keith@users.osdn.me>
+
+ Implement a POSIX.1 compliant pseudo-random number generator.
+
+ * mingwex/math/random.c: New file; it implements...
+ (__mingw_random, __mingw_srandom, __mingw_initstate)
+ (__mingw_setstate): ...each of these API functions.
+ * include/stdlib.h [_XOPEN_SOURCE >= 500]: Declare them; map...
+ (random, srandom, initstate, setstate): ...these aliases.
+ [_BSD_SOURCE]: Likewise.
+
+ * Makefile.in (libmingwex.a): Require random.$OBJEXT
+
+2021-05-29 Keith Marshall <keith@users.osdn.me>
+
+ Correct erroneous mkstemp() availability condition.
+
+ * include/stdlib.h (mkstemp): POSIX requires...
+ [_XOPEN_SOURCE >= 500]: ...this, which is equivalent to...
+ [_POSIX_C_SOURCE >= 199506L]: ...this, and not (as we had it)...
+ [_POSIX_C_SOURCE >= 200112L]: ...this; correct it.
+
+2021-05-23 Keith Marshall <keith@users.osdn.me>
+
+ Add a makefile clarification comment.
+
+ * Makefile.in (msvcrt_repl_funcs): Explain inclusion...
+ (free, realloc): ...these.
+
+2021-04-11 Keith Marshall <keith@users.osdn.me>
+
+ Prepare and publish MinGW.org WSL-5.4.2 release.
+
+ * All files (wsl-5.4.2-release): Tag assigned.
+
+2021-02-25 Keith Marshall <keith@users.osdn.me>
+
+ Consolidate fmod() and remainder() source code.
+
+ * mingwex/math/fmod_generic.sx.in: New file; it replaces...
+ * mingwex/math/remainder.s mingwex/math/remainderf.s: ...these...
+ * mingwex/math/remainderl.s mingwex/math/fmodf.c: ...and these...
+ * mingwex/math/fmodl.c: ...and also this; delete them.
+
+ * Makefile.in (fmod_generic.sx, remainder_generic.sx): Add rule to
+ generate them.
+
+2021-02-24 Keith Marshall <keith@users.osdn.me>
+
+ Correct remquo() quotient computation; cf. MinGW-Bug #41597
+
+ * mingwex/math/remquo_generic.sx: New file; it replaces...
+ * mingwex/math/remquo.s mingwex/math/remquof.s: ...these, and also...
+ * mingwex/math/remquol.s: ...this; delete them.
+
+ * Makefile.in (libmingwex.a): Add "x87remquo.$OBJEXT" requirement.
+
+2021-01-26 Keith Marshall <keith@users.osdn.me>
+
+ Avoid proliferation of static snprintf() implementations.
+
+ * mingwex/dlfcn.c (dlfcn_store_error_message): Do NOT use...
+ (vsnprintf): ...this static inline function; prefer to call...
+ (__mingw_vsnprintf): ...this extern implementation, directly.
+
+ * mingwex/dlfcn.c (dlfcn_strerror)
+ * mingwex/setenv.c (__mingw_setenv)
+ * mingwex/strerror_r.c (strerror_r): Do NOT use...
+ (snprintf): ...this; it expands to create static clones of...
+ (__mingw_snprintf): ...this extern implementation; prefer to call it
+ directly, to avoid code redundancy.
+
+2020-08-07 Keith Marshall <keith@users.osdn.me>
+
+ Initialize MSVCRT.DLL's _pgmptr reference.
+
+ * setargv.c (_setargv) [__CRT_GLOB_USE_MINGW__]: Check for...
+ [_pgmptr == NULL] (_pgmptr): ...uninitialized; initialize it from...
+ (GetModuleFileName): ...this.
+
+2020-07-23 Keith Marshall <keith@users.osdn.me>
+
+ Prepare and publish MinGW.org WSL-5.4.1 release.
+
+ * All files (wsl-5.4.1-release): Tag assigned.
+
+2020-07-20 Keith Marshall <keith@users.osdn.me>
+
+ Add support for emulation of Microsoft's rand_s() function.
+
+ * mingwex/cryptnam.c (crypto_provider, crypto_randomize): Factor out
+ this pair of static inline functions; relocate them to...
+ * mingwex/memcrypt.c: ...this new file.
+ (crypto_randomize): Change linkage to extern; rename it as...
+ (__mingw_crypto_randomize): ...this; use it...
+ * mingwex/cryptnam.c (crypto_random_filename_char): ...here, via...
+ (crypto_randomize): ...this static inline reimplementation.
+
+ * Makefile.in (libmingwex.a): Add dependency reference for...
+ (memcrypt.$OBJEXT): ...this new object file.
+
+ * VERSION.m4 (MINGW_AC_SET_DLLVERSION) [LIBMINGWEX]: Increment it
+ to 5:0:1; __mingw_crypto_randomize adds a new interface, but it does
+ not break ABI backward compatibility.
+
+2020-07-08 Keith Marshall <keith@users.osdn.me>
+
+ Prepare and publish MinGW.org WSL-5.4 release.
+
+ * All files (wsl-5.4-release): Tag assigned.
+
+2020-07-07 Keith Marshall <keith@users.osdn.me>
+
+ Remove redundant MBCS/wide character converter aliases.
+
+ * mingwex/btowc.c (__mingw_btowc, __msvcrt_btowc):
+ * mingwex/mbrlen.c (__mingw_mbrlen, __msvcrt_mbrlen):
+ * mingwex/mbrtowc.c (__mingw_mbrtowc, __msvcrt_mbrtowc):
+ * mingwex/mbsrtowcs.c (__mingw_mbsrtowcs, __msvcrt_mbsrtowcs):
+ * mingwex/wcsrtombs.c (__mingw_wcsrtombs, __msvcrt_wcsrtombs):
+ * mingwex/wcrtomb.c (__mingw_wcrtomb, __msvcrt_wcrtomb):
+ * mingwex/wctob.c (__mingw_wctob, __msvcrt_wctob): Delete aliases.
+
+ * VERSION.m4 (MINGW_AC_SET_DLLVERSION) [LIBMINGWEX]: Increment it
+ to 4:0:0; alias removal breaks ABI backward compatibility.
+
+2020-07-06 Keith Marshall <keith@users.osdn.me>
+
+ Prepare and publish MinGW.org WSL-5.3.4 release.
+
+ * All files (wsl-5.3.4-release): Tag assigned.
+
+2020-07-05 Keith Marshall <keith@users.osdn.me>
+
+ Update MBCS to wide character conversion man pages.
+
+ * man/btowc.3.man man/mbrlen.3.man man/mbrtowc.3.man
+ * man/mbsinit.3.man man/mbsrtowcs.3.man man/wcrtomb.3.man
+ * man/wcsrtombs.3.man man/wctob.3.man: Remove references to Microsoft
+ implementations of documented functions; all means of access to such
+ function implementations have been disabled for MinGW applications.
+
+2020-07-04 Keith Marshall <keith@users.osdn.me>
+
+ Discontinue use of Microsoft's MBCS/wide character converters.
+
+ * include/wchar.h (__mingw_redirect): Delete macro definition.
+ (__mingw_mbrlen, __msvcrt_mbrlen, __mingw_mbrtowc, __msvcrt_mbrtowc)
+ (__mingw_btowc, __msvcrt_btowc, __mingw_mbsrtowcs, __msvcrt_mbsrtowcs)
+ (__mingw_wctob, __msvcrt_wctob, __mingw_wcrtomb, __msvcrt_wcrtomb)
+ (__mingw_wcsrtombs, __msvcrt_wcsrtombs): Delete prototypes, and...
+ (mbrlen, mbrtowc, btowc, mbsrtowcs, wctomb, wcrtomb, wcsrtombs):
+ ...their corresponding redirected inline implementations.
+
+ * mingwex/btowc.c (__msvcrt_btowc): Delete implementation.
+ (__mingw_btowc_fallback, __mingw_btowc): Fold together, into...
+ (btowc): ...this publicly accessible function; add weak aliases...
+ (__mingw_btowc, __msvcrt_btowc): ...named thus.
+
+ * mingwex/mbrlen.c (__msvcrt_mbrlen): Delete implementation.
+ (__mingw_mbrlen_fallback, __mingw_mbrlen): Fold together, into...
+ (mbrlen): ...this publicly accessible function; factor out codeset
+ and codeset property initializations; add weak aliases...
+ (__mingw_mbrlen, __msvcrt_mbrlen): ...named thus.
+
+ * mingwex/mbrtowc.c (__msvcrt_mbrtowc): Delete implementation.
+ (__mingw_mbrtowc_fallback, __mingw_mbrtowc): Fold together, into...
+ (mbrtowc): ...this publicly accessible function; factor out codeset
+ and codeset property initializations; add weak aliases...
+ (__mingw_mbrtowc, __msvcrt_mbrtowc): ...named thus.
+
+ * mingwex/mbsrtowcs.c (__msvcrt_mbsrtowcs): Delete implementation.
+ (__mingw_mbsrtowcs_fallback, __mingw_mbsrtowcs): Fold; rename as...
+ (mbsrtowcs): ...this publicly accessible function; add weak aliases...
+ (__mingw_mbsrtowcs, __msvcrt_mbsrtowcs): ...named thus.
+ (__mbsrtowcs_fallback): Rename it as...
+ (__mbsrtowcs_internal): ...this.
+
+ * mingwex/mbrconv.c (__mingw_mbrtowc_handler): Initialize codeset.
+
+ * mingwex/wcrtomb.c (__msvcrt_wcrtomb): Delete implementation.
+ (__mingw_wcrtomb_fallback, __mingw_wcrtomb): Fold together, into...
+ (wcrtomb): ...this publicly accessible function; add weak aliases...
+ (__mingw_wcrtomb, __msvcrt_wcrtomb): ...named thus.
+ (__wcrtomb_fallback): Rename it as...
+ (__wcrtomb_internal): ...this.
+
+ * mingwex/wcsrtombs.c (__mingw_wcsrtombs): Rename it as...
+ (wcsrtombs): ...this ISO-C99 name; preserve delegation to...
+ (__mingw_wcsrtombs_fallback): ...this, but rename it as...
+ (__mingw_wcsrtombs_internal): ...this; inline it.
+ (__msvcrt_wcsrtombs): Delete implementation.
+ (__mingw_wcsrtombs, __msvcrt_wcsrtombs): Reinstate as weak aliases.
+
+ * mingwex/wctob.c (__msvcrt_wctob): Delete implementation.
+ (__mingw_wctob_fallback, __mingw_wctob): Fold together, into...
+ (wctob): ...this publicly accessible function; add weak aliases...
+ (__mingw_wctob, __msvcrt_wctob): ...named thus.
+
+2020-06-03 Keith Marshall <keith@users.osdn.me>
+
+ Prepare and publish MinGW.org WSL-5.3.3 release.
+
+ * All files (wsl-5.3.3-release): Tag assigned.
+
+2020-06-03 Keith Marshall <keith@users.osdn.me>
+
+ Revert 2020-05-27 changes relating to issue #40438.
+
+ * Makefile.in (libmingw32.a): Remove, and relocate...
+ (codeset.$OBJEXT, mbrscan.$OBJEXT): ...each of these, back to...
+ (libmingwex.a): ...here; the previous relocation created more problems
+ than it solved, and indeed, I can no longer reproduce the issue which
+ prompted the earlier relocation.
+
+2020-05-28 Keith Marshall <keith@users.osdn.me>
+
+ Prepare and publish MinGW.org WSL-5.3.2 release.
+
+ * All files (wsl-5.3.2-release): Tag assigned.
+
+2020-05-28 Keith Marshall <keith@users.osdn.me>
+
+ Avoid recursive optional DLL import library linking.
+
+ * Makefile.in (%.dll.a): Remove target before generation; if it
+ pre-exists, the DLL may appear to recursively depend on itself.
+
+2020-05-27 Keith Marshall <keith@users.osdn.me>
+
+ Fix libmingwex-n.dll dependencies; cf. Issue #40438.
+
+ * Makefile.in (libmingwex.a): Remove...
+ (mbrscan.$OBJEEXT, wcharmap.$OBJEXT): ...these; relocate them to...
+ (libmingw32.a): ...here.
+
+2020-04-30 Keith Marshall <keith@users.osdn.me>
+
+ Prepare and publish MinGW.org WSL-5.3.1 release.
+
+ * All files (wsl-5.3.1-release): Tag assigned.
+
+2020-04-19 Keith Marshall <keith@users.osdn.me>
+
+ Implement POSIX.1-2001 posix_memalign() function.
+
+ * include/stdlib.h [_POSIX_C_SOURCE >= 200112L] (posix_memalign):
+ Implement as inline alias, with libmemalign.a stub, in terms of...
+ (__mingw_aligned_offset_malloc): ...this; duplicate declaration.
+
+2020-04-18 Keith Marshall <keith@users.osdn.me>
+
+ Implement ISO-C11/C++17 aligned_alloc() function.
+
+ * include/stdlib.h (free, realloc): Define as inline aliases for...
+ (__mingw_free, __mingw_realloc): ...these replacements, respectively.
+ [__STDC_VERSION__>=201112L || __cplusplus >=201703L] (aligned_alloc):
+ Implement as inline alias, with libmemalign.a stub, in terms of...
+ (__mingw_aligned_offset_malloc): ...this; duplicate declaration.
+ (_GLIBCXX_HAVE_ALIGNED_ALLOC): Define it.
+
+2020-04-11 Keith Marshall <keith@users.osdn.me>
+
+ Manpage stylistic consistency updates.
+
+ * man/dirname.3.man man/getline.3.man: Miscellaneous stylistic
+ formatting changes.
+
+2020-04-08 Keith Marshall <keith@users.osdn.me>
+
+ Ensure PDF manpages are generated from local sources.
+
+ * Makefile.in (%.$man3ext.pdf): Specify explicit path to $<.$man3ext
+ file, when invoking the 'man -t' command; without it, the command may
+ refer to the build host's native copy, instead of our local version.
+
+2020-04-08 Keith Marshall <keith@users.osdn.me>
+
+ Automatically enumerate manpages for publication.
+
+ * Makefile.in (manpages): New macro; define, and use it...
+ (mingwrt-man3): ...for this, to enumerate associated manpage sources.
+ (manpage_copy, mancopy, manpage_ref): New macros; define them, and...
+ (basename.3, getdelim.3): ...use them.
+
+2020-04-07 Keith Marshall <keith@users.osdn.me>
+
+ Document MinGW MBCS/wide character conversion functions.
+
+ * man/btowc.3.man man/mbrlen.3.man man/mbrtowc.3.man
+ * man/mbsinit.3.man man/mbsrtowcs.3.man man/wcrtomb.3.man
+ * man/wcsrtombs.3.man man/wctob.3.man: New files.
+
+2020-04-02 Keith Marshall <keith@users.osdn.me>
+
+ Handle wcsrtombs() initial surrogate completion.
+
+ * mingwex/wcsrtombs.c (__mingw_wcsrtombs_fallback)
+ [*ps -> high surrogate && **wcs -> low surrogate]: Complete surrogate
+ pair, and evaluate conversion; compute its length, and account for its
+ effect on alloted conversion buffer size. Reset *ps to initial state.
+
+2020-04-02 Keith Marshall <keith@users.osdn.me>
+
+ Correct wchar_t to MBCS unpaired surrogate handling.
+
+ * mingwex/wcharmap.c (__mingw_wctomb_convert) [codeset >= CP_UTF7]:
+ Scan source wchar_t sequence, prior to conversion, checking it for...
+ [high surrogate]: Abort unless immediately followed by low surrogate.
+ [low surrogate]: Likewise, if not preceded by high surrogate.
+
+2020-03-19 Keith Marshall <keith@users.osdn.me>
+
+ Correct a potential mbsrtowcs() surrogate pair overrun.
+
+ * mingwex/mbrscan.c (__mingw_mbtowc_copy) [(count + 1) == len)]: Stop,
+ without storing current multibyte conversion, if surrogate pair.
+
+2020-03-12 Keith Marshall <keith@users.osdn.me>
+
+ Rationalize implementations of fwide() and mbsinit() functions.
+
+ * include/wchar.h (mbsinit): Mark as __LIBIMPL__; reimplement its
+ inline definition, to evaluate its mbstate_t reference argument.
+ (fwide): Mark as __LIBIMPL__.
+
+ * Makefile.in (libmingwex.a): Remove explicit dependencies on...
+ (fwide, mbsinit): ...these; they are implied by __LIBIMPL__ marks.
+
+ * mingwex/fwide.c mingwex/mbsinit.c: Redundant files; delete them.
+
+2020-03-11 Keith Marshall <keith@users.osdn.me>
+
+ Correct a defect in detection of failed btowc() conversions.
+
+ * mingwex/btowc.c (__mingw_btowc_fallback): Use...
+ (__mingw_mbtowc_convert): ...this; verify successful conversion of
+ exactly one byte, to equivalent wchar, otherwise return WEOF.
+ (__mingw_btowc, __msvcrt_btowc): Delegate codeset initialization to...
+ (__mingw_mbrtowc_codeset_init): ...this, so delegating its management
+ externally; remove local provision.
+
+2020-03-10 Keith Marshall <keith@users.osdn.me>
+
+ Correct defects in mbrtowc() invalid conversion state handling.
+
+ * mingwex/mbrconv.c (__mingw_mbrtowc_handler): Abort if restarting a
+ conversion when a low surrogate is pending, but has not been correctly
+ retrieved; additionally, reject any mbstate_t object content which is
+ already representative of a complete multibyte character sequence.
+
+2020-03-10 Keith Marshall <keith@users.osdn.me>
+
+ Base MBCS converter function call redirection on _ISOC99_SOURCE.
+
+ * include/wchar.h (__mingw_redirect): New temporary macro; use it...
+ (btowc, mbrlen, mbrtowc, mbsrtowcs, wctob, wcrtomb, wcsrtombs): ...in
+ each of these inline function definitions, to select between use of...
+ [defined _ISOC99_SOURCE]: ...direct call to MinGW function, or...
+ [! defined _ISOC99_SOURCE]: ...attempt to call MSVCRT.DLL function,
+ with fall back to MinGW, when no MSVCRT.DLL function available.
+
+2020-03-05 Keith Marshall <keith@users.osdn.me>
+
+ Prepare and publish MinGW.org WSL-5.3 release.
+
+ * All files (wsl-5.3-release): Tag assigned.
+
+2020-03-05 Keith Marshall <keith@users.osdn.me>
+
+ Let _ISOC11_SOURCE imply _ISOC99_SOURCE.
+
+ * include/_mingw.h.in [! defined _ISOC99_SOURCE]
+ [defined _ISOC11_SOURCE] (_ISOC99_SOURCE): Define as 0x0F.
+
+2020-03-05 Keith Marshall <keith@users.osdn.me>
+
+ Avoid deprecated specification of esp in asm clobber list.
+
+ * crt1.c (__mingw_CRTStartup): In inline assembly, forced modulo-16
+ alignment of esp is safe, but clobbered esp cannot be restored; GCC-9
+ deprecates its inclusion in clobber list; remove it.
+ [-masm=intel]: Support inline assembler syntax.
+
+2020-03-04 Keith Marshall <keith@users.osdn.me>
+
+ Disallow surrogates as printf() radix and grouping characters.
+
+ * mingwex/stdio/pformat.c (__pformat_emit_digit)
+ [(c == '.') && ((rpchr & 0xF800) == 0xD800)]: Radix point requires a
+ surrogate pair, for representation as UTF-16LE; decline to use it.
+ (__pformat_enable_thousands_grouping) [(tc & 0xF800) == 0xD800]:
+ Likewise, for thousands group separator.
+
+2020-03-04 Keith Marshall <keith@users.osdn.me>
+
+ Reimplement wcstof(), and wcstold() functions.
+
+ * mingwex/wcstofp.c: New file; it implements...
+ (wcstof, wcstold): ...these functions; each is an alias for...
+ (__mingw_wcstof, __mingw_wcstold): ...these, respectively; also...
+ (__mingw_wcstod): ...this; all are implemented in terms of...
+ (__mingw_wcstofp_prescan, __mingw_wcstofp_prepare)
+ (__mingw_wcstofp_bufsize): ...these; implement them.
+
+ * Makefile.in (libmingwex.a): Add dependency references...
+ (wcstofp.$OBJEXT, wcstod.$OBJEXT): ...for these; also include with...
+ (wcstof.$OBJEXT, wcstold.$OBJEXT): ...these, in new build rule.
+
+ * include/stdlib.h (__mingw_wcstod, __mingw_wcstof)
+ (__mingw_wcstold): Declare them.
+
+ * mingwex/mb_wc_common.h mingwex/wcstof.c mingwex/wcstold.c: Files
+ are obsolete, and no longer required; delete them.
+
+2020-03-03 Keith Marshall <keith@users.osdn.me>
+
+ Reimplement btowc(), and wctob() functions.
+
+ * include/wchar.h [__MSVCRT_VERSION__ < __MSVCR80_DLL]
+ (btowc, wctob): Implement them as static inline redirects...
+ (__msvcrt_btowc, __msvcrt_wctob): ...to these; declare them, with
+ additional MinGW specific alternatives declared...
+ (__mingw_btowc, __mingw_wctob): ...thus.
+
+ * mingwex/btowc.c: Rewrite as new; it now implements...
+ (__mingw_btowc, __msvcrt_btowc): ...these public API functions, either
+ of which serves as a suitable replacement entry point for...
+ (btowc): ...this, with ultimate fallback served by...
+ (__mingw_btowc_fallback): ...this private function.
+
+ * mingwex/wctob.c: Rewrite as new; it now implements...
+ (__mingw_wctob, __msvcrt_wctob): ...these public API functions, either
+ of which serves as a suitable replacement entry point for...
+ (wctob): ...this, with ultimate fallback served by...
+ (__mingw_wctob_fallback): ...this private function.
+
+2020-03-02 Keith Marshall <keith@users.osdn.me>
+
+ Reimplement mbrlen(), mbrtowc(), and mbsrtowcs() functions.
+
+ * include/wchar.h [__MSVCRT_VERSION__ < __MSVCR80_DLL]
+ (mbrlen, mbrtowc, mbsrtowcs): Implement as static inline redirects...
+ (__msvcrt_mbrlen, __msvcrt_mbrtowc, __msvcrt_mbsrtowcs): ...to these;
+ declare them, with additional MinGW specific alternatives declared...
+ (__mingw_mbrlen, __mingw_mbrtowc, __mingw_mbsrtowcs): ...thus.
+
+ * mingwex/mbsrtowcs.c: New file; it implements...
+ (__mingw_mbsrtowcs, __msvcrt_mbsrtowcs): ...this pair of new
+ functions, either of which serves as a replacement for...
+ (mbsrtowcs): ...this; it was originally implemented...
+ * mingwex/mbrtowc.c: ...here; rewritten as new, it now implements...
+ (__mingw_mbrtowc, __msvcrt_mbrtowc): ...these new functions,
+ either of which serves as a public API replacement for...
+ (mbrtowc): ...this; with ultimate fallback served by...
+ (__mingw_mbrtowc_fallback): ...this private function.
+
+ * mingwex/mbrlen.c: New file; it implements...
+ (__mingw_mbrlen, __msvcrt_mbrlen): ...these public API entries, and...
+ (__mingw_mbrlen_fallback): ...this supporting private function.
+
+ * mingwex/mbrconv.c: New file; it implements...
+ (__mingw_mbrtowc_handler): ...this backend interpreter, shared by...
+ (__mingw_mbrlen_fallback, __mingw_mbrtowc_fallback): ...these.
+
+ * mingwex/mbrscan.c: New file; it implements...
+ (__mingw_mbtowc_codeset_init, __mingw_mbtowc_cur_max_init)
+ (__mingw_mbtowc_cur_max): ...these TLS accessor functions, and...
+ (__mingw_mbrscan_begin, __mingw_mbtowc_convert, __mingw_mbtowc_copy):
+ ...these MBCS to wide character conversion helper functions.
+
+ * mingwex/wcharmap.h (boolean): Define new private use data type...
+ (false, true): ...with these effective symbolic values; define them.
+ (__mingw_mbtowc_codeset_init, __mingw_mbtowc_cur_max_init)
+ (__mingw_mbtowc_cur_max, __mingw_mbrscan_begin, __mingw_mbtowc_copy)
+ (__mingw_mbtowc_convert): Declare them.
+
+ * Makefile.in (libmingwex.a): Add dependency references for...
+ (mbrconv.$OBJEXT, mbrscan.$OBJEXT, mbrlen.$OBJEXT, mbsrtowcs.$OBJEXT):
+ ...these.
+
+2020-02-25 Keith Marshall <keith@users.osdn.me>
+
+ Reimplement wcrtomb() and wcsrtombs(); cf. MinGW-Issue #39687.
+
+ * include/wchar.h [__MSVCRT_VERSION__ < __MSVCR80_DLL]
+ (wcrtomb, wcsrtombs): Implement them as static inline redirects to...
+ (__msvcrt_wcrtomb, __msvcrt_wcsrtombs): ...these; declare them.
+ (__mingw_wcrtomb, __mingw_wcsrtombs): Also declare these.
+
+ * include/limits.h (MB_LEN_MAX): Update value; was 2, but should be 5.
+
+ * mingwex/wcsrtombs.c: New file; it implements...
+ (__mingw_wcsrtombs, __msvcrt_wcsrtombs): ...this pair of new
+ functions, either of which serves as a replacement for...
+ (wcsrtombs): ...this; it was originally implemented...
+ * mingwex/wcrtomb.c: ...here; rewritten as new, it now implements...
+ (__mingw_wcrtomb, __msvcrt_wcrtomb): ...these new functions,
+ either of which serves as a replacement for...
+ (wcrtomb): ...this.
+
+ * mingwex/wcharmap.h: New private header; it declares the API for...
+ * mingwex/wcharmap.c: ...this new file, which implements...
+ (__mingw_wctomb_convert): ...this new function, required by...
+ (__mingw_wcrtomb, __msvcrt_wcrtomb, __mingw_wcsrtombs)
+ (__msvcrt_wcsrtombs): ...these; also provides...
+ (__mingw_wctomb_codeset_init, __mingw_wctomb_cur_max_init)
+ (__mingw_wctomb_cur_max): ...these supporting thread local storage
+ accessor functions.
+
+ * mingwex/codeset.c: New file; it implements...
+ (__mb_codeset_for_locale, __mb_len_max_for_codeset): ...this pair of
+ new helper functions; they identify the codeset, and respectively, its
+ MB_CUR_MAX for the effective process locale, which are required by...
+ (__mingw_wctomb_convert): ...this.
+
+ * Makefile.in (libmingwex.a): Add dependency references for...
+ (codeset.$OBJEXT, wcharmap.$OBJEXT, wcsrtombs.$OBJEXT): ...these.
+
+2020-01-21 Keith Marshall <keith@users.osdn.me>
+
+ Address MinGW-Issue #39658; declare rand_s() function.
+
+ * include/stdlib.h: When the user has defined...
+ [_CRT_RAND_S]: ...this optional feature test macro, and then...
+ [__MSVCRT_VERSION__ >= __MSVCR80_DLL]: ...either this non-free, or...
+ [_WIN32_WINNT >=_ WIN32_WINNT_VISTA]: ...this system-standard runtime
+ library version constraint is satisfied, then...
+ (rand_s): ...declare function prototype.
+
+2020-01-17 Keith Marshall <keith@users.osdn.me>
+
+ Support GCC-9.x gratuitous dependency on ftruncate64() function.
+
+ * include/unistd.h (ftruncate64): Declare prototype; implement it...
+ * mingwex/ftruncate.c: ...in this new file; it will delegate to...
+ (_chsize_s): ...this MSVCRT.DLL function, if available.
+
+ * Makefile.in (libmingwex.a): Add dependency on...
+ (ftruncate.$OBJEXT): ...this.
+
+ * msvcrt-xref/msvcrt.def.in (_chsize_s): Require dlsym look-up.
+
+2020-01-17 Keith Marshall <keith@users.osdn.me>
+
+ Preserve order of tests for integrity of header files.
+
+ * tests/Makefile.in: Explicitly sort $wildcard output, within...
+ (list_headers): ...this new function-style macro.
+ (enum_headers): Use it.
+
+ * tests/headers.at: Adjust to recent GNU make $sort order.
+
+2020-01-17 Keith Marshall <keith@users.osdn.me>
+
+ Update handling of <process.h> test-suite limitation.
+
+ * include/process.h (-Wbuiltin-declaration-mismatch)
+ [__IN_MINGWRT_TESTSUITE__ && __GNUC__ >= 7 && __cplusplus]: Drop...
+ [__cplusplus]: ...this diagnostic constraint, in test case when...
+ [__GNUC__ >= 9]: ...this applies; this diagnostic now affects both
+ C and C++ compilers, with respect to each of...
+ (execv, execve, execvp): ...these functions.
+
+2020-01-17 Keith Marshall <keith@users.osdn.me>
+
+ Support GCC-9.x gratuitous use of non-standard errno accessor API.
+
+ * include/stdlib.h (_get_errno, _set_errno): Declare prototypes;
+ implement them in-line, for legacy Windows versions which may lack
+ them, since GCC-9.x gratuitously and ill-advisedly requires them.
+ (__STDLIB_H_SOURCED__): Define, and selectively #include...
+
+ * include/errno.h: ...this, subject to criterion...
+ [__STDLIB_H_SOURCED__]: ...for exposure of only...
+ (errno): ...this public API declaration, and...
+ (EINVAL): ...this symbolic constant.
+
+2019-10-26 Keith Marshall <keith@users.osdn.me>
+
+ Fix MinGW-Issue #39757; avoid multiple vsnprintf() definitions.
+
+ * include/stdio.h [C++] (__mingw_stdio_redirect__): Defer redirection
+ to in-line definitions applicable for C, when the compiler suite is...
+ [__GNUC__]: ...this.
+
+2019-10-16 Keith Marshall <keith@users.osdn.me>
+
+ Address MinGW-Issue #39677; declare _findclose() only once.
+
+ * include/io.h (_findclose): Relocate declaration within conditional
+ block, to prevent second exposure when <io.h> is included in full,
+ following partial inclusion by <wchar.h>
+
+2019-07-06 Keith Marshall <keith@users.osdn.me>
+
+ Prepare and publish MinGW.org WSL-5.2.2 release.
+
+ * All files (wsl-5.2.2-release): Tag assigned.
+
+2019-07-03 Keith Marshall <keith@users.osdn.me>
+
+ Avoid built-in snprintf() prototypes; fix MinGW-Bug #39224
+
+ * include/stdio.h [__USE_MINGW_ANSI_STDIO]
+ (snprintf, vsnprintf): Implement them in-line, delegating to...
+ (__mingw_vsnprintf): ...this external function.
+
+ * mingwex/stdio/snprintf.c mingwex/stdio/vsnprintf.c: Assert
+ copyright; include <stddef.h>, instead of <stdio.h>, to obtain a
+ definition of "size_t"; this is required because the new in-line
+ prototypes, now provided in <stdio.h>, conflict with the intent
+ to provide external implementations.
+
+ * tests/ansiprintf.at (MINGW_AT_CHECK_SNPRINTF): Conditionally
+ circumvent conditions which may produce -Wformat warnings.
+
+2019-07-01 Keith Marshall <keith@users.osdn.me>
+
+ Revert to macro implementation of "alloca()" functions.
+
+ * include/alloca.h (alloca, _alloca): Delete any prior definitions;
+ remove in-line implementations; replace with conventional prototypes,
+ followed by corresponding function style macro definitions.
+
+2019-01-22 Keith Marshall <keith@users.osdn.me>
+
+ Prepare and publish MinGW.org WSL-5.2.1 release.
+
+ * All files (wsl-5.2.1-release): Tag assigned.
+
+2019-01-22 Keith Marshall <keith@users.osdn.me>
+
+ Incorporate user-customized <features.h> configuration.
+
+ * include/_mingw.h: Include <features.h>, or...
+ [_MINGW_FEATURES_HEADER]: ...nominated alternative header.
+ [!defined __MINGW_FEATURES__]: Provide fall-back definition.
+ (__MINGW_FEATURES_BEGIN__, __MINGW_FEATURES_ENABLE__)
+ (__MINGW_FEATURES_IGNORE__, __MINGW_FEATURES_UNSET__)
+ (__MINGW_FEATURES_END__): New macros; define them.
+
+ * tests/Makefile.in (install-mingwrt): Create <features.h> stub; this
+ is an empty file, yielding the default fall-back configuration.
+
+2019-01-21 Keith Marshall <keith@users.osdn.me>
+
+ Handle another GCC compile-time warning.
+
+ * mingwex/memalign.c (is_power_of_two): Use in-line expansion...
+ (memalign_is_power_of_two): ...of this new function; this is required
+ to avoid -Wsequence-point warnings, which may arise when testing the
+ result of an assignment expression passed as the macro argument.
+
+2019-01-11 Keith Marshall <keith@users.osdn.me>
+
+ Fix a mkstemp() file name generator defect.
+
+ * mingwex/cryptnam.c (crypto_random_filename_char): Revert 2018-09-06
+ change; argument type must be unsigned char *, to avoid math errors.
+ (__mingw_crypto_tmpname): Use explicit casts to resolve type conflicts.
+
+2019-01-11 Keith Marshall <keith@users.osdn.me>
+
+ Fix a <stdio.h> typedef omission.
+
+ * include/stdio.h: Adjust comment formatting.
+ (__need___off64_t) [__MSVCRT__]: Require it, but remove...
+ [!(__STRICT_ANSI__||__NO_MINGW_LFS)]: ...this exclusion filter.
+ [!__MSVCRT__] (__need___off32_t): Require this alternative.
+ (sys/types.h): Include unconditionally.
+
+2018-12-23 Keith Marshall <keith@users.osdn.me>
+
+ Prepare and publish MinGW.org WSL-5.2 release.
+
+ * All files (wsl-5.2-release): Tag assigned.
+
+2018-12-22 Keith Marshall <keith@users.osdn.me>
+
+ Correct an optional DLL installation and packaging defect.
+
+ * Makefile.in (optional_dll): New function macro; define it, and...
+ (MAP_LIBMINGWEX_A_DLLVERSION): ...wrap this, replacing all usage of...
+ (optional_dll_version, optional_dll_package): ...these; delete them,
+ together with all dependent references.
+
+2018-12-22 Keith Marshall <keith@users.osdn.me>
+
+ Update ANSI stdio feature test to accommodate ISO-C11.
+
+ * include/_mingw.h.in (__USE_MINGW_ANSI_STDIO): Add a deprecation
+ warning, for ill-advised direct definition in user code; include...
+ (_ISOC11_SOURCE): ...this new user defined feature test macro as a
+ further indirect enabling condition.
+
+2018-12-20 Keith Marshall <keith@users.osdn.me>
+
+ Implement test suite for aligned heap management API.
+
+ * tests/testsuite.at.in: Include...
+ * tests/memalign.at: ...this new file; it replaces...
+ * mingwex/tst-aligned-malloc.c: ...this; delete it.
+
+2018-12-20 Keith Marshall <keith@users.osdn.me>
+
+ Reimplement aligned heap management API.
+
+ * mingwex/mingw-aligned-malloc.c: Delete it; it is replaced by...
+ * mingwex/memalign.c: ...this new file; it reimplements...
+ (__mingw_aligned_offset_malloc, __mingw_aligned_offset_realloc)
+ (__mingw_aligned_free): ...each of these public API functions; also...
+ (__mingw_realloc, __mingw_free): ...adds these new public functions,...
+ (__mingw_memalign_base, __mingw_memalign_realloc): ...these private,
+ but globally exposed, supporting functions, and additionally...
+ (__mingw_memalign_lwm): ...this global, private use, variable.
+
+ * include/stdlib.h (__mingw_realloc, __mingw_free): Declare prototypes.
+
+ * include/malloc.h (__mingw_aligned_malloc, __mingw_aligned_realloc):
+ Implement them in-line; export them, via __LIBIMPL__, to libmingwex.a
+ (_aligned_malloc, __mingw_aligned_malloc, _aligned_offset_malloc)
+ (__mingw_aligned_offset_malloc): Add __MINGW_ATTRIB_MALLOC attribute.
+ [__MSVCRT_VERSION__ < __MSVCR70_DLL] (_aligned_malloc, _aligned_free)
+ (_aligned_realloc, _aligned_offset_malloc, _aligned_offset_realloc):
+ Implement them in-line, as wrappers around their MinGW alternatives;
+ export them, via __LIBIMPL__, to new library, libmemalign.a
+
+ * Makefile.in (LIBMINGWEX_MEMALIGN): New macro; define it; derive...
+ (LIBMINGWEX_MEMALIGN_OBJECTS): ...this macro; add compilation rule.
+ (libmingwex.a): Add $LIBMINGWEX_MEMALIGN_OBJECTS; they replace...
+ (mingw-aligned-malloc.$OBJEXT): ...this; remove dependency.
+ (all-mingwrt-libs, install-mingwrt-libs): Add libmemalign.a
+ (msvcrt_repl_funcs): Add alias references for...
+ (free, realloc): ...these.
+
+2018-12-04 Keith Marshall <keith@users.osdn.me>
+
+ Reimplement Win9x specific fseek()/fwrite() redirector.
+
+ * include/stdio.h [__USE_MINGW_FSEEK]: Deprecate support for direct
+ user definition; deduce it, as an internal private definition, from...
+ [_WIN32_WINDOWS]: ...this, when appropriately defined for Win9x.
+ [__USE_MINGW_FSEEK] (__mingw_fseek): Declare new prototype; map it as
+ multiple __CRT_ALIAS inline function overrides for each of...
+ (fseek, _fseeki64, fseeko64): ...these.
+ [__USE_MINGW_FSEEK] (__mingw_fwrite): Likewise, overriding...
+ (fwrite): ...this.
+ (__mingw_fseeko64): Delete all references; it is no longer provided,
+ nor required.
+
+ * mingwex/stdio/fwrite.c: New file; it reimplements the Win9x
+ fseek()/fwrite() function redirector interface, and thus replaces...
+ * mingex/ming-fseek.c: ...this; delete it.
+
+ * Makefile.in (libmingwex.a): Remove dependency on...
+ (mingw-fseek.$OBJEXT): ...this object module; replace it with...
+ (fwrite.$OBJEXT): ...this alternative dependency.
+
+2018-12-04 Keith Marshall <keith@users.osdn.me>
+
+ Implement POSIX.1-1996 linked-list queue management API.
+
+ * mingwex/insque.c mingwex/remque.c: New files; they implement the
+ POSIX.1-1996 insque(), and remque() functions, respectively.
+
+ * include/search.h (insque, remque): Declare function prototypes.
+
+ * Makefile.in (libmingwex.a): Add dependencies on...
+ (insque.$OBJEXT, remque.$OBJEXT): ...these.
+
+2018-11-25 Keith Marshall <keith@users.osdn.me>
+
+ Emulate _fseeki64()/_ftelli64() API on legacy platforms.
+
+ * mingwex/stdio/fseeki64.c: New file; it implements...
+ (__mingw_fseeki64, fseeko64): ...both of these functions, avoiding any
+ dependency on undocumented internal implementation details of...
+ (fpos_t): ...this opaque data type, and replacing...
+ * mingwex/stdio/fseeko64.c: ...this; delete it.
+
+ * mingwex/stdio/ftelli64.c: New file; it implements...
+ (_ftelli64, ftello64): ...both of these, again avoiding any dependency
+ on undocumented internal implementation details of...
+ (fpos_t): ...this opaque data type.
+
+ * include/stdio.h (fpos_t): Make it more effectively opaque.
+ (__mingw_fseeki64, __mingw_ftelli64): Declare them for legacy use.
+ [_WIN32_WINNT < VISTA && __MSVCRT_VERSION__ < MSVCR80_DLL] (_fseeki64)
+ (_ftelli64): Map inline emulations, to "__mingw" prefixed names.
+ (ftello64): Remove inline implementation.
+
+ * Makefile.in (libmingwex.a): Add references to...
+ (fseeki64.$OBJEXT, ftelli64.$OBJEXT): these; remove reference to...
+ (fseeko64.$OBJEXT): ...this.
+
+2018-10-21 Keith Marshall <keith@users.osdn.me>
+
+ Update <conio.h> and <wchar.h> header files.
+
+ * include/conio.h: Tidy layout; assert copyright.
+ [_CONIO_H_]: Rename multiple inclusion guard macro, to conform to...
+ [_CONIO_H]: ...this preferred convention; do not define when...
+ [__WCHAR_H_SOURCED__]: ...this selective inclusion condition applies.
+ [__need_wint_t, __need_wchar_t]: Define them; include <stddef.h>...
+ (wint_t, wchar_t): ...for these corresponding data type definitions.
+ [_WIN32_WINNT >= WINXP || __MSVCRT_VERSION__ >= __MSVCR70_DLL]
+ (_getwch, _getwche, _ungetwch, _putwch): Declare function prototypes.
+ [__MSVCRT_VERSION__>=__MSVCR80_DLL] (_getch_nolock, _getche_nolock)
+ (_ungetch_nolock, _putch_nolock, _getwch_nolock, _getwche_nolock)
+ (_ungetwch_nolock, _putwch_nolock): Likewise.
+ [_BEGIN_C_DECLS, _END_C_DECLS]: Use them.
+
+ * include/wchar.h: Selectively include <conio.h>, for...
+ (_getwch, _getwche, _ungetwch): ...these function prototypes, and...
+ [__MSVCRT_VERSION__>=__MSCVCR80_DLL] (_getwch_nolock)
+ (_getwche_nolock, _ungetwch_nolock): ...these.
+
+2018-10-18 Keith Marshall <keith@users.osdn.me>
+
+ Map compile-time constant references for POSIX clocks.
+
+ * include/time.h (CLOCK_REALTIME, CLOCK_MONOTONIC): Redefine, using...
+ (__MINGW_POSIX_CLOCKAPI): ...this new macro; it converts clock indices
+ to odd-valued compile-time constant pseudo-pointers, (distinguishable
+ from real pointers which are always even-valued), which may be passed
+ as clockid_t references in POSIX clock API function calls.
+
+ * mingwex/clockapi.h (struct __clockid__): Specify 4-byte alignment.
+ (__clock_api_is_valid): Change return type to "clockid_t".
+
+ * mingwex/clockapi.c (__clock_api_is_valid): Return an even-valued,
+ non-NULL, "clockid_t" reference pointer, or "NULL" if invalid; use...
+ (clock_reference): ...this new static inline function, to convert...
+ (CLOCK_REALTIME, CLOCK_MONOTONIC): ...these odd-valued pseudo-pointers
+ to their actual run-time pointer equivalents; delete their physical
+ initializations, which have now become invalid.
+
+ * mingwex/clockres.c (clock_getres)
+ * mingwex/clocktime.c (clock_gettime)
+ * mingwex/clockset.c (clock_settime): Update the "clockid_t" argument
+ to match the real pointer returned by __clock_api_is_valid()
+
+2018-10-08 Keith Marshall <keith@users.osdn.me>
+
+ Suppress autoconf detection of _aligned_malloc functions.
+
+ * msvcrt-xref/msvcrt.def.in (_aligned_malloc, _aligned_free)
+ (_aligned_offset_malloc, _aligned_realloc, _aligned_offset_realloc):
+ Mark as requiring dlsym() lookup, when linking with MSVCRT.DLL
+
+2018-10-07 Keith Marshall <keith@users.osdn.me>
+
+ Make alloca() API both GNU and Microsoft compatible.
+
+ * include/malloc.h: Tidy layout; assert copyright.
+ (_MALLOC_H_): Rename guard macro, for conformance with...
+ (_MALLOC_H): ...this preferred guard macro naming convention.
+ (GCC system_header): Add pragma, declaring it as such.
+ [__MSVCRT_VERSION__ >= 0x0700]: Express symbolically, guarding...
+ (_aligned_malloc, _aligned_offset_malloc)
+ (_aligned_realloc, _aligned_offset_realloc)
+ (_aligned_recalloc, _aligned_offset_recalloc): ...these...
+ [__MSVCRT_VERSION__>=__MSVCR70_DLL]: ...thus.
+ [_BEGIN_C_DECLS, _END_C_DECLS]: Use them.
+ (alloca, _alloca): Factor them out, then include from...
+ * include/alloca.h: ...this new header file; it reimplements...
+ (alloca, _alloca): ...these, such that they remain Microsoft
+ compatible, while adding GNU conformity, either explicitly when
+ included by user code, or conditionally when included by...
+ * include/stdlib.h [!__STRICT_ANSI__]: ...this.
+
+ * tests/headers.at: Regenerated by "make check".
+ (MINGWRT_AT_PACKAGE_HEADERS): Add alloca.h
+
+2018-09-06 Keith Marshall <keith@users.osdn.me>
+
+ Avoid unwanted GCC warning diagnostic messages.
+
+ * Makefile.in (libm_dummy.c): Remove "static" qualifier from...
+ (__mingw_libm_dummy): ...this variable; it caused "-Wunused-variable"
+ warning diagnostics, when compiled with "-Wall".
+
+ * main.c (WinMain): Remove unnecessary argument names from prototype.
+ (main): Make its argument list conform to convention, otherwise it
+ causes a "-Wmain" warning diagnostic when compiled with "-Wall".
+
+ * mingwex/clocktime.c (clock_gettime) [clock_id-type]
+ * mingwex/clockapi.c (clock_api_getres_interval) [clock_api->type]:
+ Ensure that switches include default cases; this avoids a "-Wswitch"
+ warning diagnostic message, in each case, when compiled with "-Wall".
+
+ * mingwex/cryptnam.c (crypto_random_filename_char): Remove "unsigned"
+ qualifier from both argument and return type; this avoids an argument
+ type mismatch, raising a "-Wpointer-sign" warning when called from...
+ (__mingw_crypto_tmpname): ...here, and compiled with "-Wall".
+
+ * mingwex/imaxdiv.c: Tidy layout; assert copyright.
+ (lldiv): Correct return type; explicitly disable "-Wattribute-alias"
+ diagnostic messages, under GCC pragma control.
+
+ * mingwex/ofmt.c [__crtofmt__] (__mingw_set_output_format_fallback)
+ [__crtnfmt__] (__mingw_get_printf_count_output_fallback): Likewise,
+ disable "-Wattribute-alias" diagnostics.
+
+ * mingwrt/mingwex/stdio/pformat.c (__pformat_ignore_flags): Adjust
+ layout, to avoid a "-Wmisleading-indentation" warning diagnostic.
+ (__pformat_argmap) [length]: Add a no-op default case, to avoid a
+ "-Wswitch" warning diagnostic message.
+
+ * mingwrt/profile/mcount.c: Explicitly disable "-Wframe-address"
+ diagnostics, under GCC pragma control, to avoid warnings relating...
+ (__builtin_return_address): ...this, when called from...
+ (mcount): ...here.
+
+ * mingwrt/setargv.c (__mingw_setargv): Insert parentheses, as advised,
+ to eliminate "-Wparentheses" diagnostic messages.
+
+2018-09-03 Keith Marshall <keith@users.osdn.me>
+
+ Prepare and publish MinGW.org WSL-5.1.1 release.
+
+ * All files (wsl-5.1.1-release): Tag assigned.
+
+2018-09-02 Keith Marshall <keith@users.osdn.me>
+
+ Make clockapi symbolic constants #ifdef detectable.
+
+ * mingwex/clockapi.c (CLOCK_REALTIME, CLOCK_MONOTONIC): Add "const".
+ * include/time.h (CLOCK_REALTIME, CLOCK_MONOTONIC): Likewise; also
+ define both as self-referencing macros.
+
+2018-08-26 Keith Marshall <keith@users.osdn.me>
+
+ Circumvent <process.h> testsuite failure with GCC-7+.
+
+ * include/process.h (execv, execve, execvp): Subject declarations to
+ #pragma GCC diagnostic ignored "-Wbuiltin-declaration-mismatch", if...
+ [__cplusplus && __IN_MINGWRT_TESTSUITE__ && __GNUC__ >= 7]: ...this.
+
+2018-04-16 Keith Marshall <keith@users.osdn.me>
+
+ Suppress glob-brace expansion within quoted arguments.
+
+ * setargv.c (__mingw32_setargv) [quoted]: Handle '{', ',', and '}'
+ in the same manner as '*', and '?'.
+
+2018-04-16 Keith Marshall <keith@users.osdn.me>
+
+ Suppress glob-brace expansion of single item lists.
+
+ * mingwex/glob.c (glob_match) [c == '{']: Look-ahead to matching '}';
+ ignore intervening nested '{' ... '}' expression groups, and suppress
+ special interpretation of '{' if '\0' encountered before '}' at outer
+ nesting level, or if no unescaped ',' found within outer expression.
+
+2018-02-26 Keith Marshall <keith@users.osdn.me>
+
+ Prepare and publish MinGW.org WSL-5.1 release.
+
+ * All files (wsl-5.1-release): Tag assigned.
+
+2018-02-22 Keith Marshall <keith@users.osdn.me>
+
+ Correct <sys/timeb.h> 32-bit vs. 64-bit time_t anomalies.
+
+ * include/sys/timeb.h: Assert copyright; tidy layout.
+ (_TIMEB_H_): Original multiple inclusion guard macro; rename it...
+ (_SYS_TIMEB_H): ...conforming to this preferred naming convention.
+ (GCC system_header): Add pragma, asserting it as such a header.
+ (__need_time_t): Define for selective <sys/types.h> inclusion.
+ (_BEGIN_C_DECLS, _END_C_DECLS): Use them as appropriate.
+ (pragma pack): Push to pack all structs with 2-byte alignment.
+ (struct timeb): Mark as deprecated, from POSIX.1-2001 onwards.
+ (ftime): Likewise, mark as deprecated; always emulate it by in-line
+ redirection to _ftime(), however this may be implemented.
+ (struct __timeb32): Make its definition unconditionally visible.
+ (_ftime32) [__MSVCRT_VERSION__ >= __MSVCR80_DLL]: Declare prototype.
+ (_ftime32) [_WIN64 || _WIN32_WINNT >= _WIN32_WINNT_VISTA]: Likewise,
+ otherwise emulate it by in-line redirection to 32-bit _ftime().
+ (struct __timeb64, _ftime64): Make visibility condition symbolic...
+ [__MSVCRT_VERSION__ >= __MSVCR61_DLL]: ...thus; add visibility for...
+ [_WIN64 || _WIN32_WINNT >= _WIN32_WINNT_WIN2K]: ...these alternatives.
+ (_ftime) [__MSVCRT_VERSION__ < __MSVCR80_DLL]: Declare prototype.
+ (_ftime) [__MSVCRT_VERSION__ >= __MSVCR80_DLL]: Emulate it...
+ [_USE_32BIT_TIME_T]: ...by in-line redirection to _ftime32(), else...
+ [!_USE_32BIT_TIME_T]: ...to _ftime64().
+
+ * tests/headers.at [sys/timeb.h]: Suppress "deprecated" warnings.
+
+2018-02-22 Keith Marshall <keith@users.osdn.me>
+
+ Correct Windows version support for <utime.h> functions.
+
+ * include/sys/utime.h: Tidy layout; assert copyright.
+ (_UTIME_H_): Rename this repeat inclusion guard macro...
+ (_SYS_UTIME_H): ...to this, for consistency with current practice.
+ (_BEGIN_C_DECLS, _END_C_DECLS): Use them, as appropriate.
+ (struct __utimbuf32): Define it unconditionally; remove...
+ [__MSVCRT_VERSION__>=0x0800]: ...this prerequisite.
+ (_utime32, _wutime32, _futime32): Declare them for...
+ [_WIN32_WINNT >= _WIN32_WINNT_VISTA]: ...this, in addition to...
+ [__MSVCRT_VERSION__>=__MSVCR80_DLL]: ...this original condition, but
+ also emulate them in-line, if neither condition applies.
+ [__MSVCRT_VERSION__>=__MSVCR80.DLL] (_utime, _wutime, _futime):
+ Implement them in-line, delegating each respectively to...
+ [_USE_32BIT_TIME_T] (_utime32, _wutime32, _futime32): ...these, or...
+ [!_USE_32BIT_TIME_T] (_utime64, _wutime64, _futime64): ...to these.
+ [__MSVCRT_VERSION__>=__MSVCR80.DLL] (utime): Implement in-line, or...
+ [__MSVCRT_VERSION__<__MSVCR80.DLL] (utime): ...declare it.
+
2018-01-17 Keith Marshall <keith@users.osdn.me>
Fix faulty POSIX deprecation warning logic.