Paul Eggert [Mon, 30 Apr 2012 00:02:13 +0000 (17:02 -0700)]
exclude: handle wildcards with FNM_NOESCAPE and with trailing \
* lib/exclude.c (unescape_pattern): Don't worry about unescaped [;
it's not possible here. Handle the case of \ at end of pattern
without dumping core.
(add_exclude): Do not unescape the pattern if FNM_NOESCAPE is used.
Paul Eggert [Sun, 29 Apr 2012 23:00:14 +0000 (16:00 -0700)]
_Noreturn: future-proof non-GNU and non-MSVC compilers
* build-aux/snippet/_Noreturn.h (_Noreturn):
* m4/gnulib-common.m4 (gl_COMMON_BODY):
Do not define _Noreturn if __STDC_VERSION__ indicates this is
C11 or later. This is more likely to work with random future C
compilers that are neither GNUish nor MSVCish. See Vincent Lefevre in
<http://lists.gnu.org/archive/html/bug-gnulib/2012-04/msg00195.html>.
Paul Eggert [Sun, 29 Apr 2012 22:53:53 +0000 (15:53 -0700)]
exclude: handle wildcards with FNM_EXTMATCH
* lib/exclude.c (fnmatch_pattern_has_wildcards): Also treat '+(',
'+@', '!(' as wildcards, if FNM_EXTMATCH. Make it clear in a
comment that "has wildcards" really means "has or may have
wildcards". Simplify by avoiding the need to call strcspn.
* bootstrap (check_versions): Handle automake and aclocal from
Automake-NG specially. They can be specified as respectively
the "automake-ng" and "aclocal-ng" requirements.
Eric Blake [Wed, 25 Apr 2012 21:11:13 +0000 (15:11 -0600)]
bootstrap: only force latest Makefile.in.in for gettext module
Commit 45fb479c48453d was added on behalf of bison, which uses the
'gettext' module, and where bison wanted to pick up the enhancements
to Makefile.in.in as provided by gnulib (such as an install-dvi
target). This works because the 'gettext' module assumes that as
soon as upstream gettext moves to 0.19, you will also want to
update your development machine to the same version, so always
having the latest Makefile.in.in is reasonable.
But there are also projects like libvirt, that want to build out of
the box on active enterprise environments such as RHEL 5, which is
still at gettext 0.17. The 'gettext-h' module is designed for these
projects, to pick up a useful "gettext.h" with _(), but to not force
the latest and greatest gettext installation. However, the recent
bootstrap change broke these projects, since the versioning between
a project's configure.ac (0.17) and the gnulib version (0.18) cause
make to fail in the po directory.
The solution is to recognize both classes of projects - either you
care about latest GNU Coding Standards (and therefore use the
'gettext' module and the latest gettext release) or stability (and
therefore use the 'gettext-h' module and can get by with an older
release; although at this point in time, anything older than 0.17
doesn't seem to be in common enterprise use).
* build-aux/bootstrap (with_gettext): Only install latest
Makefile.in.in for projects requesting bleeding edge gettext. Signed-off-by: Eric Blake <eblake@redhat.com>
Bruno Haible [Sun, 22 Apr 2012 14:43:29 +0000 (16:43 +0200)]
doc: Mention reason for replacement on glibc/Linux systems.
* doc/posix-functions/dprintf.texi: Mention the problem with special
'long double' values.
* doc/posix-functions/fprintf.texi: Likewise.
* doc/posix-functions/printf.texi: Likewise.
* doc/posix-functions/snprintf.texi: Likewise.
* doc/posix-functions/sprintf.texi: Likewise.
* doc/posix-functions/vdprintf.texi: Likewise.
* doc/posix-functions/vfprintf.texi: Likewise.
* doc/posix-functions/vprintf.texi: Likewise.
* doc/posix-functions/vsnprintf.texi: Likewise.
* doc/posix-functions/vsprintf.texi: Likewise.
* doc/posix-functions/fcntl.texi: Add glibc/Linux to the list of
platforms with F_DUPFD_CLOEXEC problems.
* doc/posix-functions/glob.texi: Mention which platforms are affected
by the problem with symbolic links.
* doc/posix-functions/linkat.texi: Mention the problem with
AT_SYMLINK_FOLLOW on Linux.
Bruno Haible [Sat, 14 Apr 2012 21:27:45 +0000 (23:27 +0200)]
Large File Support for native Windows platforms.
* m4/largefile.m4 (gl_LARGEFILE): New macro.
* modules/largefile (configure.ac): Require gl_LARGEFILE.
* lib/sys_types.in.h (off_t) [WINDOWS_64_BIT_OFF_T]: Define to a 64-bit
type.
* m4/sys_types_h.m4 (gl_SYS_TYPES_H): Set WINDOWS_64_BIT_OFF_T.
* modules/sys_types (Makefile.am): Substitute WINDOWS_64_BIT_OFF_T.
* doc/posix-headers/sys_types.texi: Mention the effect of the
'largefile' module.
* lib/unistd.in.h [WINDOWS_64_BIT_OFF_T]: Include <sys/types.h>.
(ftruncate): Replace it if REPLACE_FTRUNCATE is 1.
* m4/unistd_h.m4 (gl_UNISTD_H): Require gl_SYS_TYPES_H.
(gl_UNISTD_H_DEFAULTS): Initialize REPLACE_FTRUNCATE.
* modules/unistd (Depends-on): Add sys_types.
(Makefile.am): Substitute WINDOWS_64_BIT_OFF_T, REPLACE_FTRUNCATE.
* lib/lseek.c (rpl_lseek) [_GL_WINDOWS_64_BIT_OFF_T]: Use _lseeki64
instead of lseek.
* m4/lseek.m4 (gl_FUNC_LSEEK): Require gl_SYS_TYPES_H. Set
REPLACE_LSEEK if WINDOWS_64_BIT_OFF_T is 1.
* modules/lseek (Depends-on): Add sys_types.
* lib/ftruncate.c: Put under GPLv3+. Include <windows.h>,
msvc-nothrow.h.
(SetFileSize): New function.
(ftruncate) [_GL_WINDOWS_64_BIT_OFF_T]: New implementation.
* m4/ftruncate.m4 (gl_FUNC_FTRUNCATE): Set REPLACE_FTRUNCATE on Windows
if Large File Support is requested.
* modules/ftruncate (configure.ac): Consider REPLACE_FTRUNCATE.
(Depends-on): Add sys_types, msvc-nothrow. Update conditions.
* lib/ftello.c [_GL_WINDOWS_64_BIT_OFF_T]: Use _ftelli64 or ftello64
instead of ftello.
* m4/ftello.m4 (gl_FUNC_FTELLO): Require gl_SYS_TYPES_H. Set
REPLACE_FTELLO if WINDOWS_64_BIT_OFF_T is 1.
(gl_PREREQ_FTELLO): New macro.
* modules/ftello (Depends-on): Add sys_types.
(configure.ac): Incoke gl_PREREQ_FTELLO.
* lib/fseeko.c [_GL_WINDOWS_64_BIT_OFF_T]: Use _fseeki64 or fseeko64
instead of fseeko.
* m4/fseeko.m4 (gl_FUNC_FSEEKO): Require gl_SYS_TYPES_H. Set
REPLACE_FSEEKO if WINDOWS_64_BIT_OFF_T is 1.
(gl_PREREQ_FSEEKO): New macro.
* modules/fseeko (Depends-on): Add sys_types.
(configure.ac): Invoke gl_PREREQ_FSEEKO.
* lib/sys_stat.in.h: Add comments about off_t.
(stat, fstat) [WINDOWS_64_BIT_ST_SIZE]: Define to variants that use a
64-bit integer for st_size in 'struct stat'.
* m4/sys_stat_h.m4 (gl_HEADER_SYS_STAT_H): Set WINDOWS_64_BIT_ST_SIZE.
Define _GL_WINDOWS_64_BIT_ST_SIZE.
* modules/sys_stat (Depends-on): Add sys_types.
(Makefile.am): Substitute WINDOWS_64_BIT_ST_SIZE.
* lib/stat.c (stat) [_GL_WINDOWS_64_BIT_ST_SIZE]: Define to _stati64
instead of stat or _stat.
* lib/fstat.c [_GL_WINDOWS_64_BIT_ST_SIZE]: Use _fstati64 and
'struct _stati64' instead of fstat and 'struct stat'.
* m4/fstat.m4 (gl_FUNC_FSTAT): Require gl_HEADER_SYS_STAT_H. Set
REPLACE_FSTAT if WINDOWS_64_BIT_ST_SIZE is 1.
Eric Blake [Thu, 19 Apr 2012 22:39:06 +0000 (16:39 -0600)]
bootstrap: accommodate older libtool
RHEL 5 still ships with libtool 1.5.22, where libtoolize lacks the
--install option but has that behavior by default. And gnulib's
DEPENDENCIES file states that we still support that old of libtool
as our minimum version.
* build-aux/bootstrap (use_libtool): Cater to libtool 1.5.22.
Reported by Daniel P. Berrange.
Jim Meyering [Thu, 19 Apr 2012 14:39:12 +0000 (16:39 +0200)]
announce-gen: avoid failure due to lack of Digest::SHA1
Even with the preferred Digest::SHA available, this script
would fail when the backup module, Digest::SHA1, was not installed.
* build-aux/announce-gen: Quote the conditional use of "use".
Reported by Reuben Thomas in:
http://thread.gmane.org/gmane.comp.lib.gnulib.bugs/30444
Jim Meyering [Thu, 19 Apr 2012 14:02:23 +0000 (16:02 +0200)]
bootstrap: don't let a user's CDPATH setting affect this script
When CDPATH is set, cd will sometimes generate output.
When "cd" is run in a subshell whose output matters, that
surprising-to-some output can cause malfunction.
Unsetting CDPATH turns off this shell "feature."
* build-aux/bootstrap (CDPATH): Unset.
Reported by Reuben Thomas in:
http://thread.gmane.org/gmane.comp.lib.gnulib.bugs/30435
and inspired by his patch here:
http://thread.gmane.org/gmane.comp.lib.gnulib.bugs/30440
maint.mk: expand syntax-check rule to catch @xref and @pxref abuse
* top/maint.mk (prohibit_undesirable_word_seq_RE_): An @xref{...}
should start a sentence and should not be preceded by "see",
"see also", etc. Add heuristic for @pxref too.
Jim Meyering [Mon, 16 Apr 2012 16:22:40 +0000 (18:22 +0200)]
configmake: correct minor inconsistency in Makefile rule
* modules/configmake (Makefile.am): All other rules like this one
run the final "mv -f ..." in the same backslash-continued command
as the one that does everything else. This one put the mv -f ...
command on a separate, non-backslash-continued line.
Make it like the others.
Joel E. Denny [Mon, 16 Apr 2012 15:27:48 +0000 (08:27 -0700)]
Fix recursion of install-* into po directories.
Bison's install-pdf bug reported by Hans Aberg at
<http://lists.gnu.org/archive/html/bug-bison/2011-05/msg00008.html>.
* build-aux/po/Makefile.in.in (install-dvi, install-html)
(install-info, install-pdf, install-ps): New targets.
Bruno Haible [Thu, 12 Apr 2012 18:59:22 +0000 (20:59 +0200)]
New module 'sys_resource'.
* lib/sys_resource.in.h: New file.
* m4/sys_resource_h.m4: New file.
* modules/sys_resource: New file.
* doc/posix-headers/sys_resource.texi: Mention the new module.
Paul Eggert [Wed, 4 Apr 2012 07:56:15 +0000 (00:56 -0700)]
regex: remove unnecessary type punning
Problem reported by Vladimir Serbinenko in
<http://lists.gnu.org/archive/html/bug-gnulib/2012-04/msg00006.html>.
* lib/regex.h (struct re_pattern_buffer): Change the type of
__REPB_PREFIX(buffer) from unsigned char * to struct re_dfa_t *.
Fix comment to match code.
* lib/regcomp.c (re_compile_fastmap, re_compile_fastmap_iter, regfree)
(re_compile_internal, free_workarea_compile, analyze, lower_subexp)
(parse, parse_reg_exp, parse_branch, parse_expression, parse_sub_exp):
* lib/regexec.c (regexec, re_search_stub, re_search_internal)
(set_regs):
Omit no-longer-necessary casts.
Bruno Haible [Tue, 3 Apr 2012 19:58:52 +0000 (21:58 +0200)]
New module 'ilogbl'.
* lib/math.in.h (ilogbl): New declaration.
* lib/ilogbl.c: New file.
* m4/ilogbl.m4: New file.
* m4/math_h.m4 (gl_MATH_H): Test whether ilogbl is declared.
(gl_MATH_H_DEFAULTS): Initialize GNULIB_ILOGBL, HAVE_ILOGBL.
* modules/math (Makefile.am): Substitute GNULIB_ILOGBL, HAVE_ILOGBL.
Split sed invocation, to avoid the limit of 100 substitutions of
HP-UX 'sed'.
* modules/ilogbl: New file.
* tests/test-math-c++.cc: Check the declaration of ilogbl.
* doc/posix-functions/ilogbl.texi: Mention the new module.
Bruno Haible [Tue, 3 Apr 2012 19:13:26 +0000 (21:13 +0200)]
New module 'ilogbf'.
* lib/math.in.h (ilogbf): New declaration.
* lib/ilogbf.c: New file.
* m4/ilogbf.m4: New file.
* m4/math_h.m4 (gl_MATH_H): Test whether ilogbf is declared.
(gl_MATH_H_DEFAULTS): Initialize GNULIB_ILOGBF, HAVE_ILOGBF,
REPLACE_ILOGBF.
* modules/math (Makefile.am): Substitute GNULIB_ILOGBF, HAVE_ILOGBF,
REPLACE_ILOGBF.
* modules/ilogbf: New file.
* tests/test-math-c++.cc: Check the declaration of ilogbf.
* doc/posix-functions/ilogbf.texi: Mention the new module.
Bruno Haible [Tue, 3 Apr 2012 17:02:15 +0000 (19:02 +0200)]
Tests for module 'ilogb'.
* modules/ilogb-tests: New file.
* tests/test-ilogb.c: New file.
* tests/test-ilogb.h: New file, based on tests/test-logb.h and
tests/test-logb-ieee.h.
Bruno Haible [Tue, 3 Apr 2012 16:59:33 +0000 (18:59 +0200)]
New module 'ilogb'.
* lib/math.in.h (ilogb): New declaration.
* lib/ilogb.c: New file.
* m4/ilogb.m4: New file.
* m4/math_h.m4 (gl_MATH_H): Test whether ilogb is declared.
(gl_MATH_H_DEFAULTS): Initialize GNULIB_ILOGB, HAVE_ILOGB,
REPLACE_ILOGB.
* modules/math (Makefile.am): Substitute GNULIB_ILOGB, HAVE_ILOGB,
REPLACE_ILOGB.
* modules/ilogb: New file.
* tests/test-math-c++.cc: Check the declaration of ilogb.
* doc/posix-functions/ilogb.texi: Mention the new module.
Bruno Haible [Tue, 3 Apr 2012 10:53:31 +0000 (12:53 +0200)]
New module 'logbl'.
* lib/math.in.h (logbl): New declaration.
* lib/logbl.c: New file.
* m4/logbl.m4: New file.
* m4/math_h.m4 (gl_MATH_H): Test whether logbl is declared.
(gl_MATH_H_DEFAULTS): Initialize GNULIB_LOGBL, HAVE_LOGBL,
REPLACE_LOGBL.
* modules/math (Makefile.am): Substitute GNULIB_LOGBL, HAVE_LOGBL,
REPLACE_LOGBL.
* modules/logbl: New file.
* tests/test-math-c++.cc: Check the declaration of logbl.
* doc/posix-functions/logbl.texi: Mention the new module.
Bruno Haible [Tue, 3 Apr 2012 02:44:59 +0000 (04:44 +0200)]
New module 'logbf'.
* lib/math.in.h (logbf): New declaration.
* lib/logbf.c: New file.
* m4/logbf.m4: New file.
* m4/math_h.m4 (gl_MATH_H): Test whether logbf is declared.
(gl_MATH_H_DEFAULTS): Initialize GNULIB_LOGBF, HAVE_LOGBF,
REPLACE_LOGBF.
* modules/math (Makefile.am): Substitute GNULIB_LOGBF, HAVE_LOGBF,
REPLACE_LOGBF.
* modules/logbf: New file.
* tests/test-math-c++.cc: Check the declaration of logbf.
* doc/posix-functions/logbf.texi: Mention the new module.
Bruno Haible [Tue, 3 Apr 2012 00:57:26 +0000 (02:57 +0200)]
logb tests: More tests.
* tests/test-logb.h: New file, based on tests/test-logb.c and
tests/test-frexp.h.
* tests/test-logb.c: Include minus-zero.h, test-logb.h.
(main): Just invoke test_function.
* modules/logb-tests (Files): Add tests/test-logb.h,
tests/minus-zero.h, tests/randomd.c.
(Makefile.am): Add randomd.c to test_logb_SOURCES.
Bruno Haible [Sun, 1 Apr 2012 17:29:21 +0000 (19:29 +0200)]
log10l: Work around log10l-ieee test failure on IRIX 6.5.
* lib/log10l.c: Include <float.h>
(log10l): On IRIX, normalize the +Infinity value.
* modules/log10l (Depends-on): Add 'float'.
* doc/posix-functions/log10l.texi: Mention the IRIX problem with
+Infinity.
Bruno Haible [Sun, 1 Apr 2012 15:56:33 +0000 (17:56 +0200)]
log10f-ieee: Work around test failure on NetBSD 5.1.
* m4/log10f-ieee.m4: New file.
* m4/log10f.m4 (gl_FUNC_LOG10F): If gl_FUNC_LOG10F_IEEE is present,
test whether log10f works with a negative argument. Replace it if not.
* lib/log10f.c (log10f): For negative arguments, return NaN.
* modules/log10f-ieee (Files): Add m4/log10f-ieee.m4.
(configure.ac): Invoke gl_FUNC_LOG10F_IEEE.
* doc/posix-functions/log10f.texi: Mention the log10f-ieee module.
Bruno Haible [Sun, 1 Apr 2012 15:10:01 +0000 (17:10 +0200)]
log10-ieee: Work around test failure on NetBSD 5.1 and Solaris 11.
* m4/log10-ieee.m4: New file.
* m4/log10.m4 (gl_FUNC_LOG10): If gl_FUNC_LOG10_IEEE is present, test
whether log10 works with a negative argument. Replace it if not.
* lib/log10.c (log10): For negative arguments, return NaN.
* modules/log10-ieee (Files): Add m4/log10-ieee.m4.
(configure.ac): Invoke gl_FUNC_LOG10_IEEE.
* doc/posix-functions/log10.texi: Mention the log10-ieee module.
Bruno Haible [Sun, 1 Apr 2012 12:41:57 +0000 (14:41 +0200)]
log10l: Work around AIX 5.1, IRIX 6.5, OSF/1 5.1 bug.
* lib/math.in.h (log10l): Override if REPLACE_LOG10L is 1.
* lib/log10l.c (log10l): If log10l exists, use it and provide just the
workaround.
* m4/log10l.m4 (gl_FUNC_LOG10L_WORKS): New macro.
(gl_FUNC_LOG10L): Invoke it. Set REPLACE_LOG10L.
* m4/math_h.m4 (gl_MATH_H_DEFAULTS): Initialize REPLACE_LOG10L.
* modules/math (Makefile.am): Substitute REPLACE_LOG10L.
* modules/log10l (configure.ac): Consider REPLACE_LOG10L.
(Depends-on): Update conditions.
* doc/posix-functions/log10l.texi: Mention the MSVC9, AIX 5.1,
IRIX 6.5, OSF/1 5.1 problems.
Bruno Haible [Sun, 1 Apr 2012 12:29:37 +0000 (14:29 +0200)]
log10f: Work around OSF/1 5.1 bug.
* lib/math.in.h (log10f): Override if REPLACE_LOG10F is 1.
* lib/log10f.c (log10f): If logf exists, use it and provide just the
workaround.
* m4/log10f.m4 (gl_FUNC_LOG10F_WORKS): New macro.
(gl_FUNC_LOG10F): Invoke it. Set REPLACE_LOG10F.
* m4/math_h.m4 (gl_MATH_H_DEFAULTS): Initialize REPLACE_LOG10F.
* modules/math (Makefile.am): Substitute REPLACE_LOG10F.
* modules/log10f (configure.ac): Consider REPLACE_LOG10F.
(Depends-on): Update conditions.
* doc/posix-functions/log10f.texi: Mention the OSF/1 5.1 problem.
Paul Eggert [Fri, 30 Mar 2012 22:24:06 +0000 (15:24 -0700)]
regex: pacify GCC when compiling GRUB
* lib/regcomp.c (init_dfa): Make a pointer 'const', to avoid
a diagnostic. Reported by Vladimir Serbinenko in
<http://lists.gnu.org/archive/html/bug-gnulib/2012-03/msg00163.html>.
Eric Blake [Thu, 29 Mar 2012 19:30:41 +0000 (13:30 -0600)]
stdio: don't assume gets any more
Gnulib intentionally does not have a gets module, and now that C11
and glibc have dropped it, we should be more proactive about warning
any user on a platform that still has a declaration of this dangerous
interface.
* m4/stdio_h.m4 (gl_STDIO_H, gl_STDIO_H_DEFAULTS): Drop gets
support.
* modules/stdio (Makefile.am): Likewise.
* lib/stdio-read.c (gets): Likewise.
* tests/test-stdio-c++.cc: Likewise.
* m4/warn-on-use.m4 (gl_WARN_ON_USE_PREPARE): Fix comment.
* lib/stdio.in.h (gets): Make warning occur in more places.
* doc/posix-functions/gets.texi (gets): Update documentation.
Reported by Christer Solskogen.
Eric Blake [Fri, 30 Mar 2012 02:47:55 +0000 (20:47 -0600)]
maint.mk: fix syntax checks without exclusions
Commit 727075d0 skipped per-line exclusions if ${exclude} is left
undefined, but was immediately broken by commit 44de969c which
always initialized the variable to the empty string.
* top/maint.mk (_sc_search_regexp): Allow for empty variable.
Reported by Daniel P. Berrange.
Bruno Haible [Sun, 25 Mar 2012 11:56:33 +0000 (13:56 +0200)]
locale: Provide a complete 'struct lconv'.
* m4/locale_h.m4 (gl_LOCALE_H): Set REPLACE_STRUCT_LCONV to 1 if
'struct lconv' does not contain int_p_cs_precedes.
* tests/test-locale.c (main): Check that 'struct lconv' is complete.
* doc/posix-headers/locale.texi: Update.
Bruno Haible [Sun, 25 Mar 2012 11:22:41 +0000 (13:22 +0200)]
locale: Provide a working 'struct lconv'.
* lib/locale.in.h (lconv): Override if REPLACE_STRUCT_LCONV is 1.
* m4/locale_h.m4 (gl_LOCALE_H): Set REPLACE_STRUCT_LCONV to 1 if
'struct lconv' does not even contain decimal_point.
(gl_LOCALE_H_DEFAULTS): Initialize REPLACE_STRUCT_LCONV.
* modules/locale (Makefile.am): Substitute REPLACE_STRUCT_LCONV.
* tests/test-locale.c (main): Check that 'struct lconv' is complete.
* doc/posix-headers/locale.texi: Mention the problems with
'struct lconv'.
Reported by Gianluigi Tiesi <sherpya@netfarm.it>.
gnulib-tool: fix imprecise comments w.r.t. an automake bug
It's not just Automake versions < 1.9b that creates an empty
pkgdatadir at installation time if pkgdata_DATA is specified
to empty; modern automake versions do this as well, at least
until automake 1.11.4 (not yet released at the moment of writing,
but soon to appear). That behaviour was generally considered a
feature rather than a bug, at least until this discussion:
<http://lists.gnu.org/archive/html/automake/2012-03/msg00014.html>
Jim Meyering [Tue, 20 Mar 2012 19:35:44 +0000 (20:35 +0100)]
tests: avoid gcc warnings about argv vs. const initializers
* tests/test-posix_spawn1.c (main): Cast to "(char *)" to avoid two
warnings about discarding 'const' qualifier from pointer target type.
* tests/test-posix_spawn2.c (main): Likewise.
git-version-gen: don't let "prefix" envvar cause trouble
* build-aux/git-version-gen (prefix): Initialize properly,
so as not to use a value specified via the environment.
Details here: http://thread.gmane.org/gmane.comp.gnu.parted.bugs/10810