+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.
+
+ * include/_mingw.h.in (__POSIX_2008_DEPRECATED): Do not nest...
+ (__POSIX_2001_DEPRECATED): ...within defininion of this; similarly...
+ (__POSIX_1995_DEPRECATED): ...neither within this; rename this as...
+ (__POSIX_1996_DEPRECATED): ...this; although conditional upon...
+ [_POSIX_C_SOURCE >= 199506L]: ...this, the corresponding standard was
+ eventually ratified, not as POSIX.1-1995, but as POSIX.1-1996
+
+2017-12-28 Keith Marshall <keith@users.osdn.me>
+
+ Fix a build issue, assembling generic SX files.
+
+ * Makefile.in (%_generic.sx): Always use $(COMPILE.sx) to pre-process
+ and assemble these; with $(CC) -c $(ALL_CPPFLAGS) $(ASFLAGS), versions
+ of GCC, prior to GCC-4.3, will fail to identify the source file suffix
+ correctly, resulting in failure to assemble the code.
+
+2017-12-18 Keith Marshall <keith@users.osdn.me>
+
+ Support strtok() re-entrancy, per request [#2342].
+
+ * mingwex/strtok_r.c: New file; it implements...
+ (strtok_r): ...this function, per POSIX.1-1995 specification.
+ * Makefile.in (libmingwex.a): Add reference; make it depend on...
+ (strtok_r.$OBJEXT): ...this.
+
+ * include/string.h: Declare corresponding runtime API.
+ [_POSIX_C_SOURCE >= 199506L] (strtok_r): Add function prototype.
+ [__MSVCRT_VERSION__ >= __MSVCR80_DLL] (strtok_s): Likewise; this is
+ the Microsoft equivalent function, first introduced in this non-free
+ MSVC runtime library; subsequently available in MSVCRT.DLL since...
+ [_WIN32_WINNT >= _WIN32_WINNT_VISTA]: ...this release, likewise.
+
+2017-12-16 Keith Marshall <keith@users.osdn.me>
+
+ Implement autotest module for POSIX clock API functions.
+
+ * tests/clockapi.at: New file.
+ * tests/testsuite.at.in (clockapi.at): Incorporate it.
+
+2017-12-15 Keith Marshall <keith@users.osdn.me>
+
+ Implement a subset of the POSIX.1b-1993 clock API.
+
+ * include/time.h [_POSIX_C_SOURCE >= 199309L]
+ (clockid_t): New structured data type; define it opaquely, and...
+ (CLOCK_REALTIME, CLOCK_MONOTONIC): ...declare these extern instances.
+ (clock_getres, clock_gettime, clock_settime): New functions; declare
+ prototypes.
+
+ * mingwex/clockapi.h mingwex/clockapi.c mingwex/clockres.c
+ * mingwex/clockset.c mingwex/clocktime.c: New files; they implement
+ the preceding clock instances, and associated API functions.
+
+ * include/sys/time.h [_POSIX_C_SOURCE >= 200809L] (gettimeofday):
+ Mark it as "deprecated".
+
+2017-12-14 Keith Marshall <keith@users.osdn.me>
+
+ Add support for POSIX.1 "obsolescence" warnings.
+
+ * include/_mingwrt.h.in (__POSIX_1995_DEPRECATED)
+ (__POSIX_2001_DEPRECATED, __POSIX_2008_DEPRECATED): New macros; define
+ them, such as each is conditional on the specific value assigned to...
+ [_POSIX_C_SOURCE]: ...this feature test macro, as the equivalent of...
+ (__MINGW_ATTRIB_DEPRECATED): ...this, or of nothing, as appropriate.
+
+2017-12-06 Keith Marshall <keith@users.osdn.me>
+
+ Prepare and publish MinGW.org WSL-5.0.2 release.
+
+ * All files (wsl-5.0.2-release): Tag assigned.
+
+ * Makefile.in (mingwrt-srcdist-package-files): Add reference...
+ * $mingwrt_srcdir/*.sx: ...for files matching this template.
+
+2017-12-02 Keith Marshall <keith@users.osdn.me>
+
+ Provide legacy OS work around for issue [#2357]
+
+ * cpu_features.c: Delete; replace it with...
+ * cpu_features.sx: ...this new assembly language file.
+
+ * cpu_features.h [__ASSEMBLER__]
+ (__cpu_features, __cpu_features_init): Suppress declarations.
+
+ * Makefile (%.sx): Add $srcdir vpath reference.
+
+2017-11-28 Keith Marshall <keith@users.osdn.me>
+
+ Handle indeterminate FLT_EVAL_METHOD; fix issue [#2352].
+
+ * include/math.h [FLT_EVAL_METHOD == 0 || FLT_EVAL_METHOD == 1]
+ (float_t, double_t): Define them explicitly, as appropriate for each
+ of these two specific cases only; otherwise, define them as if for...
+ [FLT_EVAL_METHOD == 2]: ...this explicit case, but also apply it as a
+ suitable default compromise for the indeterminate case, in which...
+ [FLT_EVAL_METHOD != 2]: ...emit indeterminacy warning.
+
+2017-10-25 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Include, and make <sys/bsdtypes.h> test suite safe.
+
+ * tests/headers.at (sys/bsdtypes.h): Add reference.
+
+ * include/sys/bsdtypes.h [__IN_MINGWRT_TESTSUITE__]: Add to...
+ [_BSD_SOURCE || _WINSOCK2_H]: ...these, as conditions for supression
+ of "ill-advised usage" warning message.
+
+2017-09-15 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Factor <sys/time.h> duplicate content out of winsock headers.
+
+ * include/sys/time.h: Assert copyright; tidy layout.
+ [_BEGIN_C_DECLS, _END_C_DECLS]: Use them to avoid C++ name mangling.
+ [__WINSOCK_H_SOURCED__] (_SYS_TIME_H): Do not define it; hence...
+ [!defined _SYS_TIME_H]: ...selectively expose definitions for only...
+ (timerclear, timerisset, timercmp): ...these functional macros, and...
+ (struct timeval): ...this data type; inhibit redefinition on...
+ [defined _SYS_TIME_H && _WINSOCK_H]: ...second reading.
+ (_TIMEVAL_DEFINED): Do not define; it isn't required.
+
+2017-09-09 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Factor BSD non-standard type definitions into common header.
+
+ * profile/gmon.h [_BSDTYPES_DEFINED]: Delete block; include...
+ * include/sys/bsdtypes.h: ...this new file instead; it defines...
+ (u_char, u_int, u_long, u_short): ...these non-standard data types.
+
+ * profile/gmon.c profile/mcount.c [_BSD_SOURCE]: Declare it;
+ it suppresses warnings from <sys/bsdtypes.h>, about ill-advised
+ non-standard BSD typedef usage.
+
+2017-07-30 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Prepare and tag for release of MinGW.org WSL-5.0.1
+
+ * All files (wsl-5.0.1-release): Tag assigned.
+
+2017-07-12 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Automate testsuite dependency generation.
+
+ * tests/Makefile.in (testsuite) [$srcdir/*.at]: Automatically
+ enumerate all such wildcard matches as prerequisites, instead of...
+ (headers.at, ansiprintf.at, logarithms.at, powerfunc.at): ...these,
+ which were previously enumerated explicitly.
+
+2017-06-05 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Automatically correct obsolete _XOPEN_SOURCE usage.
+
+ * include/_mingw.h.in (__paste, __valueless): New macros; define them.
+ (_XOPEN_SOURCE) [defined with no value]: Use them to attempt to deduce
+ this obsolete usage; if detected, redefine it with a default assigned
+ value of one, emulating -D_XOPEN_SOURCE command line definition.
+
+2017-05-24 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Fix snprintf()/vsnprintf() -Wformat vs. multiple definition issue.
+
+ * include/stdio.h (__mingw_stdio_redirect__): Add reference to...
+ (__Wformat): ...this new macro; define it, such that it expands via...
+ (__Wformat_mingw_printf, __Wformat_msvcrt_printf): ...these new macros,
+ ultimately expanding to an attribute declaration, in terms of...
+ (__Wformat_ms_vprintf, __Wformat_ms_vfprintf, __Wformat_ms_vsprintf)
+ (__Wformat_ms_printf, __Wformat_ms_fprintf, __Wformat_ms_sprintf):
+ ...any one of these; they map to an ms_printf attribute, or...
+ (__Wformat_vprintf, __Wformat_vfprintf, __Wformat_vsprintf)
+ (__Wformat_printf, __Wformat_fprintf, __Wformat_sprintf): ...any one
+ of these; they map conditionally to...
+ [__GNUC__>=6] (__mingw_printf__): ...this new format attribute, or...
+ [__GNUC__< 6]: ...nothing.
+ (snprintf, vsnprintf): Revert 2017-01-30 inline definitions; add...
+ (__Wformat_snprintf, __Wformat_vsnprintf): ...these attributes; they
+ are also mapped conditionally, in this case to...
+ [__GNUC__>=6] (__mingw_printf__): ...this, or...
+ [__GNUC__< 6] (__gnu_printf__): ...this.
+
+2017-03-14 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Refactor mingwrt and w32api common makefile content.
+
+ * Makefile.in (mingwrt-srcdist-config-files): Rename it...
+ (mingwrt-srcdist-common-files): ...as this phoney build rule.
+ (shared_include_file): New macro; define it, and include named file.
+ (configure, config.status, Makefile, config.status.missing, _mingw.h)
+ (w32api.h, PACKAGE_VERSION_SCRIPT, PACKAGE_VERSION_FORMAT): Factor
+ out; relocate them to new file in common parent directory...
+ * ../Makefile.comm: ...here.
+
+2017-03-09 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Fix generated header file dependencies.
+
+ * Makefile.in (_mingw.h, w32api): Make them depend on changes in...
+ [VERSION.m4]: ...this; package version changes are no longer made...
+ [configure.ac]: ...here; delete associated prerequisite reference.
+ (distclean-local): Delete them.
+
+2017-03-09 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Strip optional DLLs, when staging for distribution.
+
+ * Makefile.in (mingwrt-%-optist): Recursively make...
+ (install-strip-$*-optional-dll): ...this internal target, not...
+ (install-$*-optional-dll): ...this.
+
+2017-03-08 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Prepare and tag for release of mingwrt-5.0 package set.
+
+ * All files (wsl-5.0-release): Tag assigned.
+
+2017-03-07 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Avoid -shared-libgcc dependencies in optional DLLs.
+
+ * Makefile.in (dllname): Qualify it, by addition of...
+ (LIBGCC_LINK_OPTION): ...this DLL name specific linking option macro.
+ (libmingwex.dll.a): Force it to use -static-libgcc for associated DLL.
+
+2017-02-27 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Support optional DLL builds from static libraries.
+
+ * aclocal.m4 (MINGW_AC_SET_DLLVERSION): New macro; define it, and...
+ * VERSION.m4: ...use it here, to enumerate the specifcations for...
+ (MINGW_AC_ENUMERATE_DLLVERSION_SPECS): ...this collection of DLL
+ version identification records.
+
+ * Makefile.in (DLLVERSION): New macro; define default, and capture
+ library specific variants, as generated by AC_SUBST output from...
+ (MINGW_AC_ENUMERATE_DLLVERSION_SPECS): ...this configuration macro.
+ (a2dll, dllname, dllsuffix): New macros; define them, together with
+ new pattern rule using them, to create DLLs and import libraries from
+ existing static object libraries; augment these with...
+ (optional_dll_version): ...this further new macro, used by...
+ (install-optional-dlls, install-mingwrt-optional-dlls)
+ (install-libmingwex-optional-dll): ...these new installation rules...
+ (uninstall-optional-dlls, uninstall-mingwrt-optional-dlls): ...and
+ counterpart rules, to uninstall all such optional DLL files.
+ (optional_dll_package): Further new macro; it is required by...
+ (optdist, mingwrt-optdist, mingwrt-libmingwex-optdist): ...these new
+ distribution rules; they create packages for optional DLLs.
+ (dist): Add optdist.
+
+ * configure.ac (MINGW_AC_ENUMERATE_DLLVERSION_SPECS): Invoke it.
+
+2017-02-24 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Make floating point environment more robust.
+
+ * CRT_fp8.c CRT_fp10.c: Delete them; both are replaced by...
+ * CRT_fenv.c: ...this new common source file; it implements...
+ (_CRT_fenv): ...this new global variable, with alternative definitions
+ evaluated during application start-up, to assign one or other of...
+ [FE_PC53_ENV, FE_PC64_ENV]: ...these, as the preferred default...
+ [FE_DFL_ENV]: ...represented by this; replacement linkage for...
+ (_fpreset): ...this MSVCRT.DLL function is no longer supported.
+
+ * Makefile.in: Add new static pattern rule, for compiling...
+ (CRT_fp8.$OBJEXT, CRT_fp10.$OBJEXT): ...each of these, from CRT_env.c
+
+ * crt1.c (_gnu_exception_handler, __mingw_CRTStartup): Do not call...
+ (_fpreset): ...this; its linkage was non-deterministically ambiguous.
+ (fesetenv): Use this, unambiguously, instead; initially configure the
+ floating point environment to the predefined state, as assigned to...
+ [_CRT_fenv]: ...this new global variable; thereafter, reset to...
+ [FE_DFL_ENV]: ...this ISO-C99 mandatory configuration.
+
+ * include/float.h: Assert copyright; tidy layout.
+ [_MINGW_FLOAT_H_]: Retain, but replace in guard macro usage by...
+ [_MINGW_FLOAT_H]: ...this, conforming to preferred naming convention.
+ [_BEGIN_C_DECLS, _END_C_DECLS]: Use them, as appropriate.
+ (_fpreset): Add _CRTIMP attribute; it is resolved by MSVCRT.DLL
+ (fpreset): Deprecate it; provide inline __LIBIMPL__ fall-back.
+
+ * include/fenv.h: Assert copyright; tidy layout.
+ [_FENV_H_]: Rename multiple inclusion guard macro, adopting...
+ [_FENV_H]: ...this preferred stylistic naming convention.
+ [_BEGIN_C_DECLS, _END_C_DECLS]: Use them, as appropriate.
+ (FE_INVALID, FE_DENORMAL, FE_DIVBYZERO, FE_OVERFLOW, FE_UNDERFLOW)
+ (FE_INEXACT, FE_ALL_EXCEPT, FE_TONEAREST, FE_DOWNWARD, FE_UPWARD)
+ (FE_TOWARDZERO): Redefine them, in terms of enumerated bit positions.
+ (FE_PD53_ENV, FE_PD64_ENV): New predefined environment selectors; they
+ serve as initialization-time aliases, causing redefinition of...
+ [FE_DFL_ENV]: ...this, as run-time alias for one or other of...
+ [FE_PC53_ENV, FE_PC64_ENV]: ...these, respectively.
+
+ * mingwex/fesetenv.c: Assert copyright; tidy layout.
+ (fesetenv) [FE_PD53_ENV || FE_PD64_ENV]: Handle them, assigning to...
+ (FE_DFL_ENV): ...this ISO-C99 mandatory configuration, representing...
+ (fenv_default): ...the value of this new static variable.
+ (_fpreset): Call it directly; now always resolved by MSVCRT.DLL, so...
+ (*_imp__fpreset): ...this indirection becomes unnecessary.
+
+2017-02-21 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Make mingwrt and w32api test suites consistent.
+
+ * Makefile.in (test): New rule; define it as a synonym for...
+ (check tests): ...these, so maintaining consistency with w32api.
+
+2017-02-16 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Work around GCC bug; force C++11 to support std::wcstof().
+
+ * include/_mingw.h [_ISOC99_SOURCE && __cplusplus >= 201103L]
+ [__GNUC__ < 6] (_GLIBCXX_HAVE_WCSTOF): Define it to 1; it is required
+ because, prior to GCC-6, GCC's configuration process fails to specify
+ it correctly, and so invalidates its own <string> header file.
+
+2017-02-12 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Support brace expansion in globbing patterns.
+
+ * include/glob.h (GLOB_BRACE): New manifest constant; define it...
+ (__GLOB_FLAG__): ...in terms of this macro.
+
+ * mingwex/glob.c (glob_match): Reindent, with preamble invoking...
+ (glob_brace_expand): ...this new static inline function; implement it.
+ (GLOB_INIT, GLOB_FREE): Redefine them, relating them to...
+ (__GLOB_FLAG_OFFSET_HIGH_WATER_MARK): ...this.
+
+ * setargv.c (__mingw32_setargv) [_CRT_glob]: Check if it includes...
+ [GLOB_CASEMATCH | GLOB_BRACE]: either of these; remove check for...
+ [__CRT_GLOB_CASE_SENSITIVE__]: ...this defunct option.
+
+ * include/_mingw.h.in (GLOB_BRACE): Note its use in _CRT_glob.
+ (GLOB_CASEMATCH): Likewise; this replaces all former usage of...
+ (__CRT_GLOB_CASE_SENSITIVE__): ...this; delete definition.
+
+2017-02-11 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Refactor <getopt.h> and <unistd.h> shared declarations.
+
+ * include/getopt.h: Assert copyright.
+ (_BEGIN_C_DECLS, _END_C_DECLS): Use as appropriate.
+ (__GETOPT_H__, __GETOPT_LONG_H__): Delete them; replace them with...
+ (_GETOPT_H): This new macro; it guards the entire file, except when...
+ [__UNISTD_H_SOURCED__]: ...do not activate it; hence when...
+ [!_GETOPT_H]: ...do not expose API declarations for...
+ (getopt_long, getopt_long_only): ...these functions.
+ [_GETOPT_H && _UNISTD_H]: Skip second pass API declarations for...
+ (getopt): ...this function.
+
+ * include/unistd.h: Use the #include "..." form when including...
+ (io.h, process.h, getopt.h): ...these, to ensure correct association.
+ (ftruncate): Map it directly to MSVCRT.DLL's _chsize() entry point.
+
+2017-02-10 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Avoid unnecessary duplication of configuration files.
+
+ * Makefile.in (vpath install-sh): Define it; it matches...
+ (vpath %.m4): ...this; add $top_srcdir/..; search it first; delete
+ rule for creating duplicate file reference links in $top_srcdir.
+ (configure): Add '-I ..' option, when running autoconf.
+ (mingwrt-srcdist-package-files): Remove dependencies on...
+ (aclocal.m4 VERSION.m4 install-sh): ...these; reinstate them in...
+ (mingwrt-srcdist-config-files): ...this new distributable files
+ enumeration goal; add it as a new prerequisite of...
+ (mingwrt-srcdist-files): ...this.
+
+2017-02-07 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Ensure selective inclusion of the correct <strings.h>
+
+ * include/string.h: Use "..." form for selective inclusion of ...
+ (strings.h): ...this, to ensure that we get our own version, avoiding
+ any inappropriate alternative which may have been insinuated into the
+ system header include path.
+
+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].
+
+ * setargv.c (__mingw32_setargv): Within single quotes, backslashes
+ should be interpreted literally; copy them as-is.
+
+2017-01-25 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Use C99 blanks as default argv separators, per issue [#2329].
+
+ * setargv.c [_ISOC99_SOURCE]: Require it.
+ (__mingw32_setargv): Separate command line arguments based on...
+ [(quoted == 0) && isblank( c )]: ...this condition, instead of on...
+ [(quoted == 0) && isspace( c )]: ...this, so that only blanks, rather
+ than any whitespace characters, serve as default argument separators.
+
+2017-01-10 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Correct <strings.h> preprocessor logic; fix bug [#2322]
+
+ * include/strings.h (_stricmp, _strnicmp): Always declare, unless...
+ [__STRICT_ANSI__ && __NO_INLINE__]: ...both of these are defined.
+
+2016-11-28 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Implement POSIX.1 compatible setenv() and unsetenv() functions.
+
+ * mingwex/setenv.c: New file; it implements...
+ (__mingw_setenv): ...this function, providing common code for...
+ * include/stdlib.h [_POSIX_C_SOURCE >= 200112L] (setenv, unsetenv):
+ ...these user visible functions, implemented as __CRT_ALIAS inlines;
+ qualify them as __JMPSTUB__ and __LIBIMPL__ respectively, so ensuring
+ that their corresponding external representations are automatically
+ added to libmingwex.a
+
+ * Makefile.in (libmingwex.a): Add setenv.$OBJEXT
+
+2016-11-27 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Work around another C++11 compliance issue; fix bug [#2321].
+
+ * include/excpt.h (__try1_setup, __except1_teardown): Add spaces to
+ separate each use of '__wsize' and '__ts' macros from all surrounding
+ string literals, to ensure that C++ parses them as distinct tokens.
+
+2016-11-21 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Replace defective powf() and powl() function implementations.
+
+ * mingwex/math/powf.c mingwex/math/powl.c: Delete; replaced by...
+ * mingwex/math/pow_generic.sx: ...this new file; it implements...
+ (__x87pow): ...this generic power function back-end, serving...
+ (pow, powf, powl): ...each of these front-end entry points.
+
+ * Makefile.in (libmingwex.a): Add x87pow.$OBJEXT
+
+ * include/math.h (powf): Remove inline implementation; it no longer
+ offers any inline advantage.
+
+2016-11-18 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Implement unit tests for power functions.
+
+ * tests/testsuite.at.in: m4_include...
+ * tests/Makefile.in (testsuite): ...and add dependency on...
+ * tests/powerfunc.at: ...this new file; it specifies unit tests to
+ check POSIX.1-2008 compliance of results and errno assignment from...
+ (pow, powf, powl): ...each of these functions.
+
+2016-11-14 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Add POSIX compliant errno assignments to log functions.
+
+ * include/errno.h: Make it assembly language compatible.
+ [__ASSEMBLER__]: Omit <_mingw.h>; do not declare prototype for...
+ (_errno): ...this accessor function; the declaration is syntactically
+ invalid, in assembly language code.
+
+ * mingwex/math/errno.sx: New file; when included by other assembly
+ language files, it provides bindings for assignement of any constant
+ defined in <errno.h> to the global errno variable, facilitated by...
+ (errno): ...this new GAS macro.
+
+ * mingwex/math/log_generic.sx: New file; it provides a generic back
+ end implementation for multiple logarithmic functions, accessed via...
+ (___x87log, ___x87log_chk): ...this pair of entry points, serving...
+ (log, logf, log): ...each of these primary functions; it replaces...
+ * mingwex/math/logf.s mingwex/math/logl.s: ...these; delete them.
+
+ * mingwex/math/log1p_generic.sx mingwex/math/log10_generic.sx
+ * mingwex/math/log2_generic.sx: New files; each acts as a wrapper for
+ log_generic.sx, providing the front end entry stubs for each of...
+ (log1p, log1pf, log1pl, log10, log10f, log10l, log2, log2f, log2l):
+ ...these functions; thus, they provide complete replacements for...
+ * mingwex/math/log1p.s mingwex/math/log1pf.s mingwex/math/log1pl.s
+ * mingwex/math/log10f.s mingwex/math/log10l.s mingwex/math/log2.s
+ * mingwex/math/log2f.s mingwex/math/log2l.s: ...these; delete them.
+
+ * mingwex/math/x87cvt_generic.sx: New file; it implements...
+ (___x87cvt, ___x87cvtf): ...this pair of return value conversion
+ routines, for conversion from the FPU's internal REAL10 data format,
+ to REAL8 and REAL4, for double and float functions respectively.
+
+ * Makefile.in (libmingwex.a): Add dependencies on...
+ (x87cvt.$OBJEXT), x87cvtf.$OBJEXT), x87log.$OBJEXT), x87logf.$OBJEXT):
+ ...these object modules; implement pattern rule to build them from...
+ (x87cvt_generic.sx, log_generic.sx): ...these generic sources; also
+ provide for building the respective log function entry stubs from
+ their respective generic sources.
+
+2016-11-08 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Implement unit tests for logarithmic functions.
+
+ * tests/testsuite.at.in: m4_include...
+ * tests/Makefile.in (testsuite): ...and add dependency on...
+ * tests/logarithms.at: ...this new file; it specifies unit tests to
+ check POSIX.1-2008 compliance of results and errno assignment from...
+ (log, logf, logl, log1p, log1pf, log1pl, log10, log10f, log10l, log2)
+ (log2f, log2l): ...each of these functions.
+
+2016-11-02 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Implement unit tests for ANSI printf() functions.
+
+ * tests/Makefile.in (testsuite): Add dependency for...
+ * tests/ansiprintf.at: ...this new file, and...
+ * tests/testsuite.at.in: ...m4_include it.
+
+2016-11-01 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Fix another printf() hex-float formatting bug.
+
+ * mingwex/stdio/pformat.c (__pformat_emit_xfloat)
+ [stream->flags & PFORMAT_ZEROFILL]: Ignore this; it should be...
+ [(stream->flags & PFORMAT_JUSTIFY) == PFORMAT_ZEROFILL]: ...thus.
+
+2016-10-30 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Merge post 2016-10-18 updates from legacy branch.
+
+ * include/io.h include/wchar.h: Updated.
+ * mingwex/stdio/pformat.c: Likewise.
+
+2016-10-30 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Work around MSDN inconsistencies in _finddata_t naming.
+
+ * include/io.h (_finddata64_t, _wfinddata64_): Define them
+ respectively as aberrant alternative data type names for each of...
+ (__finddata64_t, __wfinddata64_t): ...these original names.
+ (_wfinddata32_t): Similarly, define this with...
+ (__wfinddata32_t): ...this alternative name.
+
+ * include/wchar.h (_wfinddata32_t): Correct references in comments.
+
+2016-10-30 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Fix a potentially infinite printf() format conversion loop.
+
+ * mingwex/stdio/pformat.c (__pformat_emit_xfloat)
+ [value.__pformat_fpreg_mantissa == 0]: Do not attempt to normalize
+ it; there are no 1-bits to promote, so repeated shifting until one
+ appears in most significant position will never terminate.
+
+2016-10-18 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Merge mingwrt-3.22.4 updates into 5.0-active branch.
+
+ * configure.ac: Preserve original 5.0-active state.
+ * include/wchar.h: Update per 2016-10-17 commits.
+
+2016-10-17 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Prepare and tag mingwrt-3.22.4 patch release.
+
+ * configure.ac (AC_INIT): Increment patch level.
+
+2016-10-17 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Resolve an ANSI mode <string.h> vs. <wchar.h> conflict.
+
+ * include/wchar.h [!(_WCHAR_H && _STRING_H)]: Change condition...
+ [!(_WCHAR_H && (_STRING_H && !__STRICT_ANSI__))]: ...to this; the
+ guarded declarations are not exposed by including <string.h> when...
+ [__STRICT_ANSI__]: ...this is defined; hence, we must declare them
+ when including <wchar.h>, even after including <string.h>
+
+2016-10-14 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Add dependency tracking for tests/Makefile.
+
+ * tests/Makefile.in (top_builddir): Define it.
+ (Makefile): Add automatic rebuild rule, tracking both srcdir and
+ top_builddir prerequisite changes.
+
+2016-10-14 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Correct a minor typographic error.
+
+ * tests/atlocal.in (autoconf_input): Replace invalid AC_SUBST tag...
+ (configure_input): ...with this correctly named alternative.
+
+2016-10-14 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Merge mingwrt-3.22.3 updates into 5.0-active branch.
+
+ * configure.ac: Preserve original 5.0-active state.
+ * include/_mingw.h.in include/string.h include/sys/types.h
+ * include/io.h: Update per 2016-10-13 commits.
+
+2016-10-13 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Prepare and tag mingwrt-3.22.3 patch release.
+
+ * configure.ac (AC_INIT): Increment patch level.
+
+2016-10-13 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Emulate glibc <string.h> POSIX.1 non-compliance.
+
+ * include/_mingw.h.in (_EMULATE_GLIBC): New feature test macro.
+ [_GNU_SOURCE || _BSD_SOURCE || !__STRICT_ANSI__]: Enable it when...
+ [_XOPEN_SOURCE || _POSIX_C_SOURCE || _POSIX_SOURCE]: ...none of
+ these have been pre-defined by the user.
+
+ * include/string.h [_EMULATE_GLIBC]: Include <strings.h> in full...
+ (strcasecmp, strncasecmp): ...so prototypes for these are declared.
+ [!_EMULATE_GLIBC]: Preserve partial <strings.h> include, guarded by...
+ [__STRING_H_SOURCED__]: ...this context selector, so suppressing the
+ declarations of those function prototypes.
+
+2016-10-13 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Resolve some non-ANSI typedef omissions.
+
+ * include/sys/types.h (off_t, ssize_t): Always typedef them when...
+ [_POSIX_C_SOURCE || !_NO_OLDNAMES]: ...either of these prevails.
+
+ * include/io.h (_fsize_t): Do not suppress its typedef when...
+ [__STRICT_ANSI__]: ...this compiler option applies, irrespective of...
+ [!(_IO_H && _WCHAR_H)]: ...this, which otherwise causes supression.
+
+2016-09-20 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Prepare and tag mingwrt-3.22.2 patch release.
+
+ * configure.ac (AC_INIT): Increment patch level.
+ * config.guess config.sub: Delete, per 2016-07-16 commit.
+ * include/stdlib.h: Backport, per 2016-09-14 commit.
+ * include/wchar.h: Backport, per 2016-09-17 commits.
+
+2016-09-17 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Add missing <wchar.h> declarations when compiling C++.
+
+ * include/wchar.h (fwide, mbsinit, wmemset, wmemchr, wmemcpy)
+ (wmemmove, wcstoll, wcstoull): Declare each of these for either of...
+ [_ISOC99_SOURCE || __cplusplus]: ...these conditions, rather than...
+ [_ISOC99_SOURCE]: ...this alone.
+
+2016-09-17 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Stricter <wchar.h> ISO-C99 conformity filtering.
+
+ * include/wchar.h [__STRICT_ANSI__]: Do not include any part of...
+ (direct.h, io.h, sys/stat.h, locale.h, process.h): ...any of these.
+
+2016-09-14 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Relax strict ISO-C conformity to facilitate C99 support.
+
+ * include/stdlib.h (_atoi64, _exit) [__STRICT_ANSI__]: Convention
+ dictates that the Microsoft specific functions should not be declared;
+ however, C99 provides equivalents in atoll() and _Exit(), for which we
+ gratuituously use them to provide inline implementations; thus...
+ [_ISOC99_SOURCE && !__NO_INLINE__]: ...declare them anyway.
+
+2016-09-13 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Suppress expected header warnings when running testsuite.
+
+ * include/dir.h include/dos.h [__IN_MINGWRT_TESTSUITE__]: New feature
+ test; do not emit warning messages, which declare this pair of headers
+ to be obsolete. These warnings are expected, but their format may not
+ be deterministically predictable; there is no reason to fail any test
+ on account of any such expected warning message.
+
+2016-09-13 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Create a preliminary autotest framework.
+
+ * configure.ac (AC_TESTDIR): Initialize tests subdirectory.
+ (AC_PROG_CXX): Identify C++ compiler; the testsuite will use it.
+ (AC_CHECK_PROG): Check availability of autom4te; specify fallback.
+ (AC_CONFIG_FILES): Add instantiation requests for tests/atlocal,
+ tests/Makefile, and tests/testsuite.at.tmp
+
+ * tests/testsuite.at.in tests/atlocal.in tests/headers.at
+ * tests/Makefile.in: New files; implement them.
+
+ * Makefile.in (check, check-recursive, tests): Implement new goals.
+ (mingwrt-srcdist-files): Subdivide package files complement into...
+ (mingwrt-srcdist-package-files): ...this original collection, and...
+ (mingwrt-srcdist-testsuite-files): ...this additional set.
+
+ * test_headers.c: Superseded by autotest; delete it.
+
+2016-08-25 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Add pthreads-win32 courtesy support hooks.
+
+ * include/errno.h: Assert copyright; tidy layout.
+ (_ERRNO_H_): Rename this repeat inclusion guard macro as...
+ (_ERRNO_H): ...this, conforming to preferred naming convention.
+ [__PTW32_H]: Include "ptw32_errno.h".
+
+ * include/time.h [__SCHED_H_SOURCED__]
+ (struct timespec): Typedef it selectively; do not define...
+ (_TIME_H): ...this.
+
+2016-08-07 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Implement POSIX printf() feature per request [#2310].
+
+ * mingwex/stdio/pformat.c [WITH_XSI_FEATURES]: Delete references.
+ (PFORMAT_GROUPED): New manifest constant; define it. It previously
+ appeared in an occluded XSI feature reference, but is now required.
+ (__pformat_t.tslen, __pformat_t.tschr, __pformat_t.grouping): New
+ structure member fields; they maintain control state as set up by...
+ (__pformat_enable_thousands_grouping): ...this new internal function.
+ (__pformat_int_bufsiz): Use it; it may request a size increment.
+ (__pformat_emit_digit, __pformat_emit_punct): New functions; they
+ handle output of digits, radix point, and thousands digits separator
+ punctuation for all numeric conversion formats, thus replacing...
+ (__pformat_emit_numeric_value, __pformat_emit_radix_point): ...these;
+ delete them, and update all callers to use appropriate replacements.
+ (__pformat_int) [PFORMAT_GROUPED]: Add and emit group separators.
+ (__pformat_xint_bufsiz): New internal function; it serves in place of
+ __pformat_int_bufsiz(), for those integer data conversion formats
+ which explicitly do not support thousands digits grouping, hence...
+ (__pformat_xint): ...use it, rather than __pformat_int_bufsiz().
+ (__pformat_adjust_for_grouping): New internal function; it adjusts the
+ __gdtoa radix point index for fixed point conversion formats, to allow
+ for the insertion of thousands digits group separators, hence...
+ (__pformat_emit_float): ...use it, and emit separators as appropriate.
+ (__pformat_emit_efloat) [PFORMAT_GROUPED]: Explicitly disable it.
+ (__pformat): Initialise stream references for __pformat_t.grouping,
+ __pformat_t.tslen, and _pformat_t.tschr, on entry; release any memory
+ allocated for __pformat_t.grouping, when done.
+
+2016-08-01 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Implement POSIX conforming getline() and getdelim() functions.
+
+ * mingwrt/mingwex/stdio/getdelim.c: New file.
+ * mingwrt/man/getline.3.man: Likewise.
+
+ * mingwrt/include/stdio.h [_POSIX_C_SOURCE >= 200809L]
+ (getdelim): New function, implemented externally; declare prototype.
+ (getline): New function; declare prototype; implement as __CRT_ALIAS
+ inline, with __LIBIMPL__ external representation.
+
+ * mingwrt/Makefile.in (libmingwex.a): Add getdelim.$OBJEXT
+ (mingwrt-man$man3ext): Add manpage dependency references to create...
+ (getline.$man3ext, getdelim.$man3ext): ...these; declare them as
+ distributable duplicates, to be generated from...
+ (getline.$man3ext.man): ...this common source.
+
+2016-08-01 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Merge mingwrt-3.22.1 legacy updates to 5.0-active branch.
+
+ * mingwex/math/powl.c: Update per issue [#2036] workaround.
+ * mingwex/stdio/pformat.c: Likewise, per issue [#2309] resolution,
+ and subsequent 2016-07-24 optimization.
+
+2016-07-31 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Prepare and tag all files for release of mingwrt-3.22.1.
+
+ * configure.ac (AC_INIT): Adjust package version number; append
+ patch level identification.
+
+2016-07-31 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Interim workaround for issue [#2306].
+
+ * mingwex/math/powl.c: Tidy layout; correct indentation.
+ (powl, reducl): Use ISO-C declaration syntax; K&R is obsolescent.
+ (powl) [OVERFLOW]: Correct representation of return value, using...
+ (INFINITYL): ...this manifest constant value, instead of...
+ (MAXNUML): ...this.
+
+2016-07-24 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Optimize printf() field width accumulation function.
+
+ * mingwex/stdio/pformat.c (__imul10plus): Omit multiply by ten on
+ already accumulated zero total; it is unnecessary, since ten times
+ zero is still zero.
+
+2016-07-22 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Fix printf() field width parsing regression issue [#2309].
+
+ * mingwex/stdio/pformat.c (__imul10plus): Coerce any accumulated
+ negative total to zero; the only negative value to be handled is...
+ (PFORMAT_IGNORE): ...this; it ceases to be applicable, on first call
+ to __imul10plus(), to accumulate field width or precision.
+
+2016-07-19 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Update install-sh to match mingw.org/build-aux package.
+
+ * install-sh: Delete it; use version in parent directory instead,
+ recreating local copy, (as symlink, if supported), on demand.
+
+2016-07-17 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Eliminate redundant configuration files.
+
+ * aclocal.m4 VERSION.m4: Delete them; restore them on demand, via...
+ * Makefile.in ($top_srcdir/../%): ...this symlink dependency rule.
+
+ * configure.ac (AC_PROG_LN_S): Add configuration check.
+
+2016-07-17 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Merge mingwrt-3.22 packaging correction to 5.0-active branch.
+
+2016-07-17 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Correct mingwrt-3.22 source package subdirectory omission.
+
+ * Makefile.in (mingwrt-srcdist-files): Add msvcrt-xref.
+
+2016-07-16 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Discard redundant config.guess and config.sub files.
+
+ * config.guess config.sub: Delete them; they are no longer required.
+
+2016-07-16 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Merge recent legacy branch updates to 5.0-active branch.
+
+ * Makefile.in include/ctype.h include/excpt.h include/stdint.h
+ * include/glob.h include/limits.h include/locale.h include/search.h
+ * include/stdio.h include/stdlib.h include/wchar.h include/wctype.h
+ * include/sys/param.h include/sys/stat.h mingwex/tdelete.c
+ * mingwex/tfind.c mingwex/tsearch.c mingwex/twalk.c: Updated.
+
+2016-07-14 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Prepare and tag all files for release of mingwrt-3.22.
+
+ * configure.ac (AC_INIT): Adjust package version number.
+
+2016-07-14 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Preserve kludge to evade GCC build failure on S_ISBLK misuse.
+
+ * include/sys/stat.h (_NO_UNSUPPORTED): New feature test macro; it
+ should be user defined, if desired, before inclusion; leave undefined.
+ [!_S_IFBLK && !_NO_UNSUPPORTED && !_NO_OLDNAMES] (S_ISBLK): Define it,
+ as appropriate for POSIX conforming usage; do not poison it.
+
+2016-07-10 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Fix C++ strict type checking inconsistency in <glob.h>
+
+ * include/glob.h (__ERRFUNC_P): New private macro; define it to match
+ the type signature of the error function pointer, to be passed to...
+ (glob): ...this function; use it to correctly represent error function
+ pointer argument in inline implementation.
+
+2016-07-09 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Factor out <ctype.h> vs. <wctype.h> duplicate elements.
+
+ * include/ctype.h: Assert copyright; tidy layout.
+ [!_CTYPE_H_]: Do not evaluate; rename macro to be tested, as...
+ [!_CTYPE_H]: ...this preferred multiple inclusion guard macro name.
+ (__CTYPE_H_SOURCED__): New macro; define it, and include <wctype.h>,
+ so requesting partial inclusion, to retrieve definitions for...
+ (_ALPHA, _BLANK, _CONTROL, _DIGIT, _HEX, _LOWER, _PUNCT, _SPACE)
+ (_UPPER, WEOF): ...these macros; hence, do not define them locally.
+ (wint_t, wchar_t, wctype_t): Likewise these type definitions...
+ (iswalnum, iswalpha, iswascii, iswblank, iswcntrl, iswctype)
+ (iswdigit, iswgraph, iswlower, iswprint, iswpunct, iswspace)
+ (iswupper, iswxdigit, towlower, towupper, is_wctype): ...these function
+ prototypes, and corresponding inline alternative implementations.
+ (_BEGIN_C_DECLS, _END_C_DECLS): Use these as appropriate.
+ [__MSVCRT_VERSION__<=__MSVCR70_DLL]: Likewise.
+
+ * include/wctype.h: Assert copyright; tidy layout.
+ [!_WCTYPE_H_]: Do not evaluate; rename macro to be tested, as...
+ [!_WCTYPE_H]: ...this preferred multiple inclusion guard macro name;
+ do not define it when partial inclusion only is selected, by...
+ [__CTYPE_H_SOURCED__]: ...this; thence define only...
+ (_ALPHA, _BLANK, _CONTROL, _DIGIT, _HEX, _LOWER, _PUNCT, _SPACE)
+ (_UPPER): ...these character characterisation macros...
+ (wint_t, wchar_t, wctype_t): ...these type definitions...
+ (iswalnum, iswalpha, iswascii, iswblank, iswcntrl, iswctype)
+ (iswdigit, iswgraph, iswlower, iswprint, iswpunct, iswspace)
+ (iswupper, iswxdigit, towlower, towupper): ...these function
+ prototypes, with corresponding inline alternative implementations...
+ (is_wctype): ...this further prototype, qualified as deprecated...
+ (WEOF): ...and this status reporting macro.
+ (_ctype, _pctype, _pctype_dll, _imp___ctype, _imp___pctype): Delete
+ declarations, and associated definitions; they do not belong here.
+ (isleadbyte): Likewise, this Microsoft specific function prototype...
+ (_LEADBYTE): ...and this associated character classification macro.
+ (_BEGIN_C_DECLS, _END_C_DECLS): Use these as appropriate.
+
+2016-07-04 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Do not pass MAKEFLAGS explicitly, when invoking recursive make.
+
+ * Makefile.in (install-strip, uninstall): Delete explicit $(MAKEFLAGS)
+ references from $(MAKE) command lines; make passes them implicitly.
+
+2016-07-03 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Rework tsearch and friends; resolve issues [#1512] and [#1576].
+
+ * include/search.h: Assert copyright; tidy layout.
+ (_SEARCH_H_): Rename this multiple inclusion guard macro...
+ (_SEARCH_H): ...to conform to this preferred standard convention.
+ (__search_comparator): New function prototype typedef; it provides a
+ convenient shorthand notation for argument declarations in functions
+ which require a comparator function pointer; use it where appropriate.
+ (tsearch, tfind, tdelete) [__MINGW_ATTRIB_NONNULL]: Apply to arguments
+ #2 and #3; was previously incorrectly applied to arguments #1 and #3.
+ (twalk) [__MINGW_ATTRIB_NONNULL]: Apply to both arguments #1 and #2.
+ [_SEARCH_PRIVATE] (__MINGW_ATTRIB_NONNULL): Suppress its effect, to
+ ensure that GCC does not optimize away checks within implementation.
+ (_BEGIN_C_DECLS, _END_C_DECLS): Use these.
+
+ * mingwex/tdelete.c: Tidy layout.
+ (tdelete): Reimplement it as a thin wrapper around...
+ (__tdelete): ...this; it encapsulates the original implementation as a
+ __CRT_ALIAS (inline) function, to simplify void ** --> node_t ** casts.
+ Remove unnecessary non-null assertions for arguments #1 and #3; prefer
+ to validate arguments #2 and #3 internally, and simply return NULL if
+ necessary; hence, do not include <assert.h>
+
+ * mingwex/tfind.c: Tidy layout.
+ (tfind): Similarly reimplement it as a thin wrapper around...
+ (__tfind): ...this __CRT_ALIAS (inline) encapsulation of the original.
+ Add non-null validation for argument #3; do not include <assert.h>
+
+ * mingwex/tsearch.c: Tidy layout.
+ (tsearch): Once again, reimplement it as a thin wrapper around...
+ (__tsearch): ...this __CRT_ALIAS variant. Add non-null validation for
+ argument #3; do not include <assert.h>
+
+ * mingwex/twalk.c: Tidy layout; do not include <assert.h>
+
+2016-06-28 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Rework __try1/__except1 to resolve issue [#1328].
+
+ * include/excpt.h: Assert copyright; tidy layout.
+ (_EXCPT_H_): Multiple inclusion guard macro renamed to...
+ (_EXCPT_H): ...this; update all references as appropriate.
+ (_BEGIN_C_DECLS, _END_C_DECLS): Use these.
+ (__typecast_alloca): New macro; define it, casting return type of...
+ (__builtin_alloca): ...this to a specified data type; use it in...
+ (__try1_setup, __except1_teardown): ...these new macros; define them
+ as parameterized templates, providing both -masm-att and -masm-intel
+ syntax implementations, with host specific word size and register
+ assignment parameter substitutions; use them to redefine...
+ (__try1, __except1): ...each of these, using __builtin_alloca to avoid
+ direct stack pushes when registering exception handlers; assign the
+ template parameters as appropriate to support implementation for...
+ [_WIN64, _WIN32]: ...either of these, as the host requires.
+
+2016-06-17 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Merge Cygwin CVS updates to legacy branch.
+
+ * include/stdio.h: Merge 2011-11-30 and 2012-08-02 commits.
+ (getc, getchar, putc, putchar): Declare function prototypes.
+ (fopen64, ftello64): Likewise; change implementation classification
+ from __CRT_INLINE to __CRT_ALIAS, to avoid C++ emitted code bloat.
+ (_lock_file, _unlock_file): Add prototypes; modify merge to...
+ [__MSVCRT_VERSION__>=__MSVCR80_DLL]: ...require this.
+
+ * include/stdint.h: Merge 2012-07-30 commit; include <_mingw.h>
+
+ * include/excpt.h: Merge 2012-08-01 commit.
+ (__try1, __except1) [_WIN64]: Add alternative implementations.
+
+ * include/stdlib.h: Merge 2012-08-02 commit.
+ [__MSVCRT__VERSION__>=__MSVCR70_DLL || _WIN32_WINNT >= _WINXP]
+ (_strtoi64, _strtoui64, _wcstoi64, _wcstoui64): Declare prototypes.
+ [__MSVCRT__VERSION__>=__MSVCR80_DLL || _WIN32_WINNT >= _VISTA]
+ (_strtoi64_l, _strtoui64_l, _wcstoi64_l, _wcstoui64_l): Likewise...
+ [!__have_typedef_locale_t] (__need_locale_t): ...and define to get...
+ (locale_t): ...this, by selective inclusion of <locale.h>
+ [__WCHAR_H_SOURCED] (_wcstoi64, _wcstoui64, _wcstoi64_l)
+ (_wcstoui64_l): Make these function prototypes available for selective
+ inclusion by...
+ * include/wchar.h: ...this; merge 2012-08-02 commit.
+ [__MSVCRT__VERSION__>=__MSVCR70_DLL || _WIN32_WINNT >= _WINXP]
+ (_wcstoi64, _wcstoui64): Note availability of function prototypes via
+ selective inclusion of their actual declarations from <stdlib.h>
+ [__MSVCRT__VERSION__>=__MSVCR80_DLL || _WIN32_WINNT >= _VISTA]
+ (_wcstoi64_l, _wcstoui64_l): Likewise.
+
+ * include/limits.h: Merge 2012-08-02 commit.
+ [__STRICT_ANSI__] (PATH_MAX): Suppress definition.
+
+ * include/sys/param.h: Merge 2012-08-02 commit.
+ [PATH_MAX not defined] (MAXPATHLEN): Define it explicitly.
+ [PATH_MAX defined] (MAXPATHLEN): Define it as an alias.
+
+2016-06-12 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Add typedef and access support for opaque locale_t objects.
+
+ * include/locale.h (locale_t, _locale_t): Define opaque types.
+ [__need_locale_t]: Make them selectively accessible; define...
+ (__have_typedef_locale_t): ...this, when they are available.
+ [_LOCALE_H] (_create_locale, _get_current_locale, _free_locale):
+ Declare function prototypes, on direct <locale.h> inclusion only.
+ [_LOCALE_H || _WCHAR_H] (_wcreate_locale): Likewise; this is to be
+ visible on direct inclusion, or when including <wchar.h>
+
+ * include/stdio.h [!(_STDIO_H && _WCHAR_T)]: Correct expression of...
+ [__MSVCR80_DLL || _WIN32_WINNT_VISTA]: ...this subsidiary condition;
+ for all cases when this is true, (including when [_STDIO_H] alone)...
+ [!__have_typedef_locale_t] (__need_locale_t): ...define this, and
+ include <locale.h>, for selective definition of...
+ (locale_t): ...this.
+
+2016-05-19 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Occlude unsupported _S_IFBLK feature; resolve issue [#1146].
+
+ * include/sys/stat.h (_MINGW_S_IFBLK_KLUDGE): New feature test macro;
+ do not define it, and strongly recommend that it remains undefined.
+ [!_MINGW_S_IFBLK_KLUDGE] (_S_IFBLK, S_IFBLK): Do not define them.
+ [!_MINGW_S_IFBLK_KLUDGE] (_S_ISBLK, S_ISBLK): Poison them.
+ [_MINGW_S_IFBLK_KLUDGE] (_S_IFBLK, S_IFBLK): Adjust definitions; use a
+ modified value, which is guaranteed to be impossible to match in...
+ [_S_ISBLK, S_ISBLK]: ...these, thus enforcing false test results.
+
+2016-05-18 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Fix a typo in a <sys/stat.h> inline function definition.
+
+ * include/sys/stat.h [__MSVCRT_VERSION__ >= __MSVCR80_DLL]
+ (stat): First argument declared as 'int'; should be 'const char *';
+ correct it.
+
+2016-05-12 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Synchronize package version management with Win32-API.
+
+ * VERSION.m4: New file; link it to keep in sync with identically named
+ file in top level composite package source directory; it defines...
+ (__VERSION__): ...this new composite package version macro.
+
+ * aclocal.m4: Link it, to keep in sync with identically named files in
+ top level composite source and sibling w32api sub-package directories.
+ (__VERSION__): New macro; include VERSION.m4 to define it.
+ (__BUG_REPORT_URL__): New macro; define it.
+
+ * configure.ac (AC_INIT): Assign package version and bug report URL...
+ (__VERSION__, __BUG_REPORT_URL__): ...from these, as defined through
+ automatic inclusion of aclocal.m4
+
+ * Makefile.in (configure): Add dependency on VERSION.m4
+
+2016-05-12 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Resolve some strnlen() implementation issues.
+
+ * mingwex/strnlen.s (__mingw_strnlen) [!NUL]: Correct termination
+ logic; should have used jnz, not jz, to skip endpoint adjustment on
+ scanning past a terminal NUL character code.
+
+ * include/string.h [_POSIX_C_SOURCE >= 200809L] (strnlen): Do not
+ #define it, as this breaks GCC compilation; use __CRT_ALIAS instead,
+ with __JMPSTUB__ referencing via "oldname" libraries.
+
+ * Makefile.in (jmpstub_awk_script, libimpl_awk_script): Adapt to
+ facilitate assignment of __JMPSTUB__ and __LIBIMPL__ references to
+ libraries other than libmingwex.a
+ (strnlen.jmpstub.$OBJEXT): Assign it to all "moldname" libraries prior
+ to libmoldname80.a, in addition to libcoldname.a, as specified by the
+ __JMPSTUB__ assignment within <string.h>
+
+2016-05-03 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Enforce consistent specification of package version.
+
+ * include/_mingw.h: Rename as...
+ * include/_mingw.h.in: ...this build-time template file.
+ (__MINGW32_VERSION): Redefine it, in terms of...
+ (%PACKAGE_VERSION_LONG%): ...this substitution template.
+ (__MINGW32_MAJOR_VERSION, __MINGW32_MINOR_VERSION)
+ (__MINGW32_PATCHLEVEL): Likewise, redefine them in terms of...
+ (%PACKAGE_VERSION_MAJOR%, %PACKAGE_VERSION_MINOR%)
+ (%PACKAGE_VERSION_PATCH%): ...these.
+
+ * configure.ac (AC_CONFIG_SRCDIR): Adjust for renamed file.
+ (MINGW_AC_CONFIG_EXTRA_SRCDIR): Likewise, for similarly renamed
+ w32api/include/w32api.h.in file.
+
+ * Makefile.in (all-mingwrt-stage-1-only): Add dependency on...
+ (_mingw.h, w32api.h): ...these; add rule to generate them, using...
+ (PACKAGE_VERSION_SCRIPT, PACKAGE_VERSION_FORMAT): ...these new macros;
+ they apply appropriate substitutions to the renamed template files.
+ (install-mingwrt-headers): Explicitly add _mingwrt.h
+
+2016-04-30 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Make strnlen() available for all MSVCRT.DLL versions.
+
+ * msvcrt-xref/msvcrt.def.in (strnlen): Mark it as...
+ (__MINGW_DLSYM): ...this, excluding its exposure in libmsvcrt.dll, and
+ thus requiring a dlsym() lookup for versions which provide it.
+
+ * include/string.h [__MSVCRT_VERSION__>=__MSVCR80_DLL] (strnlen):
+ Declare prototype, for use from these non-free DLLs, otherwise...
+ [_POSIX_C_SOURCE >= 200809L] (strnlen): Define it as an alias for...
+ (__mingw_strnlen): ...this new libmingwex.a function.
+
+ * mingwex/strnlen.s: New file; it implements...
+ (__mingw_strnlen, __mingw_strnlen_s): ...these new functions.
+
+ * Makefile.in (libmingwex.a): Add requirement for...
+ (strnlen.$OBJEXT): ...this; add vpath specification for its source.
+
+2016-04-26 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Use correct paths for partially included header files.
+
+ * include/io.h include/process.h: Use 'iquote' #include "stdint.h", to
+ ensure that we get stdint.h from the same include directory.
+ * include/stdio.h: Likewise for #include "stdarg.h", and "sys/types.h"
+ * include/wchar.h: Likewise for all of #include "stdio.h", "stdlib.h",
+ "direct.h", "sys/stat.h", "io.h", "time.h", "locale.h", and "process.h"
+ * include/dir.h include/dos.h: Likewise for #include "io.h"
+ * include/direct.h: Likewise for #include "dos.h"
+
+2016-04-13 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Generalize procedure for installing manpages.
+
+ * man/dirname.man: Rename it as...
+ * man/dirname.3.man: ...this, with inherent MANSECT specification.
+ (TH): Use %PAGEREF% substitution for NAME, MANSECT, and DATE.
+ (MS-Windows): Do not append \[tm]; it doesn't render well in Windows
+ console. Further, correct typos; some syntactic adjustments.
+
+ * Makefile.in (%:%.man): New rule; define it.
+ (%.mancopy, %.mancopy-recursive): New rules; define and use with...
+ (reference_manpage): ...this new macro, defining it to map...
+ (dirname.3.man): ...this as the reference source file for both of...
+ (basename.3, dirname.3): ...these installed manpages.
+ (format_manpage): Add MANSECT and DATE to expansion of...
+ (%PAGEREF%): ...this sed substitution pattern.
+
+2016-04-12 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Update several incorrectly attributed header files.
+
+ * include/direct.h include/io.h include/locale.h include/math.h
+ * include/process.h include/stdio.h include/stdlib.h include/string.h
+ * include/sys/stat.h include/sys/types.h include/time.h: Identify the
+ original author as Colin Peters; Rob Savoye merely imported them into
+ the original CVS repository, when he created it.
+
+ * include/wchar.h: Likewise, imported by Rob Savoye, but the original
+ source file is unattributed.
+
+2016-04-11 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Eliminate all references to non-standard __NO_ISOCEXT macro.
+
+ * include/math.h: Tidy layout.
+ [!defined __NO_ISOCEXT]: Do not use this ugly double negative; in any
+ case, we do not want to encourage users to define such implementation
+ private macros; instead, prefer to make use of...
+ [defined _ISOC99_SOURCE]: ...this glibc compatible feature test.
+ [__STDC_VERSION__ >= 199901L]: Do not require this; it is implied, by
+ definition, in _ISOC99_SOURCE.
+ * include/stdio.h [!defined __NO_ISOCEXT]: Likewise; replace with...
+ [defined _ISOC99_SOURCE]: ...this, throughout.
+
+2016-04-10 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Make resetting of __need_typedef requests more robust.
+
+ * include/sys/types.h [__need_off_t, __need___off64_t]
+ [__need_ssize_t, __need_time_t]: Move corresponding #undef out of, and
+ after the respective conditional blocks, which provide each associated
+ typedef, so ensuring that any repeat request is properly reset.
+
+ * include/time.h [__need_time_t]: Always delegate to <sys/types.h> for
+ typedef, and reset of request, even in cases where...
+ [_TIME_H]: ...this is already defined.
+
+2016-04-10 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Add a missing comment terminator.
+
+ * include/io.h [!(defined _IO_H && defined _WCHAR_H)]: Properly
+ terminate the comment annotating the closing #endif statement.
+
+2016-04-06 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Declare <dir.h> as formally deprecated.
+
+ * include/dir.h: Assert copyright.
+ (pragma GCC system_header): Declare it.
+ (_DIR_H): Define as multiple inclusion macro.
+ [!_DIR_H]: Emit "obsolete header" warning message.
+
+2016-04-06 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Factor out <wchar.h> vs. <io.h> duplicate declarations.
+
+ * include/io.h: Assert copyright; tidy layout.
+ (_IO_H_): Rename this multiple inclusion guard macro...
+ (_IO_H): ...to this preferred form; do not define it when...
+ [__WCHAR_H_SOURCED__]: ...this is defined, in which case declare...
+ (_waccess, _wchmod, _wcreat, _wopen, _wsopen, _wunlink, _wmktemp)
+ (_wfindfirst, _wfindnext, _wfindfirst64, _wfindnext64, _wfindfirsti64)
+ (_wfindnexti64, _wfindfirst32i64, _wfindnext32i64, _wfindfirst64i32)
+ (_wfindnext64i32, _wfindfirst32, _wfindnext32, _findclose): ...only
+ these function prototypes, common to <wchar.h>, together with...
+ (_fsize_t, struct _wfinddata_t, struct _wfinddatai64_t)
+ (struct __wfinddata64_t, struct _wfinddata64i32_t)
+ (struct _wfinddata32i64_t, struct __wfinddata32_t): ...these
+ requisite data type definitions.
+ (pragma GCC system_header): Declare it.
+ (__need_intptr_t): Define, and include <stdint.h> to get...
+ (intptr_t): ...this typedef; neither define it locally, nor define...
+ (_INTPTR_T_DEFINED): ...this; delete all references.
+ (_FSIZE_T_DEFINED): Do not define it; delete all references; rather...
+ [!(defined _IO_H && defined _WCHAR)] (_fsize_t): Define it.
+ (FILENAME_MAX): Define it unconditionally.
+ (__struct_finddata_t): New temporary macro; define and use it to...
+ (struct _finddata_t, struct _wfinddata_t, struct _finddatai64_t)
+ (struct _wfinddatai64_t, struct __finddata64_t, struct __wfinddata64_t)
+ (struct _finddata64i32_t, struct _wfinddata64i32_t)
+ (struct _finddata32i64_t, struct _wfinddata32i64_t)
+ (struct __finddata32_t, struct __wfinddata32_t): ...define these.
+
+ * include/wchar.h (_WFINDDATA_T_DEFINED): Do not define it; delete all
+ references; filter out associated data type definitions, namely...
+ (struct _wfinddata_t, struct _wfinddatai64_t): ...these, and also...
+ (struct __wfinddata64_t, struct _wfinddata64i32_t): ...these, and...
+ (struct _wfinddata32i64_t, struct __wfinddata32_t): ...these.
+ (_WIO_DEFINED): Likewise, do not define it; delete all references;
+ filter out associated function prototype declarations for all of...
+ (_waccess, _wchmod, _wcreat, _wopen, _wsopen, _wunlink, _wmktemp)
+ (_wfindfirst, _wfindnext, _wfindfirst64, _wfindnext64, _wfindfirsti64)
+ (_wfindnexti64, _wfindfirst32i64, _wfindnext32i64, _wfindfirst64i32)
+ (_wfindnext64i32, _wfindfirst32, _wfindnext32): ...these; reproduce
+ them by selective inclusion of <io.h>.
+
+2016-04-04 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Factor out <wchar.h> vs. <process.h> duplicate declarations.
+
+ * include/process.h: Assert copyright; tidy layout.
+ (_PROCESS_H_): Rename this multiple inclusion guard macro...
+ (_PROCESS_H): ...to this preferred form; do not define it when...
+ [__WCHAR_H_SOURCED__]: ...this is defined, in which case declare...
+ (_wexecl, _wexecle, _wexeclp, _wexeclpe, _wexecv, _wexecve, _wexecvp)
+ (_wexecvpe, _wspawnl, _wspawnle, _wspawnlp, _wspawnlpe, _wspawnv)
+ (_wspawnve, _wspawnvp, _wspawnvpe): ...only these functions.
+ [!__WCHAR_H_SOURCED__] (_PROCESS_H): Define it; declare all functions
+ normally specified herein, including those listed above, as required.
+ (_BEGIN_C_DECLS, _END_C_DECLS): Use to wrap extern "C" declarations.
+ (__need_intptr_t): Define it prior to including <stdint.h>.
+ (pragma GCC system_header): Declare it.
+
+ * include/wchar.h (_WPROCESS_DEFINED): Delete it; filter out...
+ (_wexecl, _wexecle, _wexeclp, _wexeclpe, _wexecv, _wexecve, _wexecvp)
+ (_wexecvpe, _wspawnl, _wspawnle, _wspawnlp, _wspawnlpe, _wspawnv)
+ (_wspawnve, _wspawnvp, _wspawnvpe): ...these function prototypes;
+ reproduce them, by selective inclusion of <process.h>.
+
+2016-04-04 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Enable selective retrieval of intptr typedefs from <stdint.h>.
+
+ * include/stdint.h: Assert copyright; tidy layout.
+ [__need_intptr_t || __need_uintptr_t] (_STDINT_H): Do not define it;
+ conceal all normally defined data types, except either or both of...
+ [__need_intptr_t] (intptr_t): ...this, and/or...
+ [__need_uintptr_t] (uintptr_t): ...this.
+ (pragma GCC system_header): Declare it.
+
+2016-03-29 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Factor out <wchar.h> vs. <sys/stat.h> duplicate declarations.
+
+ * include/sys/stat.h: Assert copyright; tidy layout.
+ (pragma GCC system_header): Declare it.
+ (_STAT_H_): Rename multiple inclusion guard macro; adopt...
+ (_SYS_STAT_H): ...this preferred naming convention; however, when...
+ [__WCHAR_H_SOURCED__] (_SYS_STAT_H): ...do not define it; declare...
+ (_wstat, _wstati64, _wstat64, _wstat32): ...these functions, and...
+ (_wstat32i64, _wstat64i32): ...these, as appropriate to user specified
+ __MSVCRT_VERSION__ and _WIN32_WINNT macro definitions, namely...
+ [__MSVCRT_VERSION__ >= 0x601]: ...this, updated to become...
+ [__MSVCRT_VERSION__ >= __MSVCR61_DLL]: ...this; augment it with...
+ [|| _WIN32_WINNT >= _WIN32_WINNT_WIN2K]: ...this complement; also...
+ [__MSVCRT_VERSION__ < 0x800]: this, updated to become...
+ [__MSVCRT_VERSION__ < __MSVCR80_DLL]: ...this; likewise...
+ [__MSVCRT_VERSION__ >= 0x800]: ...this, which becomes...
+ [__MSVCRT_VERSION__ >= __MSVCR80_DLL]: ...this.
+ (__struct_stat_defined): New macro; define, and use it to define...
+ (struct stat, struct _stat, struct _stati64, struct __stat64)
+ (struct __stat32, struct _stat32i64, struct _stat64i32): ...these.
+ [!__WCHAR_H_SOURCED__] (_SYS_STAT_H): Define it; also include
+ <sys/types.h>, delegating to it the inclusion of <_mingw.h>, and
+ definition of types size_t and wchar_t; declare all header content,
+ including that declared when __WCHAR_H_SOURCED__ is defined, unless
+ already declared as a result of selective inclusion by <wchar.h>
+ (__need_size_t, __need_wchar_t): Do not define them; consequently,
+ there is no need to include <stddef.h>; do not do so.
+
+ * include/wchar.h (_wstat, _wstati64, _wstat64): Factor out.
+ (_wstat32, _wstat32i64, _wstat64i32, struct stat, struct _stat)
+ (struct _stati64, struct __stat64, struct __stat32, struct _stat32i64)
+ (struct _stat64i32): Likewise; reproduce them by selective inclusion
+ of <sys/stat.h>
+
+2016-03-28 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Factor out <wchar.h> vs. <direct.h> duplicate declarations.
+
+ * include/direct.h: Conditionally partition it, such that...
+ [__WCHAR_H_SOURCED__] (_DIRECT_H): Do not define it; declare only...
+ (_wchdir, wchar_t, wchar_t, _wmkdir, _wrmdir): ...these, otherwise...
+ [!__WCHAR_H_SOURCED__] (_DIRECT_H): Define it; expose all content.
+ (_WDIRECT_DEFINED): Never define it; delete all references.
+
+ * include/wchar.h (_WDIRECT_DEFINED): Delete all references.
+ (_wchdir, wchar_t, wchar_t, _wmkdir, _wrmdir): Delete prototypes;
+ selectively #include <direct.h> to reproduce them.
+
+2016-03-26 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Factor out <direct.h> vs. <dos.h> duplicate declarations.
+
+ * include/dos.h: Assert copyright; tidy layout.
+ (pragma GCC system_header): Declare it.
+ (_DOS_H_): Rename multiple inclusion guard macro, to adopt...
+ (_DOS_H): ...this preferred convention; do not define it when...
+ [__DIRECT_H_SOURCED__]: ...this applies; restrict declarations to...
+ (struct _diskfree_t): ...this aggregate data type, together with...
+ [_NO_OLDNAMES] (diskfree_t): ...this alternative name for it, and...
+ (_getdiskfree): ...this associated function.
+ [!__DIRECT_H_SOURCED__] (_DOS_H): Define it; expose all content, but
+ emit a warning that this header is obsolete, and should not be used.
+ (_BEGIN_C_DECLS, _END_C_DECLS): Use to wrap extern "C" declarations.
+ (_DISKFREE_T_DEFINED): Do not define it; delete all references.
+ (__need_wchar_t): Do not define it; it isn't needed here, and hence,
+ neither is it necessary to #include <stddef.h>; do not do so. Also,
+ do not #include <_mingw.h> explicitly, but always #include <io.h>,
+ which will implicitly #include <_mingw.h> anyway.
+
+ * include/direct.h: Assert copyright; tidy layout.
+ (pragma GCC system_header): Declare it.
+ (_DIRECT_H_): Rename this multiple inclusion guard macro...
+ (_DIRECT_H): ...to adopt this preferred naming convention.
+ (_BEGIN_C_DECLS, _END_C_DECLS): Use to wrap extern "C" declarations.
+ (_DISKFREE_T_DEFINED, diskfree_t, struct _diskfree_t): Do not define.
+ (_getdiskfree): Likewise, do not declare prototype; instead...
+ (__DIRECT_H_SOURCED__): ...define this, and #include <dos.h>; also
+ delegate indirect inclusion of <_mingw.h> and <io.h> to this, rather
+ than include them directly; undefine __DIRECT_H_SOURCED__ when done.
+ (__need_wchar_t): Do not define it, and do not #include <stddef.h>;
+ although needed, we may inherit it indirectly from <sys/types.h>,
+ included by <io.h> via <dos.h>.
+
+2016-03-26 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Evade CPP mismatched apostrophe warnings in windres comments.
+
+ * msvcrt-xref/msvcrt.def.in (; pexports): 1,Gs/doesn't/does not/g
+
+2016-03-20 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Factor out <locale.h> vs. <wchar.h> duplicate declarations.
+
+ * include/locale.h: Assert copyright; tidy layout.
+ (_LOCALE_H_): Rename multiple inclusion guard macro, to...
+ (_LOCALE_H): ...this; do not define it when...
+ [__WCHAR_H_SOURCED__]: ...this applies; restrict declarations to...
+ (_wsetlocale): ...just this one visible function prototype.
+ [!__WCHAR_H_SOURCED__] (_LOCALE_H): Define it; expose all content.
+ (_WLOCALE_DEFINED): Do not define it; delete all references.
+ (pragma GCC system_header): Declare it.
+
+ * include/wchar.h (_wsetlocale): Delete prototype; maintain its
+ visibility by selective inclusion of <locale.h> instead.
+ (_WLOCALE_DEFINED): Delete all references.
+
+2016-03-18 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Resolve some "implicit function declaration" warnings.
+
+ * setargv.c (isspace): Include <ctype.h> for declaration.
+ * cpu_features.h (__cpu_features_init): Declare function prototype.
+ * crt1.c (_setargv): Likewise; (this isn't needed elsewhere).
+
+2016-03-18 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Factor out <stdlib.h> vs. <wchar.h> duplicate declarations.
+
+ * include/stdlib.h [__WCHAR_H_SOURCED__]
+ (_STDLIB_H): Do not define it; restrict visible declarations to...
+ (wcstol, wcstoul, wcstod, _wgetenv, _wputenv, _wsearchenv, _wsystem)
+ (_wmakepath, _wsplitpath, _wfullpath, wcstof, wcstold): ...this subset
+ of regular <stdlib.h> content; full content is declared only when...
+ [!__WCHAR_H_SOURCED__] (_STDLIB_H): ...this applies; define it.
+ (_WSTDLIB_DEFINED): Do not define it; delete all references.
+ (pragma GCC system_header): Declare it; tidy layout.
+
+ * include/wchar.h: Delete duplicated declarations for...
+ (wcstol, wcstoul, wcstod, _wgetenv, _wputenv, _wsearchenv, _wsystem)
+ (_wmakepath, _wsplitpath, _wfullpath, wcstof, wcstold): ...these;
+ include <stdlib.h> selectively, to maintain their visibility.
+ (_WSTDLIB_DEFINED): Delete all references.
+
+2016-03-17 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Relocate misplaced umask() function prototypes.
+
+ * include/sys/stat.h (umask, _umask): Declare prototypes; duplicate...
+ * include/io.h (umask, _umask): ...these; POSIX doesn't expect them
+ here, but leave them for backward, or Microsoft, compatibility.
+
+2016-03-17 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Correct another _BEGIN_C_DECLS imbalance error.
+
+ * include/wchar.h (_BEGIN_C_DECLS): One misplaced, superfluous, and
+ unbalanced instance deleted; one correctly balanced instance remains.
+
+2016-03-13 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Support installation of headers with empty parts directory.
+
+ * Makefile.in (SUB_HEADERS_PRESENT): New macro; define it, and...
+ (install-mingwrt-headers): ...invoke it; if false, do not perform...
+ (INSTALL_SUB_HEADERS): ...this.
+
+2016-03-13 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Reinstate typedef for non-standard off64_t.
+
+ * include/sys/types.h [!__STRICT_ANSI__] (off64_t): Define it as...
+ (__off64_t): ...typedef derived from this; although non-standard, it
+ is gratuitously required when building GCC's libgfortran.a
+
+2016-03-13 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Correct conditional compilation block nesting errors.
+
+ * include/stdio.h include/time.h (_BEGIN_C_DECLS, _END_C_DECLS): Keep
+ them balanced within, and around, conditional compilation blocks.
+
+2016-03-10 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Feature test _MINGW32_EXTENDED_SOURCE renamed.
+
+ * include/_mingw.h (_MINGW32_EXTENDED_SOURCE): Rename to...
+ (_MINGW32_SOURCE_EXTENDED): ...this, to improve naming consistency...
+ (_XOPEN_SOURCE_EXTENDED): ...with this POSIX-XSI feature test.
+ (__USE_MINGW_ANSI_STDIO): Note that it is intended for internal use;
+ users should enable any conventional feature test which implies it.
+
+ * include/time.h (_MINGW32_EXTENDED_SOURCE): Update references...
+ (_MINGW32_SOURCE_EXTENDED): ...i.e. to refer to this.
+
+2016-02-28 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Correct atexit() and _onexit() export declaration regression.
+
+ * msvcrt-xref/msvcrt.def.in (atexit, _onexit): These must be exported
+ as DATA; declare them accordingly.
+
+2016-02-18 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Refactor to make <parts/time.h> and <parts/wchar.h> redundant.
+
+ * include/string.h: Tidy layout.
+ (__STRING_H_SOURCED__): New macro; define it at start; delete at end.
+ (_stricmp, _strnicmp): Include their prototypes, selectively from...
+ * include/strings.h [__STRING_H_SOURCED__]: ...here, reproduce them...
+ * include/parts/strings.h: ...from here; file is obsolete; delete it.
+
+ * include/string.h (_wcscmpi): Define alias.
+ (wcscat, wcschr, wcscmp, wcscoll, wcscpy, wcscspn, wcslen, wcsncat)
+ (wcsncmp, wcsncpy, wcspbrk, wcsrchr, wcsspn, wcsstr, wcstok, wcsxfrm)
+ (_wcsdup, _wcsicmp, _wcsicoll, _wcslwr, _wcsnicmp, _wcsnset, _wcsrev)
+ (_wcsset, _wcsupr, _wcsncoll, _wcsnicoll, _wcserror, __wcserror)
+ (wcscmpi, wcscmpi, wcsdup, wcsicmp, wcsicoll, wcslwr, wcsnicmp)
+ (wcsnset, wcsrev, wcsset, wcsupr): Selectively include prototypes...
+ * include/wchar.h [__STRING_H_SOURCED__]: ...from here; reproduce...
+ * include/parts/wchar.h: ...from here; file is obsolete; delete it.
+
+ * include/strings.h (_STRINGS_H): Do not define it, when...
+ [__STRING_H_SOURCED__]: ...selectively included by <string.h>.
+ * include/wchar.h (_WCHAR_H) [__STRING_H_SOURCED__]: Likewise.
+
+2016-02-16 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Refactor to make <parts/time.h> redundant.
+
+ * include/sys/types.h (time_t, __time32_t, __time32_t)
+ [__need_time_t && !__have_typedef_time_t]: Reproduce definitions...
+ * include/parts/time.h: ...from here; preserve selective exposure.
+
+ * include/time.h (time_t, __time32_t, __time32_t): Get them...
+ * include/sys/types.h: ...from here, by selective inclusion.
+
+ * include/time.h (struct timespec, struct __mingw_extended_timespec)
+ [__need_struct_timespec && !__struct_timespec_defined]: Reproduce...
+ * include/parts/time.h: ...from here; preserve selective exposure.
+
+ * include/parts/time.h: Delete file; it is no longer required.
+
+2016-02-16 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Declare the nanosleep() function where POSIX expects it.
+
+ * include/time.h (__mingw_sleep): Declare function prototype.
+ (nanosleep): Declare prototype, and provide in-line implementation;
+ this is a reproduction of the original implementation, relocated...
+ * include/unistd.h (nanosleep): ...from here; remove it; hence...
+ (struct timespec): ...this need not be declared here, and there is
+ no need to include <parts/time.h>; remove reference.
+
+2016-02-15 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Refactor <time.h> vs. <wchar.h> to avoid duplication.
+
+ * include/wchar.h (__WCHAR_H_SOURCED__): New macro; define it...
+ [_WCHAR_H]: ...at start of processing in this scope; delete at end.
+ (struct tm): Delete definition; delegate it, together with each of...
+ (_wctime, _wasctime, _wstrdate, _wstrtime, _wctime64, _wctime32)
+ (wcsftime): ...these function prototypes; delete them, but note in
+ comments, that they remain declared, via delegation to...
+ * include/time.h: ...this; include it selectively, subject to...
+ [defined __WCHAR_H_SOURCED__](__need_wchar_decls): ...this; define it.
+ [defined __WCHAR_H_SOURCED__](_TIME_H): Suppress its definition.
+ [_TIME_H]: Process all definitions and declarations; otherwise...
+ [__need_wchar_decls]: ...process only <wchar.h> shared content, but...
+ [_TIME_H && _WCHAR_H]: ...not on second, or later, time of processing.
+ (_WTIME_DEFINED): Obsolete macro; delete all references.
+
+2016-02-11 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Implement support for POSIX "%n$*m$" printf() format control.
+
+ * mingwex/stdio/pformat.c (NL_ARGMAX): New macro; nominally, it should
+ be defined in <limits.h>, but MinGW may not do so; provide a fallback.
+ (__pformat_inline__): New macro; define, and use it where appropriate.
+ (PFORMAT_CONVERSION_TYPE, PFORMAT_LENGTH_MODIFIER)
+ (PFORMAT_TYPE_DOUBLE, PFORMAT_TYPE_INTEGER, PFORMAT_TYPE_POINTER)
+ (PFORMAT_LENGTH_DEFAULT): New enumerated values; define them.
+ (PFORMAT_ARGMAP_ENTRIES): New enumerated value tally; use it in...
+ (__pformat_argmap_t): ...this new union data type; define it.
+ (__pformat_indexed_argc, __pformat_sizeof_argument, __pformat_argmap)
+ (__pformat_imul10plus, __pformat_arg_index, __pformat_read_arg_index)
+ (__pformat_read_arg_index_after, __pformat_look_ahead_beyond_flags)
+ (__pformat_look_ahead, __pformat_ignore_flags, __pformat_is_ldouble)
+ (__pformat_is_conversion_type, __pformat_is_alt_ldouble_modifier)
+ (__pformat_length_modifier, __pformat_check_length_modifier): New
+ locally defined static and/or inline functions; implement, and...
+ (__pformat): ...use them.
+
+2016-02-11 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Add prototypes for Microsoft's _printf_p() family of functions.
+
+ * include/stdio.h [>=__MSVCR80_DLL || >=_WIN32_WINNT_VISTA]
+ (_printf_p, _printf_p_l, _vprintf_p, _vprintf_p_l, _fprintf_p)
+ (_fprintf_p_l, _vfprintf_p, _vfprintf_p_l, _sprintf_p, _sprintf_p_l)
+ (_vsprintf_p, _vsprintf_p_l): Add function prototypes; they require
+ either a non-free MSVC runtime, or MSVCRT.DLL from Vista onward.
+ (_wprintf_p, _wprintf_p_l, _vwprintf_p, _vwprintf_p_l, _fwprintf_p)
+ (_fwprintf_p_l, _vfwprintf_p, _vfwprintf_p_l, _swprintf_p)
+ (_swprintf_p_l, _vswprintf_p, _vswprintf_p_l): Likewise; make them
+ available for selective inclusion by both <stdio.h> and <wchar.h>...
+ [_STDIO_H || __WCHAR_H_SOURCED__]: ...when either of these defined.
+
+2016-02-09 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Adapt msvcrt-xref to become msvcrt.def.in provider.
+
+ * Makefile.in (msvcrt_version_script) [__MSVCRT_VERSION__]: Adjust
+ filter value assignment; scale it upwards, by a factor of 0x10000.
+ (%.def.in) [vpath]: Make it refer to msvcrt-xref directory.
+ (%.def) [msvcr*]: Do not preserve comments; define...
+ (__DLLNAME__): ...this preprocessor symbol.
+
+ * msvcrt.def.in: Content is obsolete; delete file and replace with...
+ * msvcrt-xref/msvcrt.def.in: ...this updated alternative.
+ (__MINGW_DLSYM): New preprocessor macro; define it conditionally...
+ [__MSVCRT_VERSION__ != 0]: ...to emit in-scope symbols it declares...
+ [__MSVCRT_VERSION__ == 0]: ...to hide symbols it declares, followed by
+ redefinition of __MSVCRT_VERSION__ itself, to a value of 0x10000.
+
+2016-02-09 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Import msvcrt-xref documentation resources.
+
+ * msvcrt-xref: New directory.
+ * msvcrt-xref/ChangeLog msvcrt-xref/COPYING: New files.
+ * msvcrt-xref/msvcrt-xref.ms msvcrt-xref/fdl-1.3.ms: New files.
+ * msvcrt-xref/configure.ac msvcrt-xref/Makefile.in: New files.
+ * msvcrt-xref/README.in msvcrt-xref/msvcrt.def.in: New files.
+
+2016-01-29 Keith Marshall <keithmarshall@users.sourceforge.net>
+
+ Refactor <stdio.h> vs. <wchar.h> to avoid duplication.
+
+ * include/wchar.h: Some minor layout adjustments.
+ (__WCHAR_H_SOURCED__): New macro; define it temporarily, only while
+ within the scope of reading <wchar.h>; undefine it at end of file.
+ (struct tm): Do not define; it is sufficient to keep it opaque.
+ (FILE, FILENAME_MAX, NULL, __VALIST, off_t, __off64_t, size_t)
+ (ssize_t, va_list, wchar_t, wint_t): Do not require or define them
+ directly; delegate to indirect definition by including <stdio.h>.
+ (fgetwc, fputwc, fgetws, fputws, fwprintf, fwscanf, getwc, getwchar)
+ (_getws, putwc, putwchar, _putws, snwprintf, _snwprintf, swprintf)
+ (swscanf, ungetwc, vfwprintf, vfwscanf, _vscwprintf, vsnwprintf)
+ (_vsnwprintf, vswprintf, vwprintf, vswscanf, vwscanf, _wfdopen)
+ (_wfopen, _wfreopen, _wfsopen, _wperror, _wpopen, wprintf, _wrename)
+ (_wremove, wscanf, _wtmpnam, _wtempnam): Omit prototypes; acquire them
+ indirectly, by selective inclusion from <stdio.h>; hence include it.
+
+ * include/stdio.h: Assert copyright; tidy layout.
+ (_STDIO_H_): Multiple inclusion guard macro, renamed as...
+ (_STDIO_H): ...this, but defined conditionally, subject to...
+ [__WCHAR_H_SOURCED__]: ...selectively define and declare only those
+ entities which are required by <wchar.h>; do not define...
+ [__WCHAR_H_SOURCED__] (_STDIO_H): ...this; define it only if...
+ [!__WCHAR_H_SOURCED__]: ...this; define and declare ALL entities which
+ are normally specified within <stdio.h>, INCLUDING those specifically
+ itemised above, as selectively required by <wchar.h>.
+
+ * pseudo-reloc.c: Some minor layout adjustments.
+ (WIN32_LEAN_AND_MEAN): Define it; we don't need the windows baggage.
+ [typedef ptrdiff_t]: Do not assume this is gratuitously defined;
+ include <stddef.h> to guarantee it.
+
2016-01-29 Keith Marshall <keithmarshall@users.sourceforge.net>
Enable selective definition of POSIX system types.
* include/io.h (lseek64): Use '__off64_t', instead of 'off64_t', as
return type, and type of offset argument, in both prototype and inline
implementation; note that this addresses the issue of pollution in the
- user namespace, while avoiding the issue of MinGW-Bug [#].
+ user namespace, while avoiding the issue of MinGW-Bug [#2024].
* include/stdio.h (fseeko64, __mingw_fseeko64): Use '__off64_t'
instead of 'off64_t', as offset argument type in function prototypes.
* jamfile: Delete it; it hasn't been updated in ages, is likely no
longer relevant, and I have no desire to maintain it.
+2012-08-02 Earnie Boyd <earnie@users.sourceforge.net>
+
+ Add another more rigorous __STRICT_ANSI__ filter.
+
+ * include/limits.h [__STRICT_ANSI__] (PATH_MAX): Suppress definition.
+ * include/sys/param.h [PATH_MAX defined] (MAXPATHLEN): Alias it.
+ [PATH_MAX not defined] (MAXPATHLEN): Define it directly.
+
+2012-08-02 Ivan Maidanski <ivmai@users.sourceforge.net>
+
+ Add missing function prototypes per issue [#1305].
+
+ * include/process.h [#ifndef _WPROCESS_DEFINED]
+ (_wexecl, _wexecle, _wexeclp, _wexeclpe, _wexecv, _wexecve)
+ (_wexecvp, _wexecvpe, _wspawnl, _wspawnle, _wspawnlp, _wspawnlpe)
+ (_wspawnv, _wspawnve, _wspawnvp, _wspawnvpe): Declare them.
+
+2012-08-02 Earnie Boyd <earnie@users.sourceforge.net>
+
+ Add function prototype declarations per issue [#1293].
+
+ * include/stdio.h (_lock_file, _unlock_file): Declare them.
+
+2012-08-02 Earnie Boyd <earnie@users.sourceforge.net>
+
+ Apply some more rigorous __STRICT_ANSI__ filtering.
+
+ * include/stdio.h (_getws, _putws, _wfdopen, _wfopen)
+ (_wfreopen, _wfsopen, _wtmpnam, _wtempnam, _wrename, _wremove)
+ (_wperror, _wpopen): Do not declare these functions unless...
+ [#ifndef __STRICT_ANSI__]: ...this is satisfied.
+
+2012-08-02 Earnie Boyd <earnie@users.sourceforge.net>
+
+ Add string to 64-bit integer conversion function prototypes.
+
+ * include/stdlib.h (_strtoi64, _strtoi64_l, _strtoui64, _strtoui64_l)
+ (_wcstoi64, _wcstoi64_l, _wcstoui64, _wcstoui64_l): Declare them.
+ * include/wchar.h (_wcstoi64, _wcstoi64_l, _wcstoui64, _wcstoui64_l):
+ Likewise; these are duplicates of the <stdlib.h> declarations.
+
+2012-08-01 Earnie Boyd <earnie@users.sourceforge.net>
+
+ Update for _WIN64 exception handler readiness.
+
+ * include/excpt.h [_WIN64] (__try1, __except1): Add alternative inline
+ assembly code implementation, based on X86-64 architecture.
+
+2012-07-30 Earnie Boyd <earnie@users.sourceforge.net>
+
+ Correct missing inclusion of <_mingw.h>.
+
+ * include/stdint.h: Add omitted #include; all mingwrt headers are
+ expected to include this; it is required to define __int64.
+
+2011-11-30 Ozkan Sezer <sezero@users.sourceforge.net>
+
+ Correct prototypes for _wfindfirst()/_wfindnext() function family.
+
+ * include/io.h (_wfindfirst, _wfindfirst32, _wfindfirsti64)
+ (_wfindfirst32i64, _wfindfirst64i32): Return type changed to intptr_t.
+ (_wfindnext, _wfindnext32, _wfindnexti64, _wfindnext32i64)
+ (_wfindnext64i32, _wfindnext64): Type of parameter #1 must match.
+
+2011-11-30 Earnie Boyd <earnie@users.sourceforge.net>
+
+ Avoid potential GCC "missing function prototype" warnings.
+
+ * include/stdio.h (getc, putc, getchar, putchar, fopen64)
+ (ftello64): Provide a function prototype declaration for each of
+ these, prior to the corresponding inline implementation.
+
2011-08-23 Chris Sutcliffe <ir0nh34d@users.sourceforge.net>
* include/_mingw.h: Increment version to 3.20.
* include/wchar.h (WCHAR_MAX): Define as 0xffff, so preprocessor
#if (WCHAR_MAX <= WCHAR_MIN) is false.
- * include/stdint.h (WCHAR_MAX): Likwise.
+ * include/stdint.h (WCHAR_MAX): Likewise.
(WINT_MAX): Likewise.
2005-05-03 Danny Smith <dannysmith@users.sourceforge.net>
2005-02-07 Danny Smith <dannysmith@users.sourceforge.net>
* include/sys/stat.h (struct stat): Guard with _NO_OLDNAMES.
- * include/wchar.h (struct stat): Likwwise.
+ * include/wchar.h (struct stat): Likewise.
Bug reported to Debian by Anand Kumria <wildfire@progsoc.org>
* include/sys/stat.h: Remove empty __STRICT_ANSI__ guard.
* include/sys/stat.h (__stat64): Add struct definition.
(_fstat64): Add prototype for __MSVCRT_VERSION__ >= 0x0601.
(_stat64): Likewise.
- (_wstat64): Likwise.
+ (_wstat64): Likewise.
* include/sys/types.h (__time64_t): Add typedef.
* include/wchar.h (__wfinddata64_t): Add structure definition.
(__stat64): Likewise.
(_wfindfirst64): Likewise.
(_wfindnext64): Likewise.
(_wutime64): Likewise.
- (_wstat64): Likwise.
+ (_wstat64): Likewise.
* include/malloc.h (_aligned_free): Add prototype for
__MSVCRT_VERSION__ >= 0x0700.
(_aligned_malloc): Likewise.
2004-01-16 Danny Smith <dannysmith@users.sourceforge.net>
- * include/stdint.h Fix __STDC_CONSTANT_MACROS for 8 and 16 bit
+ * include/stdint.h [__STDC_CONSTANT_MACROS]: Fix for 8 and 16 bit
types. (Thanks to John Maddock for report.)
2004-01-14 Greg Chicares <chicares@users.sourceforge.net>
2002-05-21 Danny Smith <dannysmith@users.sourceforge.net>
- * include/stdint.h: Include stddef.h to get
- wchar_t and wint_t.
+ * include/stdint.h: Include <stddef.h> to get wchar_t and wint_t.
(WINT_MAX): Define to ((wint_t)-1).
2002-05-21 Danny Smith <dannysmith@users.sourceforge.net>