Jim Meyering [Fri, 6 May 2011 06:09:21 +0000 (08:09 +0200)]
maint.mk: use info-gnu@ as the default only for a stable release
* top/maint.mk: Don't default to info-gnu for alpha or beta releases.
For those, just use $(PACKAGE_BUGREPORT), in which case we don't have
to set the Mail-Followup-To header. Prompted by Reuben Thomas in
http://thread.gmane.org/gmane.comp.lib.gnulib.bugs/26488
Paul Eggert [Fri, 6 May 2011 05:43:18 +0000 (22:43 -0700)]
assert-h: new module, which supports C1X-style static_assert
* lib/assert.in.h, m4/assert_h.m4, modules/assert-h: New files.
* lib/verify.h: Revamp so that this can be copied into assert.h,
while retaining the ability to use it standalone as before.
Rename private identifiers so as not to encroach on the
standard C namespace, since this is now used by assert.h.
(_GL_VERIFY_TYPE): New macro, factoring out differing parts of
the old verify_true.
(_GL_VERIFY_TRUE): New macro, with much of the contents of
the old verify_true. Use _GL_VERIFY_TYPE.
(_GL_VERIFY): New macro, with much of the contents of the old verify.
(static_assert): New macro, if _GL_STATIC_ASSERT_H
is defined and static_assert is not; _GL_STATIC_ASSERT_H is
defined when this file is copied into the replacement assert.h.
(_Static_assert): New macro, if _GL_STATIC_ASSERT_H is defined
and _Static_assert is not built in.
(verify_true, verify): Define only if _GL_STATIC_ASSERT_H is not
defined, and use the new macros mentioned above.
* doc/posix-headers/assert.texi: Document this.
Bruno Haible [Thu, 5 May 2011 22:23:55 +0000 (00:23 +0200)]
fflush, fseeko: Respect rules for use of AC_LIBOBJ.
* m4/fflush.m4 (gl_FUNC_FFLUSH_STDIN): New macro, extracted from
gl_FUNC_FFLUSH.
(gl_FUNC_FFLUSH): Use it.
(gl_REPLACE_FFLUSH): Don't invoke gl_REPLACE_FSEEKO.
* m4/fseeko.m4 (gl_FUNC_FSEEKO): Invoke gl_FUNC_FFLUSH_STDIN and
gl_REPLACE_FSEEKO here.
Bruno Haible [Thu, 5 May 2011 17:31:30 +0000 (19:31 +0200)]
strtoimax, strtoumax: Relicense under LGPL.
* modules/strtoimax (License): Change to LGPL.
* modules/strtoumax (License): Likewise.
With permission from Jim Meyering, Paul Eggert:
<http://lists.gnu.org/archive/html/bug-gnulib/2011-05/msg00124.html>
<http://lists.gnu.org/archive/html/bug-gnulib/2011-05/msg00109.html>
Bruno Haible [Thu, 5 May 2011 17:29:48 +0000 (19:29 +0200)]
getgroups: Relicense under LGPL.
* modules/getgroups (License): Change to LGPL.
With permission from Jim Meyering, Paul Eggert, Eric Blake:
<http://lists.gnu.org/archive/html/bug-gnulib/2011-05/msg00111.html>
<http://lists.gnu.org/archive/html/bug-gnulib/2011-05/msg00148.html>
<http://lists.gnu.org/archive/html/bug-gnulib/2011-05/msg00138.html>
Bruno Haible [Thu, 5 May 2011 17:28:21 +0000 (19:28 +0200)]
nanosleep: Relicense under LGPL.
* modules/nanosleep (License): Change to LGPL.
With permission from Jim Meyering, Paul Eggert, Eric Blake, Bruno
Haible:
<http://lists.gnu.org/archive/html/bug-gnulib/2011-05/msg00111.html>
<http://lists.gnu.org/archive/html/bug-gnulib/2011-05/msg00148.html>
<http://lists.gnu.org/archive/html/bug-gnulib/2011-05/msg00138.html>
<http://lists.gnu.org/archive/html/bug-gnulib/2011-05/msg00131.html>
Bruno Haible [Thu, 5 May 2011 17:25:17 +0000 (19:25 +0200)]
fflush: Relicense under LGPL.
* modules/fflush (License): Change to LGPL.
With permission from Eric Blake, Bruno Haible, Jim Meyering:
<http://lists.gnu.org/archive/html/bug-gnulib/2011-05/msg00138.html>
<http://lists.gnu.org/archive/html/bug-gnulib/2011-05/msg00131.html>
<http://lists.gnu.org/archive/html/bug-gnulib/2011-05/msg00133.html>
Bruno Haible [Thu, 5 May 2011 17:22:52 +0000 (19:22 +0200)]
isfinite: Relicense under LGPL.
* modules/isfinite (License): Change to LGPL.
With permission from Ben Pfaff, Bruno Haible:
<http://lists.gnu.org/archive/html/bug-gnulib/2010-12/msg00185.html>
<http://lists.gnu.org/archive/html/bug-gnulib/2011-05/msg00130.html>
Bruno Haible [Thu, 5 May 2011 17:03:57 +0000 (19:03 +0200)]
signal: Define sighandler_t.
* lib/signal.in.h (sighandler_t): New type.
* m4/signal_h.m4 (gl_SIGNAL_H): Require AC_USE_SYSTEM_EXTENSIONS. Test
whether sighandler_t is defined.
(gl_SIGNAL_H_DEFAULTS): Initialize HAVE_SIGHANDLER_T.
* modules/signal (Depends-on): Add extensions.
(Makefile.am): Substitute HAVE_SIGHANDLER_T.
* doc/posix-headers/signal.texi: Mention the problem with sighandler_t.
Suggested by Markus Steinborn <gnugv_maintainer@yahoo.de>.
Eric Blake [Wed, 4 May 2011 20:26:56 +0000 (14:26 -0600)]
maint: remove useless REPLACE_*_H macros
There are still a few modules, like iconv_h.m4, that still
use older paradigms where GNULIB_POSIXCHECK is unsupported
and where gl_REPLACE_<HEADER>_H is still essential. But since
we are moving away from that style, I see no reason to keep
the idiom for the modules that don't need it.
Bruno Haible [Tue, 3 May 2011 21:32:50 +0000 (23:32 +0200)]
Support for conditional dependencies.
* doc/gnulib.texi (Module description): Document the syntax of
conditional dependencies.
* gnulib-tool: New option --conditional-dependencies.
(func_usage): Document it.
(cond_dependencies): New variable.
(func_get_automake_snippet_conditional,
func_get_automake_snippet_unconditional): New functions, extracted from
func_get_automake_snippet.
(func_get_automake_snippet): Use them.
(sed_first_32_chars): New variable.
(func_module_shellfunc_name): New function.
(func_module_shellvar_name): New function.
(func_module_conditional_name): New function.
(func_uncond_add_module, func_conddep_add_module, func_cond_module_p,
func_cond_module_condition): New functions.
(func_modules_transitive_closure): Add support for conditional
dependencies.
(func_emit_lib_Makefile_am): For a conditional module, enclose the
conditional automake snippet in an automake conditional.
(func_emit_autoconf_snippets): Emit shell functions that contain the
code for conditional modules.
(func_import, func_create_testdir): Update specification.
Eric Blake [Tue, 3 May 2011 21:27:11 +0000 (15:27 -0600)]
test-getaddrinfo: report error information
Clang deduced that if ENABLE_DEBUGGING is undefined, then err
was a dead assignment. But in the EAI_SYSTEM case, we fail
the test, so the output should be unconditional.
* tests/test-getaddrinfo.c (simple): Use err outside of dbprintf.
Jim Meyering [Tue, 3 May 2011 08:31:16 +0000 (10:31 +0200)]
bootstrap: avoid build failure when $GZIP is set
* build-aux/bootstrap (check_versions): Do not treat $GZIP as a
program name. If defined at all, it is supposed to list gzip options.
Reported by Alan Curry in http://debbugs.gnu.org/8609
Reuben Thomas [Tue, 3 May 2011 05:58:45 +0000 (07:58 +0200)]
readme-release: new module with release instructions
* modules/readme-release: New module.
* top/README-release: New file, from coreutils, grep, diffutils.
* MODULES.html.sh (Support for maintaining and releasing): Add it.
Eric Blake [Mon, 2 May 2011 21:00:50 +0000 (15:00 -0600)]
fflush: also replace fclose when fixing fflush
This fixes the fclose failures detected in the previous patch,
but only when the GPL fflush module is also in use. That is
because the need for behavior of resetting seekable input streams
is much less common, and the fix more complex. The LGPLv2+ test
for fclose() in isolation is relaxed to pass if fflush is not
being replaced to cater to input streams.
* modules/fflush (Depends-on): Add fclose.
* m4/fflush.m4 (gl_FUNC_FFLUSH): Also replace fclose.
* lib/fclose.c (rpl_fclose): Don't cause spurious failures on
memstreams with no backing fd.
* doc/posix-functions/fclose.texi (fclose): Document the use of
fflush module to fix the bug.
* tests/test-fclose.c (main): Relax test when fclose is used in
isolation.
Eric Blake [Mon, 2 May 2011 19:38:23 +0000 (13:38 -0600)]
fclose: add some tests
POSIX requires that fclose() on seekable input streams rewind back
to the next byte not actually given to the application. Glibc fails
this test. See:
http://sourceware.org/bugzilla/show_bug.cgi?id=3746
http://sourceware.org/bugzilla/show_bug.cgi?id=12724
Likewise for FreeBSD.
Cygwin 1.7.9 and Solaris 10 pass, however.
* modules/fclose-tests: New test module.
* tests/test-fclose.c: New file.
Eric Blake [Sat, 30 Apr 2011 21:40:00 +0000 (15:40 -0600)]
fclose: don't fail on non-seekable input stream
On mingw, for a project that uses both sockets and streams,
then fclose(stdin) when getting input from a terminal or pipe
was spuriously failing.
* modules/fclose (Depends-on): Add freading, fflush, fseeko.
* lib/fclose.c (rpl_fclose): Skip fflush for non-seekable input,
since fflush is allowed to fail in that case.
Bruno Haible [Sat, 30 Apr 2011 13:00:45 +0000 (15:00 +0200)]
netdb: Make it work in C++ mode.
* lib/netdb.in.h (struct addrinfo): In C++, define as a C struct.
(getaddrinfo, freeaddrinfo, getnameinfo): Use macros from c++defs
module.
* m4/netdb_h.m4 (gl_NETDB_MODULE_INDICATOR): Invoke
gl_MODULE_INDICATOR_FOR_TESTS.
* modules/netdb-tests (Depends-on): Add netdb-c++-tests.
* modules/netdb-c++-tests: New file.
* tests/test-netdb-c++.cc: New file.
Bruno Haible [Sat, 30 Apr 2011 11:38:43 +0000 (13:38 +0200)]
sys_socket: Ensure 'struct iovec' definition.
* lib/sys_socket.in.h: Include <sys/uio.h> also on platforms that have
<sys/socket.h>.
* doc/posix-headers/sys_socket.texi: Mention the OpenBSD problem.
manywarnings: add -Wno-missing-field-initializers if needed
* m4/manywarnings.m4 (gl_MANYWARN_ALL_GCC): Add the above
option if it's needed to allow initialization with { 0, },
which is the case with GCC before version 4.7
Eric Blake [Thu, 28 Apr 2011 23:25:49 +0000 (17:25 -0600)]
quotearg: avoid uninitialized variable use
Coverity correctly deduced:
Error: UNINIT:
m4-1.4.16/lib/quotearg.c:171: var_decl: Declaring variable "o" without initializer.
m4-1.4.16/lib/quotearg.c:175: uninit_use: Using uninitialized value "o": field "o".right_quote is uninitialized.
When custom_quoting_style was introduced in commit 12247f77,
this method was not updated, and any caller that passed
the new enum value to any of the existing quotearg_*style
functions could trigger a crash from the uninitialized memory.
That was already documented as unspecified behavior, though,
so changing to an abort makes it easier to spot bad code that
passes the wrong enum value, rather than waiting for the
eventual bad memory dereference later on.
Most callers of quotearg_*style were using quoting_style_args
and quoting_style_vals to map strings to particular enum
values, and custom_quoting_style is (intentionally) not covered
by these arrays, so the pre-patch bug/post-patch abort are not
possible with those callers.
* lib/quotearg.c (quoting_options_from_style): Initialize
remaining fields, and ensure that custom styles are only used via
quoting_options rather than quoting_style.
Jim Meyering [Fri, 29 Apr 2011 07:53:25 +0000 (09:53 +0200)]
test-getcwd.c: avoid new set-but-not-used warning
* tests/test-getcwd.c (test_abort_bug): Exit nonzero for any problem,
not just the glibc/abort one that getcwd-abort-bug.m4 detects.
This also adds an additional test for an unlikely chdir("..") failure.
* m4/getcwd-abort-bug.m4: Update this now-duplicated code to match,
and adjust the code that sets gl_cv_func_getcwd_abort_bug accordingly.
Eric Blake [Thu, 28 Apr 2011 22:46:16 +0000 (16:46 -0600)]
getaddrinfo: fix gai_strerror signature
Several platforms declare gai_strerror to return char* rather than
const char*. Worse, on mingw, if UNICODE is defined, it is defined
to return WCHAR*, which means the result is in unicode but an
application expecting bytes for characters will only see a one-byte
answer.
* m4/getaddrinfo.m4 (gl_GETADDRINFO): Detect broken signatures,
and work around mingw with UNICODE defined.
(gl_PREREQ_GETADDRINFO): Drop redundant decl check.
* m4/netdb_h.m4 (gl_NETDB_H_DEFAULTS): Add witness.
* modules/netdb (Makefile.am): Substitute it.
* lib/netdb.in.h (gai_strerror): Declare replacement.
* lib/gai_strerror.c (rpl_gai_strerror): Fix signature.
* doc/posix-functions/gai_strerror.texi (gai_strerror): Document
the fix.
Eric Blake [Thu, 28 Apr 2011 21:24:46 +0000 (15:24 -0600)]
getsockopt: avoid compiler warning
getsockopt.c: In function 'rpl_getsockopt':
getsockopt.c:51:7: warning: passing argument 4 of 'getsockopt' from
incompatible pointer type
c:\dev\msys_setup\mingw\bin\../lib/gcc/mingw32/4.5.0/../../../../include/winsock2.h:543:32:
note: expected 'char *' but argument is of type 'int *'
A simple cast works around the mingw signature lameness. If only
they had picked void* instead of char*, like POSIX says...
* lib/getsockopt.c (rpl_getsockopt): Add a cast for mingw.
Reported by Matthias Bolte.
Eric Blake [Wed, 27 Apr 2011 22:38:05 +0000 (16:38 -0600)]
tests: drop unused link dependency
Ever since commit 2392b18099, openat and fdopendir no longer drag in
xalloc-die through indirect dependencies, so these tests no longer
need $(LIBINTL).
Eric Blake [Wed, 27 Apr 2011 21:54:30 +0000 (15:54 -0600)]
xalloc-oversized: new module
Due to inline functions, mere inclusion of xalloc.h can result
in a link dependency on xalloc_die() on some platforms. However,
there are several modules that want to use just xalloc_oversized
in order to short-circuit the potential to call xalloc_die.
Splitting the macro into a new header and module makes this easy.
* modules/xalloc-oversized: New module.
* modules/xalloc (Depends-on): Add it.
* lib/xalloc.h (xalloc_oversized): Move...
* lib/xalloc-oversized.h: ...into new file.
Eric Blake [Tue, 26 Apr 2011 21:58:03 +0000 (15:58 -0600)]
fchdir: avoid extra chdir and fix test
On Linux, with a forced ac_cv_func_fchdir=no, the test failed
because dup2 was not replaced, all because the shell variable
ac_cv_func_dup2 had not been set yet.
Meanwhile, computing the canonical pathname of a directory on
mingw was rather expensive -- multiple chdir()! -- but nothing
cared whether the name was canonical, just that it was absolute.
* modules/fchdir (Depends-on): Add dosname, filenamecat-lgpl,
getcwd-lgpl.
* lib/fchdir.c (get_name): Any absolute name will do; it does not
have to be canonical.
* m4/dup2.m4 (gl_REPLACE_DUP2): Ensure dup2 is replaced.
Eric Blake [Tue, 26 Apr 2011 21:07:07 +0000 (15:07 -0600)]
save-cwd: reduce default dependency
save-cwd generally needs only a working fchdir or a working
getcwd(NULL,0). If you are not worried about directories whose
absolute name is longer than PATH_MAX, then reducing the default
dependencies reduces the bulk for this module.
However, there are cases where neither function works on Linux
(an unreadable but searchable directory can be opened by O_SEARCH,
except that Linux doesn't implement that yet; and Linux getcwd()
has issues with long absolute names which glibc does not work
around but which the full-blown getcwd module does). So someone
desiring a truly robust solution needs to import the 'getcwd'
module at the same time as 'save-cwd'.
* modules/save-cwd (Depends-on): Use getcwd-lgpl.
* lib/save-cwd.c: Update comments.
* NEWS: Document the semantic change.
Eric Blake [Tue, 26 Apr 2011 20:51:24 +0000 (14:51 -0600)]
getcwd: enhance tests
The existing getcwd was weak, and only tested things guaranteed
by the new getcwd-lgpl. Move those tests into a new file and
strengthen them slightly (such as guaranteeing the ERANGE error
for a non-zero but too-small size). Then copy the m4 tests
for PATH_MAX failures into the GPL getcwd tests, to prove that
our replacement really is fixing the things that cause us to
reject the system getcwd as non-robust.
* tests/test-getcwd-lgpl.c: New file, taken from...
* tests/test-getcwd.c: ...old contents. Rewrite this file to
repeat long path stress tests from m4 probe.
* modules/getcwd-lgpl-tests: New module.
* modules/getcwd-tests (Depends-on): Depend on lgpl tests.
* m4/getcwd-abort-bug.m4: Update comment.
* m4/getcwd-path-max.m4: Likewise.
Eric Blake [Tue, 26 Apr 2011 20:40:58 +0000 (14:40 -0600)]
getcwd-lgpl: new module
For programs that aren't worried about being invoked from an
current working directory longer than PATH_MAX (perhaps because
the program always does chdir to a sane location first), the
getcwd module is overkill, given that all modern portability
targets have a getcwd that works on short names.
* modules/getcwd-lgpl: New module.
* lib/getcwd-lgpl.c: New file.
* doc/posix-functions/getcwd.texi (getcwd): Document it.
* MODULES.html.sh (lacking POSIX:2008): Likewise.
* modules/getcwd (configure.ac): Set C witness.
* m4/getcwd.m4 (gl_FUNC_GETCWD_LGPL): New macro.
Reuben Thomas [Wed, 27 Apr 2011 13:51:22 +0000 (14:51 +0100)]
mkstemp: replace if system version uses wrong permissions
* m4/mkstemp.m4 (gl_FUNC_MKSTEMP): Add test for non-owner
read/write mode bits set in file created by mkstemp.
* doc/posix-functions/mkstemp.texi (mkstemp): Document the fix.
For backwards compatibility, the 4.4BSD join used by NetBSD supports a
"-a" option as if it was "-a 1 -a 2". Unfortunately, this was done in
such a way that "-a 1" and "-a 2" need to be passed as "-a1" or "-a2".
Paul Eggert [Tue, 26 Apr 2011 02:33:14 +0000 (19:33 -0700)]
inttypes-incomplete: new module
* m4/inttypes.m4 (gl_INTTYPES_INCOMPLETE): New macro, containing
all but the PRI* and SCN* parts of gl_INTTYPES_H.
(gl_INTTYPES_PRI_SCN): New macro, containing the PRI* and SCN* parts
of gl_INTTYPES_H.
(gl_INTTYPES_H): Rewrite in terms of these new macros.
(gl_INTTYPES_H_DEFAULTS): Provide defaults for the PRI* and SCN*
parts, in case gl_INTTYPE_PRI_SCN is not invoked.
* modules/imaxabs, modules/imaxdiv, modules/strtoimax (Depends-on):
* modules/strtoumax, modules/xstrtol (Depends-on):
Depend on inttypes-incomplete, not inttypes.
* modules/inttypes-incomplete: New module, containing the contents
of the old modules/inttypes module, except that the Files: section
omits m4/inttypes-pri.m4, and the configure.ac section invokes
gl_INTTYPES_INCOMPLETE rather than gl_INTTYPES_H.
* modules/inttypes (Files): Remove lib/inttypes.in.h, m4/inttypes.m4.
(Depends-on): Depend only on inttypes-incomplete.
(Makefile.am): Remove everything; this is now in inttypes-incomplete.
Paul Eggert [Tue, 26 Apr 2011 00:33:42 +0000 (17:33 -0700)]
strtoimax, strtoumax: simplify, port to HP-UX 11.00 64-bit
This supports apps that need pointers to strtoimax and strtoumax,
and ports to HP-UX 11.00 64.bit, which has macros that expand to
nonexistent functions. See
<http://lists.gnu.org/archive/html/bug-gnulib/2011-04/msg00241.html>
et seq.
* lib/inttypes.in.h (strtoimax, strtoumax): #undef before declaring.
* m4/strtoimax.m4 (gl_FUNC_STRTOIMAX): Don't check whether it's
a macro.
* m4/strtoumax.m4 (gl_FUNC_STRTOUMAX): Likewise.
Bruno Haible [Mon, 25 Apr 2011 18:53:41 +0000 (20:53 +0200)]
strtod: Remove check for strtod, unless supporting old platforms.
* modules/strtod-obsolete: New file.
* m4/strtod-obsolete.m4: New file.
* m4/strtod.m4 (gl_FUNC_STRTOD): Don't check whether strtod is declared
if gl_FUNC_STRTOD_OBSOLETE is not also defined.
* modules/strtod (Depends-on): Add strtod-obsolete.
* doc/posix-functions/strtod.texi: Mention module strtod-obsolete.
Paul Eggert [Mon, 25 Apr 2011 06:29:28 +0000 (23:29 -0700)]
strtoul: remove dependency on strtol
This is so that 'configure' need not check for strtol merely because
the application needs strtoul.
* modules/strtoul (Files): Add lib/strtol.c.
(Depends-on): Remove strtol.
Paul Eggert [Mon, 25 Apr 2011 06:27:44 +0000 (23:27 -0700)]
strtoll: remove dependency on strtol
This is so that 'configure' need not check for strtol merely because
the application needs strtoll.
* modules/strtoll (Files): Add lib/strtol.c.
(Depends-on): Remove strtol.