Paul Eggert [Fri, 24 Aug 2012 23:42:56 +0000 (16:42 -0700)]
doc: remove fdl-1.2.texi
It is no longer used or maintained, and its use of @acronym
is problematic. See the thread containing
<http://lists.gnu.org/archive/html/bug-gnulib/2012-08/msg00134.html>.
* config/srclist.txt: Remove doc/old-licenses/fdl-1.2.texi.
* doc/old-licenses/fdl-1.2.texi: Remove.
Paul Eggert [Fri, 24 Aug 2012 10:29:39 +0000 (03:29 -0700)]
execinfo: port to FreeBSD
* m4/execinfo.m4 (gl_EXECINFO_H): Set LIB_EXECINFO to -lexecinfo
if needed, as in FreeBSD. Reported by Bastien Roucariès in
<http://lists.gnu.org/archive/html/bug-gnulib/2012-08/msg00113.html>.
* modules/execinfo (Link): Add $(LIB_EXECINFO).
Paul Eggert [Fri, 24 Aug 2012 09:19:57 +0000 (02:19 -0700)]
doc: do not use @acronym
* doc/inet_ntoa.texi (inet_ntoa):
* doc/parse-datetime.texi (Seconds since the Epoch)
(Specifying time zone rules):
* doc/posix-functions/inet_ntoa.texi (inet_ntoa):
Don't use @acronym. Problem reported by John Darlington in
<http://lists.gnu.org/archive/html/bug-gnulib/2012-08/msg00124.html>.
Paul Eggert [Thu, 23 Aug 2012 23:40:05 +0000 (16:40 -0700)]
stdnoreturn: port to newer GCCs
* m4/stdnoreturn.m4 (gl_STDNORETURN_H): Avoid problems with
bleeding-edge GCC that complains about 'int _Noreturn foo (void);'.
Problem reported by Jim Meyering in
<http://lists.gnu.org/archive/html/bug-gnulib/2012-08/msg00121.html>.
Also, rename the 'test' function to a void a clash with the
already-supplied 'main' function; this fixes a bug that incorrectly
rejected GCC 4.7.1's <stdnoreturn.h>.
* doc/posix-headers/stdnoreturn.texi (stdnoreturn.h):
Document GCC problem.
Paul Eggert [Wed, 22 Aug 2012 08:47:05 +0000 (01:47 -0700)]
execinfo: new module
This is for Emacs. Currently, it provides a no-effect stub
on all platforms where it does not already work.
It already works on glibc-based systems, and on Solaris 11.
* lib/execinfo.c, lib/execinfo.in.h, m4/execinfo.m4, modules/execinfo:
New files.
* doc/glibc-headers/execinfo.texi (execinfo.h):
* MODULES.html.sh (Misc): Document it.
Paul Eggert [Tue, 21 Aug 2012 00:01:18 +0000 (17:01 -0700)]
extern-inline: support old GCC 'inline'
* m4/extern-inline.m4 (gl_EXTERN_INLINE): Use pre-C99 GCC 'inline'
if available. This applies to GCC versions 2.7 through 4.2, or
when newer GCC is using -fgnu89-inline. The goal is to address
some of the performance issues mentioned by Bruno Haible in
<http://lists.gnu.org/archive/html/bug-gnulib/2012-08/msg00097.html>.
Bruno Haible [Sun, 19 Aug 2012 12:13:11 +0000 (14:13 +0200)]
gnulib-tool: Improve coding style.
* gnulib-tool (func_emit_tests_Makefile_am): Set perhapsLT, like in
func_emit_lib_Makefile_am.
Reported and fix suggested by Dmitriy Selyutin <ghostman.sd@gmail.com>.
Bruno Haible [Tue, 14 Aug 2012 23:29:28 +0000 (01:29 +0200)]
gnulib-tool: Fix indentation of generated gnulib-comp.m4 file.
* gnulib-tool (func_emit_autoconf_snippet): Initialize indentation
from argument.
Reported and fix suggested by Dmitriy Selyutin <ghostman.sd@gmail.com>.
Eric Blake [Sat, 11 Aug 2012 13:34:00 +0000 (07:34 -0600)]
count-leading-zeros: use a lookup table on non-gcc compilers
While this only affects non-gcc compilers, we can assume that
lookups are faster than conditionals, even if it results in
a slightly larger executable size.
* lib/count-leading-zeros.h (count_leading_zeros_32): Use an
alternate implementation, suggested by Jim Meyering.
Eric Blake [Fri, 10 Aug 2012 22:51:08 +0000 (16:51 -0600)]
count-leading-zeros: new module
I needed gcc's clz to determine the most significant bit of a
number (useful for things like truncating to a power of 2),
and was surprised it is not a standardized function (the
opposite direction of finding the least significant bit is
given by ffs). This borrows heavily from the design of the
count-one-bits module.
* modules/count-leading-zeros: New module.
* m4/count-leading-zeros.m4: New file.
* lib/count-leading-zeros.h: Likewise.
* modules/count-leading-zeros-tests: New test.
* tests/test-count-leading-zeros.c: New file.
* MODULES.html.sh (Integer arithmetic functions): Document it.
Jim Meyering [Sun, 5 Aug 2012 09:19:19 +0000 (11:19 +0200)]
maint.mk: sc_prohibit_magic_number_exit: avoid new false positives
* top/maint.mk (sc_prohibit_magic_number_exit): Also filter out matches
for /error ?([^,]*)/. This avoids false-positives for strings like
"Unknown error (252)", introduced via commit v0.0-7538-g92875a6.
* modules/gnumakefile [Makefile.am]: The makefiles generated by
Automake-NG always contain a definition of VPATH, even in non-VPATH
builds (its value being simply '.' in that case). So, in the
'clean-GNUmakefile' rule, to determine whether running under a
VPATH setup, compare '$(srcdir)' to '.' rather than checking whether
'$(VPATH)' expands to the empty string.
Paul Eggert [Thu, 2 Aug 2012 21:17:33 +0000 (14:17 -0700)]
stat-time, timespec, u64: support naive out-of-dir builds
* lib/stat-time.c, lib/timespec.c, lib/u64.c:
Use '#include "foo.h"', not '#include <foo.h>', when including
one's own interface. This works better when configuring with
out-of-directory builds, since packages need not add an
otherwise-unnecessary -I$(topdir_src)/lib to DEFAULT_INCLUDES.
Paul Eggert [Sat, 28 Jul 2012 14:23:54 +0000 (07:23 -0700)]
utimens: use extern-inline
* lib/utimens.c (_GL_UTIMENS_INLINE): Define when including utimens.h.
* lib/utimens.h: Add copyright notice, since this is now large enough
to copyright. Use _GL_INLINE_HEADER_BEGIN, _GL_INLINE_HEADER_END.
(_GL_UTIMENS_INLINE): New macro. Use it instead of 'static inline'.
* modules/utimens (Depends-on): Add extern-inline.
Paul Eggert [Sat, 28 Jul 2012 14:20:59 +0000 (07:20 -0700)]
u64: use extern-inline
* lib/u64.c: New file.
* lib/u64.h: Use _GL_INLINE_HEADER_BEGIN, _GL_INLINE_HEADER_END.
(_GL_U64_INLINE): New macro. Use it instead of 'static inline'.
* modules/u64 (Files): Add lib/u64.c.
(Depends-on): Add extern-inline.
(configure.ac): No need to require AC_C_INLINE, since extern-inline
does that now.
(lib_SOURCES): Add u64.c.
Paul Eggert [Sat, 28 Jul 2012 14:18:23 +0000 (07:18 -0700)]
timespec: use extern-inline
* lib/timespec.c: New file.
* lib/timespec.h: Use _GL_INLINE_HEADER_BEGIN, _GL_INLINE_HEADER_END.
(_GL_TIMESPEC_INLINE): New macro. Use it instead of 'static inline'.
* modules/timespec (Files): Add lib/timespec.c.
(Depends-on): Add extern-inline.
(lib_SOURCES): Add timespec.c.
Paul Eggert [Sat, 28 Jul 2012 14:15:59 +0000 (07:15 -0700)]
stat-time: use extern-inline
* lib/stat-time.c: New file.
* lib/stat-time.h: Use _GL_INLINE_HEADER_BEGIN, _GL_INLINE_HEADER_END.
(_GL_STAT_TIME_INLINE): New macro. Use it instead of 'static inline'.
* modules/stat-time (Files): Add lib/stat-time.c.
(Depends-on): Add extern-inline.
(lib_SOURCES): Add stat-time.c.
Paul Eggert [Sat, 28 Jul 2012 14:11:58 +0000 (07:11 -0700)]
extern-inline: new module
* modules/extern-inline, m4/extern-inline.m4: New files.
This is for better support of 'extern inline' a la ISO C99,
with a portable alternative on compilers that do not support
C99-style 'extern inline'. Using 'extern inline' shrinks the size
of the Emacs executable, when compiled with debugging disabled,
which is a typical way that Emacs is built while developing.
Akim Demaille [Wed, 1 Aug 2012 07:55:49 +0000 (09:55 +0200)]
maint.mk: a "release-commit" wrapper to do-release-commit-and-tag
* build-aux/do-release-commit-and-tag: Move variable definitions
together.
($branch): Instead of defaulting to "master", default to the current
branch (as gnu-web-doc-update does).
(help): Display the current values of the option arguments.
* top/maint.mk (release-commit): New.
* top/README-release: Simplify the corresponding step.
Bruno Haible [Sun, 22 Jul 2012 19:31:42 +0000 (21:31 +0200)]
getpass: Assume AC_CHECK_DECLS_ONCE invocation, like in getpass.m4.
* lib/getpass.h: Assume HAVE_DECL_GETPASS is defined.
* cfg.mk (exclude_file_name_regexp--sc_prohibit_defined_have_decl_tests):
Remove exemption for getpass.h.
Suggested by Eric Blake.
Eric Blake [Fri, 20 Jul 2012 22:48:46 +0000 (16:48 -0600)]
verify: document conflict with -Wnested-externs
Our implementation of verify() relies on nested extern declarations,
so it is incompatible with gcc < 4.6 coupled with -Wnested-externs
when used inside a function body. But inside a function body, you
can always arrange to use verify_expr() instead, which is warning-free.
* lib/verify.h: Give hint about usage when gcc warnings are enabled.
Bruno Haible [Sun, 15 Jul 2012 21:00:48 +0000 (23:00 +0200)]
fpending: Assume AC_CHECK_DECLS_ONCE invocation, like in fpending.m4.
* lib/fpending.h: Assume HAVE_DECL___FPENDING is defined.
* cfg.mk (exclude_file_name_regexp--sc_prohibit_defined_have_decl_tests)
Remove exemption for fpending.h.
Suggested by Eric Blake.
Paul Eggert [Sun, 15 Jul 2012 18:06:11 +0000 (11:06 -0700)]
pthread_sigmask: fix bug on FreeBSD 9
* lib/pthread_sigmask.c [PTHREAD_SIGMASK_INEFFECTIVE]:
Include string.h.
(pthread_sigmask) [PTHREAD_SIGMASK_INEFFECTIVE]:
When calling pthread_sigmask (1729, NEW, OLD), specify non-null NEW;
this avoids a bug on FreeBSD 9, where pthread_sigmask is effective
but pthread_sigmask (1729, NULL, NULL) returns zero.
See <http://bugs.gnu.org/11884>.
Avoid the need to call pthread_sigmask (1729, ...) in most cases,
by inspecting whether the main call changed the old mask.
Eric Blake [Fri, 13 Jul 2012 20:02:05 +0000 (14:02 -0600)]
maint.mk: new syntax check for HAVE_DECL checks
Based on Karel's report, we might as well enforce a syntax check
to help avoid future problems.
https://lists.gnu.org/archive/html/coreutils/2012-06/msg00037.html
Exempt a few files that still get picked up in the wild rather
than as a full gnulib module with m4 files.
* top/maint.mk (sc_prohibit_defined_have_decl_tests): New rule.
* cfg.mk
(exclude_file_name_regexp--sc_prohibit_defined_have_decl_tests):
Exempt some false positives.
Based on a report by Karel Zak.
Eric Blake [Fri, 13 Jul 2012 17:50:59 +0000 (11:50 -0600)]
argp: make HAVE_DECL usage consistent
Autoconf guarantees that AC_CHECK_DECLS always defines the
corresponding HAVE_DECL_*. But our hand-coded use of AC_CHECK_DECL
did not define the macro to 0, leading to a false positive complaint:
https://lists.gnu.org/archive/html/coreutils/2012-06/msg00037.html
By sticking to conventions, we avoid the false positive.
* lib/argp-parse.c (__argp_parse): Check contents of HAVE_DECL
macros, not whether they are defined.
* m4/argp.m4 (gl_ARGP): Always define HAVE_DECL_* macros, per
convention with other declaration checks.
Reported by Karel Zak, with suggestions from Paul Eggert.
Eric Blake [Fri, 13 Jul 2012 17:43:40 +0000 (11:43 -0600)]
strndup: fix m4 usage error
Autoconf guarantees that AC_CHECK_DECLS_ONCE always defines the
corresponding HAVE_DECL_*, so checking #ifndef HAVE_DECL_* is bogus.
https://lists.gnu.org/archive/html/coreutils/2012-06/msg00037.html
* m4/strndup.m4 (gl_FUNC_STRNDUP): HAVE_DECL_STRNDUP is always
defined, to either 0 or 1.
Reported by Karel Zak.
Paul Eggert [Thu, 12 Jul 2012 04:16:27 +0000 (21:16 -0700)]
gettext: do not assume '#define ... defined ...' behavior
* lib/gettext.h (_LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS):
Do not use '#define FOO ... defined BAR ...', as the C standard says
it's not portable to expect that this works after macro expansion.
Problem reported for gzip by Steven M. Schweda in
<http://lists.gnu.org/archive/html/bug-gzip/2012-07/msg00000.html>.
Paul Eggert [Tue, 10 Jul 2012 23:50:06 +0000 (16:50 -0700)]
getloadavg: clean out old Emacs and Autoconf cruft
See Glenn Morris in <http://bugs.gnu.org/11905>.
* lib/getloadavg.c: Include <config.h>, <stdbool.h> always.
Include <sys/param.h> if HAVE_SYS_PARAM_H, not if unix or __unix.
(LDAV_CVT): Remove no-longer-used LOAD_AVE_CVT hook.
* m4/getloadavg.m4 (gl_PREREQ_GETLOADAVG): Check for <sys/param.h>.
Reported by Jim Meyering.
* build-aux/bootstrap (warn): Remove, replaced by...
(warnf_, warn_): these.
Adjust callers.
Shorten messages that no longer fit in 80 columns.
Bugs in both of those conspired to make the
sc_vulnerable_makefile_CVE-2009-4029 rule 99% useless.
_sc_search_regexp's handling of non-empty $in_files would filter
out any offending file names. sc_vulnerable_makefile_CVE-2009-4029's
choice of in_files value meant there would be no match in most
projects, due to the presence of two or more Makefile.in files.
* top/maint.mk (_sc_search_regexp) [in_vc_files,in_files]: Clarify.
Fix a bug in how a non-empty $$in_files was processed:
(sc_vulnerable_makefile_CVE-2009-4029): Fix erroneous use of in_files:
in spite of the name, it's a regexp, not a list of file names.
Paul Eggert [Mon, 9 Jul 2012 08:17:51 +0000 (01:17 -0700)]
getloadavg, getopt: fix commentary re configure.in
Autoconf is deprecating the name 'configure.in', so change it to
to the new name 'configure.ac' in a couple of places.
* lib/getloadavg.c: configure.in -> configure.ac, in comment.
* m4/getopt.m4 (gl_GETOPT_IFELSE, gl_GETOPT_SUBSTITUTE_HEADER)
(gl_PREREQ_GETOPT): Remove obsolete commentary re Emacs configure.in.
Emacs has renamed it to configure.ac, and it no longer refers
to these macros anyway.
Paul Eggert [Fri, 6 Jul 2012 02:28:29 +0000 (02:28 +0000)]
sys_time: allow too-wide tv_sec
* m4/sys_time_h.m4 (gl_HEADER_SYS_TIME_H_BODY): Allow struct
timeval even if tv_sec is wider than time_t. This allows
OpenBSD 5.1 amd64 and fixes an Emacs porting glitch with utimens.c,
as without this patch gnulib replaces struct timeval
and OpenBSD futimes therefore has a type mismatch.
* doc/posix-headers/sys_time.texi: Mention this.
Paul Eggert [Fri, 6 Jul 2012 01:42:11 +0000 (18:42 -0700)]
pthread: check for both pthread_create and pthread_join
* m4/pthread.m4 (gl_PTHREAD_CHECK): Revert previous change, but
alter the check so that it tests for both pthread_create and
pthread_join. This should be more portable to hosts like OSF/1 5.1.
Suggested by Bruno Haible and Richard Yao in
<http://lists.gnu.org/archive/html/bug-gnulib/2012-07/msg00048.html>.