Jim Meyering [Wed, 12 Oct 2016 19:30:07 +0000 (12:30 -0700)]
test-stdint: use _GL_VERIFY rather than "verify" for some tests
* tests/test-stdint.c (verify_width): Implement with _GL_VERIFY
and an abbreviated diagnostic rather than verify with the full one,
because the full-length strings would evoke warnings from gcc with
-Woverlength-strings.
Paul Eggert [Thu, 13 Oct 2016 18:16:40 +0000 (11:16 -0700)]
stdint: port SIZE_MAX to glibc s390
Problem reported by Eric Blake in:
http://lists.gnu.org/archive/html/bug-gnulib/2016-10/msg00031.html
* doc/posix-headers/stdint.texi (stdint.h): Document the fix.
* m4/stdint.m4 (gl_STDINT_H): Check that SIZE_MAX has the
correct type, if possible.
Jim Meyering [Wed, 5 Oct 2016 17:43:09 +0000 (10:43 -0700)]
long-options: avoid new GCC 7 warning from -Wimplicit-fallthrough
* lib/long-options.c (parse_long_options): Add a break statement
to avoid this new warning/failure:
$ CFLAGS='-O -Werror=implicit-fallthrough' ./gnulib-tool \
--create-testdir --dir=/t/x --with-tests --test long-options
../../gllib/long-options.c: In function 'parse_long_options':
../../gllib/long-options.c:66:12: error: this statement may \
fall through [-Werror=implicit-fallthrough]
(*usage_func) (EXIT_SUCCESS);
~^~~~~~~~~~~~~~~~~~~~~~~~~~~
Jim Meyering [Wed, 5 Oct 2016 16:13:55 +0000 (09:13 -0700)]
utimecmp: avoid new GCC 7 warning from -Wbool-operation
Testing this module would fail when using GCC 7 like this:
$ CFLAGS='-O -Werror=bool-operation' ./gnulib-tool --create-testdir \
--dir=/tmp/x --with-tests --test utimecmp
../../gllib/utimecmp.c: In function ‘utimecmp’:
../../gllib/utimecmp.c:291:36: error: ‘~’ on a boolean expression \
[-Werror=bool-operation]
time_t s = src_s & ~ (res == 2 * BILLION);
^
../../gllib/utimecmp.c:370:16: error: ‘~’ on a boolean expression \
[-Werror=bool-operation]
src_s &= ~ (res == 2 * BILLION);
^
* lib/utimecmp.c (utimecmp): Do not apply "~" to a boolean.
Instead, make it explicit that we intend to apply it to 0 or 1.
Eli Zaretskii [Mon, 10 Oct 2016 15:05:36 +0000 (08:05 -0700)]
wchar, wctype-h: fix for MinGW 3.22.2
* lib/wchar.in.h [__MINGW32__]: Add one more condition for
special invocation, to fix issues with MinGW 3.22.2 wchar.h
when included from <string.h>.
* lib/wctype.in.h [__MINGW32__]: Add special invocation
convention for MinGW 3.22.2, to solve issues with their
wctype.h when included from <ctype.h>.
Jim Meyering [Wed, 5 Oct 2016 17:43:09 +0000 (10:43 -0700)]
long-options: avoid new GCC 7 warning from -Wimplicit-fallthrough
* lib/long-options.c (parse_long_options): Add a break statement
to avoid this new warning/failure:
$ CFLAGS='-O -Werror=implicit-fallthrough' ./gnulib-tool \
--create-testdir --dir=/t/x --with-tests --test long-options
../../gllib/long-options.c: In function ‘parse_long_options’:
../../gllib/long-options.c:66:12: error: this statement may \
fall through [-Werror=implicit-fallthrough]
(*usage_func) (EXIT_SUCCESS);
~^~~~~~~~~~~~~~~~~~~~~~~~~~~
Jim Meyering [Wed, 5 Oct 2016 16:13:55 +0000 (09:13 -0700)]
utimecmp: avoid new GCC 7 warning from -Wbool-operation
Testing this module would fail when using GCC 7 like this:
$ CFLAGS='-O -Werror=bool-operation' ./gnulib-tool --create-testdir \
--dir=/tmp/x --with-tests --test utimecmp
../../gllib/utimecmp.c: In function ‘utimecmp’:
../../gllib/utimecmp.c:291:36: error: ‘~’ on a boolean expression \
[-Werror=bool-operation]
time_t s = src_s & ~ (res == 2 * BILLION);
^
../../gllib/utimecmp.c:370:16: error: ‘~’ on a boolean expression \
[-Werror=bool-operation]
src_s &= ~ (res == 2 * BILLION);
^
* lib/utimecmp.c (utimecmp): Do not apply "~" to a boolean.
Instead, make it explicit that we intend to apply it to 0 or 1.
quotearg: minimize shell quoting using double quotes
I.E. 'it'\''s awkward like this'; "it's better like this"
* lib/quotearg.c (quotearg_buffer_restyled): If an ASCII single
quote in encountered then use double quotes (c style quoting)
when possible, as it simplifies the quoting.
* tests/test-quotearg-simple.c: Add test cases.
* tests/test-quotearg.h (use_quotearg_buffer): Adjust to account
for the fact we now may write beyond the returned length.
Jim Meyering [Sun, 2 Oct 2016 19:09:13 +0000 (12:09 -0700)]
vasnprintf.c: avoid spurious warning from GCC 7
The presence of cpp directives renders this "FALLTHROUGH" comment
ineffective, so does not suppress the -Wimplicit-fallthrough warning
from GCC 7 built from git on 2016-10-02.
* lib/vasnprintf.c (VASNPRINTF): Move comment down past two cpp
directives, so that it takes effect once again. This is clearly
not a proper change, and I will revert it once this bug is fixed:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77817
Jim Meyering [Sun, 2 Oct 2016 02:53:52 +0000 (19:53 -0700)]
getprogname: correct the test for a __progname variable
* m4/getprogname.m4 (gl_FUNC_GETPROGNAME): Use AC_CACHE_CHECK
and AC_LINK_IFELSE to check for a global __progname. If found,
define HAVE_VAR___PROGNAME.
* lib/getprogname.c (getprogname): Reflect the new name of the
preprocessor symbol: s/HAVE_DECL___PROGNAME/HAVE_VAR___PROGNAME/
Assaf Gordon reported that the erroneous prior check caused
link failure on AIX 7 in
https://lists.gnu.org/archive/html/grep-devel/2016-10/msg00001.html
Jim Meyering [Thu, 29 Sep 2016 03:57:24 +0000 (20:57 -0700)]
getprogname: avoid __progname vs program_invocation_short_name pitfall
I.e., don't let the OpenBSD 5.1 fix induce failure when using newer
glibc. Would have caused failure with Fedora 25's glibc-2.24-3, but
not with Fedora 24's glibc-2.23.1-10.
* lib/getprogname.c (__progname): Move this declaration down...
(getprogname): ... into the #elif block where used, and make it
explicitly "extern".
Jim Meyering [Wed, 28 Sep 2016 18:09:03 +0000 (11:09 -0700)]
getprogname: port to OpenBSD 5.1
* lib/getprogname.c (__progname) [HAVE_DECL___PROGNAME]: Declare.
(getprogname) [HAVE_DECL___PROGNAME]: Return __progname or "?".
* modules/getprogname (configure.ac): Move most of this code...
* m4/getprogname.m4 (gl_FUNC_GETPROGNAME): ... to this function,
increment serial number, and add a test for __progname.
https://bugs.gnu.org/24562
Reported by Nelson H. F. Beebe.
Paul Eggert [Sun, 25 Sep 2016 04:10:12 +0000 (21:10 -0700)]
sched: port to GCC 6.2.1 on macOS Sierra
Problem reported by Denis Davydov in:
http://lists.gnu.org/archive/html/bug-gnulib/2016-09/msg00056.html
* lib/sched.in.h [HAVE_SYS_CDEFS_H]:
Include <sys/cdefs.h> before <sched.h>.
* m4/nproc.m4 (gl_PREREQ_NPROC): Include errno.h before sched.h,
so that we needn’t worry about the sched.h include bug here.
* m4/sched_h.m4 (gl_SCHED_H): Check for sys/cdefs.h,
and include it before <sched.h> if it exists, when
checking for <sched.h>.
Paul Eggert [Thu, 22 Sep 2016 18:44:39 +0000 (11:44 -0700)]
stdint: also set GL_GENERATE_LIMITS_H
Problem reported by Jim Meyering in:
http://lists.gnu.org/archive/html/bug-gnulib/2016-09/msg00052.html
* m4/stdint.m4 (gl_STDINT_H): Also redo the AM_CONDITIONAL.
Jim Meyering [Thu, 22 Sep 2016 04:15:59 +0000 (21:15 -0700)]
getprogname: port to AIX
* lib/getprogname.c (getprogname) [_AIX]: Use getpid, getprocs64
and strdup to obtain a short program name string. Using code from
Bruno Haible and an idea from Bastien ROUCARIÈS, in
https://lists.gnu.org/archive/html/bug-gnulib/2010-12/msg00249.html
Assaf Gordon reported that this new file would fail to compile on
AIX-7.1 32bit.
Paul Eggert [Thu, 15 Sep 2016 18:34:52 +0000 (11:34 -0700)]
stdint: support new _WIDTH macros
* doc/posix-headers/stdint.texi: Document this.
* lib/stdint.in.h: Add support for INTMAX_WIDTH. etc.
* m4/stdint.m4 (gl_STDINT_H): Require gl_LIMITS_H. Check for
support for INTMAX_WIDTH, etc. as well as for support for just C99.
* modules/stdint (Depends-on): Add limits-h.
(Makefile.am): Substitute HAVE_C99_STDINT_H.
* modules/stdint-tests (Depends-on): Add extensions, so that
INTMAX_MAX etc. are defined.
* tests/test-stdint.c: Verify the new macros.
Paul Eggert [Fri, 16 Sep 2016 07:37:14 +0000 (00:37 -0700)]
stdio: don't redefine __USE_MINGW_ANSI_STDIO
* m4/stdio_h.m4 (gl_STDIO_H): Don't define __USE_MINGW_ANSI_STDIO
if it is already defined. Apparently GNU Emacs relies on this. See:
http://lists.gnu.org/archive/html/emacs-devel/2016-09/msg00416.html
Eric Blake [Thu, 15 Sep 2016 00:36:14 +0000 (19:36 -0500)]
sys_types: avoid glibc 2.25 warnings about major()
glibc 2.25 is deprecating the namespace pollution of <sys/types.h>
injecting major(), minor(), and makedev() into the compilation
environment, with a warning that insists that users include
<sys/sysmacros.h> instead. However, because the expansion of
AC_HEADER_MAJOR didn't bother checking sys/sysmacros.h until
after probing whether sys/types.h pollutes the namespace, it was
not defining MAJOR_IN_SYSMACROS, with the result that code
compiled with -Werror chokes on the deprecation warnings because
it was not including sysmacros.h.
Backport the autoconf fix (see autoconf commit e17a30e98), so that
gnulib projects avoid the warnings even when using older autoconf.
Eric Blake [Thu, 15 Sep 2016 00:21:42 +0000 (19:21 -0500)]
mountlist: include sysmacros.h for glibc
On Fedora rawhide (glibc 2.25), './gnulib-tool --test mountlist'
reports:
../../gllib/mountlist.c: In function 'read_file_system_list':
../../gllib/mountlist.c:534:13: warning: '__makedev_from_sys_types' is deprecated:
In the GNU C Library, `makedev' is defined by <sys/sysmacros.h>.
For historical compatibility, it is currently defined by
<sys/types.h> as well, but we plan to remove this soon.
To use `makedev', include <sys/sysmacros.h> directly.
If you did not intend to use a system-defined macro `makedev',
you should #undef it after including <sys/types.h>.
[-Wdeprecated-declarations]
me->me_dev = makedev (devmaj, devmin);
^~
In file included from /usr/include/features.h:397:0,
from /usr/include/sys/types.h:25,
from ./sys/types.h:28,
from ../../gllib/mountlist.h:23,
from ../../gllib/mountlist.c:20:
/usr/include/sys/sysmacros.h:89:1: note: declared here
__SYSMACROS_DEFINE_MAKEDEV (__SYSMACROS_FST_IMPL_TEMPL)
^
Fix it by including the right headers. We also need a fix to
autoconf's AC_HEADER_MAJOR, but that's a separate patch.
* m4/mountlist.m4 (gl_PREREQ_MOUTLIST_EXTRA): Include
AC_HEADER_MAJOR.
* lib/mountlist.c (includes): Use correct headers.
Paul Eggert [Wed, 14 Sep 2016 01:34:20 +0000 (18:34 -0700)]
extensions: port to recent ISO C TRs
* m4/extensions.m4 (AC_USE_SYSTEM_EXTENSIONS):
Sync from Autoconf master, to add support for recent ISO C TRs.
* m4/stdio_h.m4 (gl_STDIO_H): Define __USE_MINGW_ANSI_STDIO here,
since AC_USE_SYSTEM_EXTENSIONS no longer does that as
the MinGW option is not an extension.
Paul Eggert [Sun, 11 Sep 2016 23:13:11 +0000 (16:13 -0700)]
dfa: port to Solaris 9
Problems reported by Tom G. Christensen in:
http://lists.gnu.org/archive/html/bug-gnulib/2016-09/msg00031.html
* modules/dfa (Depends-on): Add isblank.
* modules/dfa-tests (dfa_match_aux_LDADD):
Rename from test_stat_LDADD, to fix typo.
* tests/dfa-match.sh: Don't require 'timeout'; use it if available.
Jim Meyering [Tue, 16 Aug 2016 22:00:43 +0000 (15:00 -0700)]
dfa: new module, importing grep's DFA matcher
Since grep's DFA matcher is now being used by two gnulib-enabled
projects, grep and sed, it makes sense to version-control its
sources and unit tests in one place: here.
* modules/dfa: New module.
* modules/dfa-tests: New file.
* lib/dfa.c: New file, from grep.
* lib/dfa.h: Likewise.
* lib/localeinfo.c: Likewise.
* lib/localeinfo.h: Likewise.
* tests/dfa-match-aux.c: Likewise.
* tests/dfa-invalid-char-class.sh: Likewise.
* tests/dfa-match.sh: Likewise, with minor changes.
* MODULES.html.sh (Misc): Add "dfa" to this list.
Jim Meyering [Fri, 9 Sep 2016 22:46:53 +0000 (15:46 -0700)]
getprogname-tests: don't depend on assert-h
* modules/getprogname-tests (Depends-on): Remove assert-h.
It was not needed, and in fact would cause build failure for
coreutils on some systems. Reported by Assaf Gordon in https:
//lists.gnu.org/archive/html/coreutils/2016-09/msg00016.html
parse-datetime: restrict debug output to input string
* lib/parse-datetime.y (parse_datetime2): If we parse
all of the input but determine it's invalid, ensure
we don't output the now invalid input pointer.
This issue was seen with `date -d 'now +1'`.
Jim Meyering [Wed, 7 Sep 2016 14:57:47 +0000 (07:57 -0700)]
getprogname: port to systems with __argv (mingw, msvc)
* lib/getprogname.c (getprogname): Include "dirname.h" and use
last_component: more general than open coding it with hard-coded "/".
* lib/getprogname.h (getprogname): Prefer "char const *" consistently.
* modules/getprogname (Depends-on): Add dirname-lgpl.
(configure.ac): Check for __argv in <stdlib.h>.
* modules/getprogname-tests: New file.
* tests/test-getprogname.c: New file.
Suggested by Gisle Vanem in
https://lists.gnu.org/archive/html/bug-gnulib/2016-09/msg00014.html
Paul Eggert [Wed, 7 Sep 2016 09:01:42 +0000 (02:01 -0700)]
flexmember: port better to GCC + valgrind
With a char[] flexible array member in a struct with nontrivial
alignment, GCC-generated code can access past the end of the
array, because GCC assumes there are padding bytes to get the
struct aligned. So the common idiom of malloc (offsetof (struct
s, m), n) does not properly allocate an n-byte trailing member, as
malloc’s argument should be the next multiple of alignof (struct s).
See GCC Bug#66661: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66661
Although C11 apparently permits this GCC optimization (i.e., there
was a bug in Gnulib not in GCC), possibly this is a defect in C11.
See the thread containing:
https://gcc.gnu.org/ml/gcc-patches/2016-09/msg00317.html
* lib/flexmember.h: New file.
* lib/fnmatch.c, lib/fts.c, lib/glob.c, lib/idcache.c:
* lib/localename.c, lib/time_rz.c:
Include flexmember.h.
* lib/fnmatch_loop.c (struct patternlist):
* lib/localename.c (struct hash_node):
Use FLEXIBLE_ARRAY_MEMBER.
* lib/fnmatch_loop.c (EXT):
* lib/fts.c (fts_alloc):
* lib/glob.c (glob_in_dir):
* lib/idcache.c (getuser, getuidbyname, getgroup, getgidbyname):
* lib/localename.c (gl_lock_define_initialized):
* lib/time_rz.c (tzalloc):
Use FLEXSIZEOF instead of offsetof.
* m4/flexmember.m4 (AC_C_FLEXIBLE_ARRAY_MEMBER):
Check that the size of the struct can be taken.
* modules/flexmember (Files): Add lib/flexmember.h.
* modules/fnmatch, modules/glob, modules/localename (Depends-on):
Add flexmember.
Paul Eggert [Wed, 7 Sep 2016 06:56:26 +0000 (23:56 -0700)]
getprogname: port to Solaris 10
* lib/getprogname.c: Include stdlib.h, for getexecname decl.
(getprogname) [HAVE_GETEXECNAME]: Use that, for Solaris 10.
* m4/getprogname.m4 (gl_FUNC_GETPROGNAME): Check for getexecname.
Paul Eggert [Tue, 6 Sep 2016 21:26:05 +0000 (14:26 -0700)]
stdalign: correct mistake in alignof doc
Problem reported by Joseph Myers in:
https://gcc.gnu.org/ml/gcc-patches/2016-09/msg00340.html
* doc/posix-headers/stdalign.texi: Do not imply that C11 prohibits
alignof(S) where S is a structure containing a flexible array
member. The Gnulib substitute does not support this, but C11 does.
Jim Meyering [Tue, 6 Sep 2016 04:40:57 +0000 (21:40 -0700)]
getprogname.h: declare with _GL_ATTRIBUTE_PURE, when required
* lib/getprogname.h (getprogname) [HAVE_DECL_PROGRAM_INVOCATION_NAME]:
Declare with _GL_ATTRIBUTE_PURE, to avoid warning from gcc's
-Wsuggest-attribute=pure
Pino Toscano [Thu, 18 Aug 2016 13:18:25 +0000 (15:18 +0200)]
main.mk: remove sc_program_name
There is no more need to use set_program_name in tools (getprogname
is enough for most of the cases).
* cfg.mk (local-checks-to-skip): Remove sc_program_name.
* top/maint.mk (sc_program_name): Remove.
Pino Toscano [Thu, 18 Aug 2016 13:18:23 +0000 (15:18 +0200)]
Port modules to use getprogname explicitly
... instead of requiring progname to be used (or program_name to be
provided).
* lib/argmatch.c: Do not include progname.h.
[TEST] (program_name): Do not define.
[TEST] (main): Call getprogname instead of using program_name.
* lib/c-stack.c: Do not include progname.h.
(program_name): Do not define.
(die): Call getprogname instead of using program_name.
* lib/chdir-long.c: Do not include progname.h.
[TEST_CHDIR] (main): Do not set program_name.
* lib/error.c [!_LIBC]: Include progname.h.
[!_LIBC] (program_name): Define using getprogname.
* lib/euidaccess.c: Do not include progname.h.
[TEST] (main): Do not set program_name.
* lib/git-merge-changelog.c: Include getprogname.h instead of
progname.h.
(usage): Call getprogname instead of using program_name.
(main): Likewise. Stop calling set_program_name.
* lib/group-member.c: Do not include progname.h.
[TEST] (main): Do not set program_name.
* modules/argmatch (Depends-on): Add getprogname.
* modules/c-stack (Depends-on): Likewise.
* modules/error (Depends-on): Likewise.
* modules/git-merge-changelog (Depends-on): Likewise.
Also remove progname.
Pino Toscano [Thu, 18 Aug 2016 13:18:22 +0000 (15:18 +0200)]
getprogname: new module
This provides a LGPL module for getting the name of the current
program, using the same API found on *BSD systems.
* lib/getprogname.c, lib/getprogname.h, m4/getprogname.m4:
* modules/getprogname: New files.
* MODULES.html.sh (Misc): Add getprogname.
* NEWS: Document the deprecation of the 'progname' module.
Jim Meyering [Fri, 2 Sep 2016 16:16:16 +0000 (09:16 -0700)]
manywarnings: add -fno-common
* m4/manywarnings.m4 (gl_MANYWARN_ALL_GCC): Add -fno-common
to the list. Quoting the manual, "Compiling with -fno-common is
useful on targets for which it provides better performance, or if
you wish to verify that the program will work on other systems that
always treat uninitialized variable declarations this way [putting
it in the data section]." If diffutils had been using this sooner,
it would have prevented this duplicate declaration issue:
http://git.sv.gnu.org/cgit/diffutils.git/commit/?id=v3.4-10-gc2dc91f
Paul Eggert [Tue, 30 Aug 2016 19:29:21 +0000 (12:29 -0700)]
intprops: tune INT_NEGATE_OVERFLOW for GCC 5 and 6
* lib/intprops.h (INT_NEGATE_OVERFLOW): Tune for platforms like
GCC 5 and 6 that have __builtin_sub_overflow but not
__builtin_sub_overflow_p. With the recent changes, these
platforms are a tiny bit faster with the INT_NEGATE_RANGE_OVERFLOW
implementation than with INT_SUBTRACT_OVERFLOW implementation,
since the former needs just one runtime comparison whereas the
latter needs two.
Paul Eggert [Tue, 30 Aug 2016 15:23:44 +0000 (08:23 -0700)]
strverscmp: sync with glibc
Although this doesn't exactly synchronize with glibc
byte-for-byte, it makes the code behave the same as glibc.
* lib/strverscmp.c (S_I, S_F, S_Z): Now masks, not powers of 2.
(ISDIGIT): Remove, as glibc is sticking with isdigit, and the
difference shouldn't matter in practical use. All uses changed
back to isdigit.
(__strverscmp, strverscmp): Use new glibc method for weak aliases.
(next_state): Now unsigned char array; redo elements.
(result_type): Now signed char array; redo elements.
(__strverscmp): Fix glibc bug 9913 by using new states.
* tests/test-strverscmp.c (main): Test glibc bug 9913.
Paul Eggert [Mon, 29 Aug 2016 19:03:51 +0000 (12:03 -0700)]
intprops.h: port recent changes to GCC 6.2.0
* lib/intprops.h (__has_builtin): Move earlier.
(_GL_HAS_BUILTIN_OVERFLOW): Rename from
_GL_HAS_BUILTIN_OVERFLOW_WITH_NULL and don't worry about whether
the last argument can be null. All uses changed.
(_GL_HAS_BUILTIN_OVERFLOW_P): Also test __has_builtin.
(_GL_ADD_OVERFLOW, _GL_SUBTRACT_OVERFLOW, _GL_MULTIPLY_OVERFLOW):
Don't try to use 3rd arg null, as this doesn't work on GCC 6.2.0
and it's not clear which GCC versions it works for.
(_GL_INT_OP_WRAPV): Use _GL_HAS_BUILTIN_OVERFLOW instead of
its definiens.
Paul Eggert [Mon, 29 Aug 2016 17:08:32 +0000 (10:08 -0700)]
intprops.h: use __typeof__ with GCC 7
* lib/intprops.h (_GL_ADD_OVERFLOW, _GL_SUBTRACT_OVERFLOW)
(_GL_MULTIPLY_OVERFLOW): Use __typeof__ as in the GCC manual.
This avoids computing the expression's value (which might overflow!).
Jim Meyering [Mon, 29 Aug 2016 16:45:18 +0000 (09:45 -0700)]
intprops.h, xalloc-oversized.h: work with gcc 7
In gcc 6, __builtin_add_overflow, __builtin_sub_overflow and
__builtin_mul_overflow each accept a NULL pointer as the third
argument. However in gcc 7, that is no longer accepted.
Instead, one must use the "_p"-suffixed names, with which, the
third parameter is no longer a pointer.
* lib/intprops.h (_GL_HAS_BUILTIN_OVERFLOW_WITH_NULL): Correct
the definition: not true for gcc 7 and subsequent.
(_GL_HAS_BUILTIN_OVERFLOW_P): Define.
(_GL_ADD_OVERFLOW, _GL_SUBTRACT_OVERFLOW, _GL_MULTIPLY_OVERFLOW):
Provide new definitions for gcc 7 and subsequent.
* lib/xalloc-oversized.h (xalloc_oversized): Provide a definition
that works with gcc-7.
Paul Eggert [Thu, 25 Aug 2016 03:48:32 +0000 (20:48 -0700)]
intprops: port to OpenVMS
Problem reported by John E. Malmberg in: https://bugs.gnu.org/24300
* doc/posix-headers/limits.texi: Document the problem.
* lib/intprops.h (LLONG_MAX, LLONG_MIN) [__INT64_MAX]:
Define if not already defined.
Assaf Gordon [Mon, 15 Aug 2016 01:29:50 +0000 (21:29 -0400)]
parse-datetime: improve debug implementation
Follow-up to commit 12ad79069 ("add optional debug printing").
Improve parse-datetime's debug implementation: remove macros,
replace global debug flag variable with a function parameter,
use nstrftime for formatting.
See: https://lists.gnu.org/archive/html/bug-gnulib/2016-08/msg00021.html
* lib/parse-datetime.h: (parse_datetime_debug): Remove global extern
declaration.
(parse_datetime2): New function, accepts 'flags' parameter, supporting
debug flag. Existing interface 'parse_datetime' left unmodified.
* lib/parse-datetime.c: (parse_datetime_debug): Remove global variable.
(struct parser_control): add 'parse_datetime_debug' member variable.
(parse_datetime): Call new function 'parse_datetime2' without debug.
(parse_datetime2): Adapted from previous 'parse_datetime', initialize
pc.parse_datetime_debug variable as needed.
(to_year): Accept new flags parameter, instead of using global variable.
(debug_print_current_time,debug_print_relative_time,debug_mktime_not_ok):
use struct 'debug' variable instead of global variable.
(DEBUG,DEBUG_PRINT_CURRENT_TIME,DEBUG_PRINT_RELATIVE_TIME,
DEBUG_MKTIME_NOT_OK,PROGRESS,PROGRESS0): Remove macros. Call
correspnding functions directly instead of using macros.
* modules/parse-datetime: Add gnulib's strftime module.
Paul Eggert [Thu, 18 Aug 2016 18:56:07 +0000 (11:56 -0700)]
canonicalize-lgpl: fix errno after malloca fails
This fixes a typo I recently introduced. Suggested by Bruno Haible in:
http://lists.gnu.org/archive/html/bug-gnulib/2016-08/msg00039.html
* lib/canonicalize-lgpl.c (__realpath):
Don't assume malloca sets errno on failure.
Daniel Richard G [Wed, 17 Aug 2016 23:57:35 +0000 (16:57 -0700)]
maint: port tests to z/OS errno behavior
* tests/test-nonblocking-reader.h:
* tests/test-nonblocking-writer.h:
Accommodate z/OS errno code preferences. (I believe this should
still be within spec; IBM is good at following the letter if not
the spirit of such things.)
Daniel Richard G [Wed, 17 Aug 2016 23:09:38 +0000 (16:09 -0700)]
fclose, strstr-simple, wchar: port to z/OS
* m4/fclose.m4, m4/strstr.m4, m4/wchar_h.m4:
Changes to the Autoconf M4 code to support z/OS. Note that
fclose() is broken in a different way on z/OS than it is on other
systems, thus the special-case in fclose.m4.
Daniel Richard G [Wed, 17 Aug 2016 23:05:02 +0000 (16:05 -0700)]
iconv_open-utf-tests, iconv-tests: port to EBCDIC
* tests/test-iconv-utf.c, tests/test-iconv.c:
Added appropriately conditional #pragmas so that the test strings
in test-iconv-utf.c are correctly interpreted in ASCII instead of
EBCDIC (i.e. 'J' == 0x4A and not 0xD1). This issue could be
addressed in a more portable way by simply rewriting all the ASCII
literal characters as octal escapes, but then you would lose the
partial readability that the strings have now. Also, iconv_open()
on z/OS does not recognize "ISO-8859-1", but "ISO8859-1" works.
Paul Eggert [Wed, 17 Aug 2016 22:33:06 +0000 (15:33 -0700)]
stdbool: don't require _Bool for C++
Problem reported by David Seifert in:
http://lists.gnu.org/archive/html/bug-gnulib/2016-06/msg00005.html
* NEWS, doc/posix-headers/stdbool.texi (stdbool.h): Document this.
* m4/stdbool.m4 (AC_CHECK_HEADER_STDBOOL): Make the check
more-forgiving for C++, in that it requires only 'bool'. Be a bit
stricter about checking that bool and _Bool are compatible in C.
Paul Eggert [Wed, 17 Aug 2016 22:01:50 +0000 (15:01 -0700)]
getdelim: remove dependency on realloc-posix
* lib/canonicalize-lgpl.c (alloc_failed)
[!FUNC_REALPATH_WORKS || defined _LIBC]: New function,
(__realpath) [!FUNC_REALPATH_WORKS || defined _LIBC]: Use it.
Use __set_errno where needed, for consistency.
* lib/getdelim.c (alloc_failed): New function.
(getdelim): Use it.
* modules/getdelim (Depends-on): Remove realloc-posix.
Assaf Gordon [Sun, 7 Aug 2016 00:08:32 +0000 (20:08 -0400)]
parse-datetime: add optional debug printing
Print parsing information, warnings, and errors to stderr.
* lib/parse-datetime.h (parse_datetimte_debug): New global variable.
* lib/parse-datetime.y:
(DEBUG_*): Macros calling debug functions if debugging is enabled.
(PROGRESS*): Same as DEBUG, for progress reporting.
(dbg_printf): Print message to stderr, with 'date' prefix.
(struct parser_control): Add 'debug_*_seen' variables.
(str_days): Converts day ordinal/number to string (e.g. 'last wed').
(debug_print_current_time, debug_print_relateive_time): Prints the
current/relative date/time value of parser_control.
(YACC parser syntax): Print parsed parts with DEBUG_* macros.
(to_year): Warn about 2-digit year parsing.
(yylex): Warn about unrecognized words.
(get_effective_timezone): Returns current timezone in minutes.
(debug_strf{time,date,datetime}): Convert 'struct tm' to string as
clearly and unambigiously as possible.
(debug_mktime_not_ok): Print detailed information about failed
date/time values.
(parse_datetime): Add DEBUG messages for failures, warnings. Add
PROGRESS messages for status messages.
* modules/parse-datetime: Add 'timegm', 'gettext-h' dependencies.
Jim Meyering [Mon, 1 Aug 2016 16:37:15 +0000 (09:37 -0700)]
tests/init.sh: exclude dash with bad "local" semantics
* tests/init.sh (gl_shell_test_script_): Add a function to
eliminate a shell like "dash" (unlike bash, zsh) that has
surprising/risky "local var='...'" semantics. Inspired by
the problem and discussion in https://bugs.gnu.org/24116#11.
Ján Tomko [Tue, 2 Aug 2016 13:41:13 +0000 (15:41 +0200)]
maint.mk: expand the prohibit_doubled_word regex
This check has a static list of words that are checked for
repetitions. Expand it before running the perl script to
avoid using expensive captures. This decreases the cost
for libvirt from 1.66s to 0.66s.
* top/maint.mk (prohibit_doubled_word_expanded_): Define.
(sc_prohibit_doubled_word): Use it.
Ján Tomko [Mon, 1 Aug 2016 17:54:47 +0000 (10:54 -0700)]
useless-if-before-free: skip non-matching lines early
* build-aux/useless-if-before-free: First match each line with the
simple/quick /\bif\b/ and reject if there is no match. This often
saves the cost of the much more involved regular expression.
For libvirt, this decreases the cost from 1.44s to 1.02s.
Ján Tomko [Sat, 30 Jul 2016 05:39:31 +0000 (22:39 -0700)]
maint.mk: speed up sc_po_check
sc_po_check would skip files based on their names, or on the
existence of files with derived names. Rewrite it to use perl
instead of shell to make the check faster.
* top/maint.mk (perl_translatable_files_list_): Define.
(sc_po_check): Use it.
Ján Tomko [Tue, 26 Jul 2016 14:28:16 +0000 (16:28 +0200)]
maint.mk: speed up require_config_h_first
Instead of spawning three processes per file,
rewrite the check in perl and run it once for all the files.
* top/maint.mk (perl_config_h_first_): Define.
(sc_require_config_h_first): Use it in place of shell code.