OSDN Git Service

Work around GCC bug; force C++11 to support std::wcstof().
[mingw/mingw-org-wsl.git] / mingwrt / ChangeLog
index d827abc..03e10a5 100644 (file)
@@ -1,3 +1,220 @@
+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].