Rationale:
Microsoft renamed the "Win32 API" to "Windows API", as it is available
on both 32-bit and 64-bit Windows systems.
But in gnulib, we treat Cygwin like a Unix platform, therefore the main
line of distinction is between "native Windows" on one side and Unix/
POSIX systems on the other side. More details in
<https://lists.gnu.org/archive/html/bug-gnulib/2012-01/msg00027.html>.
Suggested by Paul Eggert.
Bruno Haible [Tue, 3 Jan 2012 12:52:36 +0000 (13:52 +0100)]
isatty: Support for MSVC 9.
* doc/posix-functions/isatty.texi: Mention the MSVC problem.
* lib/isatty.c: Include <errno.h>, msvc-inval.h.
(_isatty_nothrow): New function.
(isatty): Use it instead of _isatty.
(IsConsoleHandle): Add comment, from Paolo Bonzini.
* lib/poll.c (IsConsoleHandle): Likewise.
* lib/select.c (IsConsoleHandle): Likewise.
* m4/isatty.m4 (gl_FUNC_ISATTY): Fix comment. Reported by Eli Zaretskii.
(gl_PREREQ_ISATTY): New macro.
* modules/isatty (Depends-on): Add msvc-inval.
(configure.ac): Invoke gl_PREREQ_ISATTY.
Jim Meyering [Tue, 3 Jan 2012 10:35:43 +0000 (11:35 +0100)]
maint.mk: remove temporary transition aid from over 1.5 years ago
* top/maint.mk (_prohibit_regexp): Remove definition whose sole
purpose was to aid in the transition (avoiding silent malfunction)
from that old name to the new _sc_search_regexp. This shim was
added by commit 219c504b.
Jim Meyering [Tue, 3 Jan 2012 07:21:09 +0000 (08:21 +0100)]
init.sh: do not try to accommodate compare arguments starting with "-"
* tests/init.sh (compare_dev_null_): Do not try to accommodate
compare arguments that start with "-". Besides, we do not worry
about this when invoking diff or cmp; why start now with sed?
Using "--" to separate options from argument would trigger sed
failure in at least Solaris 7, HP-UX 11.00, IRIX 6.5, FreeBSD 6.4,
OpenBSD 4.9 and NetBSD 5.1. Reported by Bruno Haible.
Bruno Haible [Tue, 3 Jan 2012 02:56:16 +0000 (03:56 +0100)]
Enhance tests for module 'isatty'.
* modules/isatty-tests (Depends-on): Add pipe-posix.
* tests/test-isatty.c: Include <fcntl.h>.
(DEV_NULL): New macro.
(main): Test the resut of isatty() also on regular files, pipes, and
/dev/null.
Bruno Haible [Tue, 3 Jan 2012 02:54:08 +0000 (03:54 +0100)]
New module 'isatty'.
* lib/unistd.in.h (isatty): New declaration.
* lib/isatty.c: New file, based on an idea of
Bastien Roucariès <roucaries.bastien@gmail.com>.
* m4/isatty.m4: New file.
* m4/unistd_h.m4 (gl_UNISTD_H): Test whether isatty is declared.
(gl_UNISTD_H_DEFAULTS): Initialize GNULIB_ISATTY, REPLACE_ISATTY.
* modules/unistd (Makefile.am): Substitute GNULIB_ISATTY,
REPLACE_ISATTY.
* modules/isatty: New file.
* doc/posix-functions/isatty.texi: Mention the new module.
Suggested by Paolo Bonzini.
Jim Meyering [Fri, 30 Dec 2011 18:00:49 +0000 (19:00 +0100)]
gitlog-to-changelog: don't malfunction when name contains %-directive
* build-aux/gitlog-to-changelog (main): Don't let a %-directive
in a name string cause trouble. E.g., with a user name of "%s",
gitlog-to-changelog would fail with "Missing argument in sprintf at..."
* build-aux/gitlog-to-changelog (main): Map the string, at beginning
of line in a git commit log, "Copyright-paperwork-exempt: yes", to
the " (tiny change)" notation that is appended to the standard
ChangeLog "date name email" header line.
When using gnulib-tool's --with-tests option and any module that
depends on test-framework-sh, "make dist" would fail due to the
lack of init.sh *in lib/*. The EXTRA_DIST += init.sh is required
in the gltests directory, and not in the gllib/ directory.
One way to work around that is to move the EXTRA_DIST += init.sh
from the primary module to the -tests one:
* modules/test-framework-sh-tests (EXTRA_DIST): Add init.sh here, ...
* modules/test-framework-sh (Makefile.am): ...not here.
Reported by Tom G. Christensen in
http://thread.gmane.org/gmane.comp.lib.gnulib.bugs/29519
Pádraig Brady [Sat, 31 Dec 2011 11:03:58 +0000 (11:03 +0000)]
canonicalize: only stat() when required
* lib/canonicalize.c (canonicalize_filename_mode):
Avoid calling l?stat() when both CAN_MISSING,
and CAN_NOLINKS are set, as then we neither need
to resolve symlinks or test component existence.
Pádraig Brady [Thu, 29 Dec 2011 23:49:53 +0000 (23:49 +0000)]
canonicalize: add support for not resolving symlinks
This will initially be used by a new coreutils realpath command.
* lib/canonicalize.h: Add the CAN_NOLINKS flag to
indicate we don't want to follow symlinks. Also
provide CAN_MODE_MASK to aid setting these existing
mutually exclusive values.
* lib/canonicalize.c (canonicalize_filename_mode):
Extract the flags from can_mode parameter, which
are currently just used to select between stat()
and lstat(). Also ensure that mutually exclusive
values are flagged immediately as invalid.
* tests/test-canonicalize.c: Verify symlinks are
not followed, and that invalid flag combinations
are diagnosed.
Jim Meyering [Sun, 25 Dec 2011 15:14:36 +0000 (16:14 +0100)]
gitlog-to-changelog: do not clump multi-paragraph entries
Identical header lines (date,name,email+coauthors) are suppressed,
thus putting all entries with those same characteristics under
a single header. However, when a log entry consists of two or
more paragraphs, it may not be clear where it starts and ends.
This change makes it so that such an entry is always separated
from others by a header line, even when that header would
otherwise be suppressed.
* build-aux/gitlog-to-changelog: Implement the above.
Inspired by a related request from Stefano Lattarini in
http://thread.gmane.org/gmane.comp.lib.gnulib.bugs/29456
Jim Meyering [Fri, 23 Dec 2011 15:44:55 +0000 (16:44 +0100)]
test-framework-sh: distribute init.sh
* modules/test-framework-sh (EXTRA_DIST): Append init.sh.
Otherwise, "make -C gnulib-tests check" (at least in grep) would
fail due to the lack of init.sh.
Jim Meyering [Thu, 22 Dec 2011 11:42:32 +0000 (12:42 +0100)]
init.sh: avoid unwarranted test failure when using "set -x"
* tests/init.sh (compare): Ignore nonzero exit from compare_dev_null_.
Otherwise, in a test script that uses "set -x" (like many in vc-dwim)
a use like "compare exp out" would get evoke an unconditional failure.
Alfred M. Szmidt [Wed, 21 Dec 2011 09:47:03 +0000 (10:47 +0100)]
bootstrap: fix it to honor $ACLOCAL_FLAGS once again
The 2011-12-17 change, commit 767ccd40, replaced a manual invocation
of aclocal that used explicit $ACLOCAL_FLAGS with an invocation of
autoreconf that did not.
* build-aux/bootstrap: Use $ACLOCAL_FLAGS when invoking autoreconf.
Reported by Mats Erik Andersson <gnu@gisladisker.se>.
Jim Meyering [Sat, 17 Dec 2011 16:00:44 +0000 (17:00 +0100)]
bootstrap: remove some now-unneeded code
This script arose back when gnulib-tool was young.
Since then, it has seen improvements that render much of this
script unnecessary. In particular, it can now make symlinks
to the files it uses. Also, I no longer see as much value in
marking files as read-only via comments.
If you relied on the symlink-creation feature of the preceding
version of this script, you can get most of that functionality
by adding the --symlink option to the definition of
gnulib_tool_option_extras in your bootstrap.conf file.
* build-aux/bootstrap (AUTOPOINT, AUTORECONF): Factor out definitions.
Run autopoint and libtoolize *before* gnulib-tool.
After it, run an abbreviated autoreconf, rather than a loop around
all tools.
(slirp, bt_mark_as_generated): Remove functions.
Jim Meyering [Sat, 17 Dec 2011 15:28:55 +0000 (16:28 +0100)]
bootstrap: correct the recent buildreq change
The 2011-12-07 commit, 39f5f1e4, omitted some '*'s, and thus
had no effect.
* build-aux/bootstrap (buildreq): Bracket each search term with
"*...*", so that the shell "case" statement works as intended.
Add comments.
build: let bootstrap resort to wget for downloading .po files
* build-aux/bootstrap (download_po_files): Fallback to wget when
downloading the .po files via rsync failed. This is necessary to
bootstrap behind a strict firewall.
Paul Eggert [Thu, 15 Dec 2011 19:48:25 +0000 (11:48 -0800)]
stdint: don't assume C++11 when compiling with g++
Problem reported for glibc 2.14 and g++ by Alexander V. Lukyanov in
<http://lists.gnu.org/archive/html/bug-gnulib/2011-12/msg00099.html>.
* m4/stdint.m4 (gl_STDINT_H): Don't go to extra work to make it
work also in C++ before C++11, as that improperly inhibits
generating a substitute stdint.h for that case.
Alex Nelson [Wed, 14 Dec 2011 02:52:59 +0000 (18:52 -0800)]
strftime-tests: also test nanoseconds
The test-strftime program did not test the display of nanoseconds. This
patch clarifies the expected output for a number of nanoseconds with
trailing zeroes.
* tests/test-strftime.c (T): Add a test of %N. Signed-off-by: Alex Nelson <ajnelson@cs.ucsc.edu>
Paul Eggert [Tue, 13 Dec 2011 23:27:41 +0000 (15:27 -0800)]
inttypes, stdint: add C++11 support
C++11 says there's no need to define __STDC_CONSTANT_MACROS etc.
when including inttypes.h and stdint.h. Support this change to
the standard.
* doc/posix-headers/inttypes.texi (inttypes.h):
* doc/posix-headers/stdint.texi (stdint.h): Document this.
* lib/inttypes.in.h (__STDC_FORMAT_MACROS) [! __cplusplus]:
Define if not defined already, for the benefit of pre-C++11 hosts.
Define the standard format macros (e.g., PRId8) always.
* lib/stdint.in.h (__STDC_CONSTANT_MACROS, __STDC_LIMIT_MACROS):
Likewise, if __cpluspus. Define the standard constant and limit
macros (e.g., INT8_C, INT8_MAX) always.
* m4/inttypes.m4 (gl_INTTYPES_INCOMPLETE): Do not define
GL_TRIGGER_STDC_LIMIT_MACROS or __STDC_LIMIT_MACROS; no longer needed.
* m4/stdint.m4 (gl_STDINT_H): Update comments about these macros.
* tests/test-inttypes.c (__STDC_LIMIT_MACROS, __STDC_CONSTANT_MACROS)
(__STDC_FORMAT_MACROS): Do not define, since we assume C++11 API now.
* tests/test-stdint.c (__STDC_LIMIT_MACROS, __STDC_CONSTANT_MACROS):
Likewise.
Paul Eggert [Mon, 12 Dec 2011 16:13:33 +0000 (08:13 -0800)]
nonblocking tests: Fix test failure on Linux/MIPS.
Suggested by Prerna Saxena in
<http://lists.gnu.org/archive/html/bug-gnulib/2011-12/msg00080.html>.
* tests/test-nonblocking-pipe.h (PIPE_DATA_BLOCK_SIZE) [Linux/PPC64]:
Set to 1100000.
Jim Meyering [Mon, 12 Dec 2011 09:57:17 +0000 (10:57 +0100)]
argmatch: don't hard-code `' when listing valid option arguments
* lib/argmatch.c (argmatch_valid): Don't hard-code `%s'. Instead,
use the quote function to add quotes. Use fputs rather than
fprintf for the format string with no format directive.
Eric Blake [Wed, 7 Dec 2011 16:51:21 +0000 (09:51 -0700)]
bootstrap: detect tools required by gnulib-tool
List tools needed by gnulib-tool, whether or not the project
also requires the tools in cfg.mk $buildreq. In particular,
detect if the project uses gnulib-local diffs, in which case
patch is a prerequisite.
* build-aux/bootstrap (buildreq): Provide minimum implicit
dependencies.
* DEPENDENCIES: Mention patch as a prereq.
Bruno Haible [Mon, 5 Dec 2011 02:46:40 +0000 (03:46 +0100)]
sethostname: Port to Windows platforms.
* lib/sethostname.c: Provide an alternate implementation for Windows
platforms.
* tests/test-sethostname2.c (geteuid): Redefine on Cygwin.
(main): Skip the test if sethostname() fails with EPERM. On Windows
platforms, don't check the result of gethostname().
Bruno Haible [Sat, 3 Dec 2011 15:19:56 +0000 (16:19 +0100)]
gnulib-tool: Verify that the License field is present and non-empty.
* gnulib-tool (func_get_license_raw): New function, extracted from
func_get_license.
(func_get_license): Use it. Warn if the module is not a test module and
has no license.
Suggested by Jim Meyering.
Bruno Haible [Sat, 3 Dec 2011 14:57:00 +0000 (15:57 +0100)]
sethostname tests: Fix link error on mingw.
* tests/test-sethostname1.c: New file, extracted from
tests/test-sethostname.c.
* tests/test-sethostname2.c: New file, extracted from
tests/test-sethostname.c.
* tests/test-sethostname.c: Remove file.
* modules/sethostname-tests (Files): Add tests/test-sethostname1.c,
tests/test-sethostname2.c. Remove tests/test-sethostname.c.
(Depends-on): Add gethostname.
(Makefile.am): Compile both test-sethostname1 and test-sethostname2.
Link the latter with $(GETHOSTNAME_LIB).
Bruno Haible [Sat, 3 Dec 2011 14:28:47 +0000 (15:28 +0100)]
sethostname tests: Fix compilation error on mingw.
* tests/test-sethostname.c: Don't include <sys/types.h>.
(geteuid): Use a dummy value without uid_t.
* modules/sethostname-tests (Depends-on): Remove sys_types.
Bruno Haible [Sat, 3 Dec 2011 13:50:45 +0000 (14:50 +0100)]
Tweak last commit.
* modules/sethostname-tests (Files): Sort by decreasing importance.
(configure.ac): Check for geteuid.
* tests/test-sethostname.c (main): Emit error messages to stderr. Skip
the test when there's nothing to test. Drop an unnecessary cast.
Improve an error message. Verify that the final sethostname() call
succeeds.
Ben Walton [Sat, 3 Dec 2011 04:04:18 +0000 (23:04 -0500)]
Integrate the sethostname module into unistd
Ensure that sethostname is accounted for within the unistd module.
* lib/unistd.in.h: Integrate the SETHOSTNAME preprocessor handling
into the unistd.h header.
* m4/unistd_h.m4: Setup the autoconf handling for the SETHOSTNAME
preprocessor directives.
* modules/unistd: Setup the Makefile substitutions of the
SETHOSTNAME preprocessor directives.
Signed-off-by: Ben Walton <bwalton@artsci.utoronto.ca>
Bruno Haible [Sat, 3 Dec 2011 13:09:14 +0000 (14:09 +0100)]
Tweak last commit.
* lib/sethostname.c: Don't include <string.h>.
(sethostname): No need to copy the argument string to the stack. Don't
call clearerr. Preserve errno when fprintf failed.
* m4/sethostname.m4 (gl_FUNC_SETHOSTNAME): Comment about HOST_NAME_MAX.
Don't invoke AC_REPLACE_FUNCS.
* modules/sethostname (Link): Remove empty section.
* doc/glibc-functions/sethostname.texi: Gnulib does not fix the ENOSYS
failure problem.
Ben Walton [Sat, 3 Dec 2011 04:04:17 +0000 (23:04 -0500)]
Add a new sethostname module
Define sethostname on platforms that do not provide the declaration.
Provide a function for platforms that lack it. The general handling
of the provided function is to simply return -1 and set errno to
ENOSYS. A specific handler is provided for Minix.
* lib/sethostname.c (sethostname): New file. Provide sethostname
for systems that lack it.
* m4/sethostname.m4 (gl_FUNC_SETHOSTNAME): New file. Detection of
sethostname declaration and function.
* modules/sethostname: New file. Define the sethostname module.
Signed-off-by: Ben Walton <bwalton@artsci.utoronto.ca>
Paul Eggert [Fri, 2 Dec 2011 09:34:53 +0000 (01:34 -0800)]
stdalign: port to Clang 3.0
Problem reported by Simon Josefsson in
<http://lists.gnu.org/archive/html/bug-gnulib/2011-12/msg00005.html>.
* doc/posix-headers/stdalign.texi (stdalign.h): Mention Clang 3.0,
which has <stdalign.h> but which does not define alignof.
* m4/stdalign.m4 (gl_STDALIGN_H): Check for Clang 3.0's problem.
Jim Meyering [Wed, 30 Nov 2011 08:35:00 +0000 (09:35 +0100)]
hash: mark a few floating point constants with "f" suffix
* lib/hash.c (DEFAULT_GROWTH_THRESHOLD, DEFAULT_GROWTH_FACTOR)
(DEFAULT_SHRINK_THRESHOLD, DEFAULT_SHRINK_FACTOR): Mark literal
floating point constants with "f", since they're destined to be
saved/used as "float"s.
Matthew Wala [Wed, 30 Nov 2011 00:44:15 +0000 (01:44 +0100)]
Avoid subtracting two pointers that don't point into the same block.
* lib/argp-help.c (hol_append): Reorder pointer subtractions so that
only pointers into the same memory block are subtracted. We cannot
assume that sizeof (ptrdiff_t) == sizeof (void *).
Eric Blake [Tue, 29 Nov 2011 21:37:14 +0000 (14:37 -0700)]
maint.mk: add syntax check for use of compare from init.sh
Comparing expected against actual gives more consistent diff listings
when reporting test failures. Enforce this idiom on test files
that use init.sh, and allow projects to recognize an alternate
pattern for recognizing tests scripts that use a compare function.
* top/maint.mk (sc_prohibit_reversed_compare_failure): New rule,
moved here from coreutils.
Jim Meyering [Mon, 28 Nov 2011 09:24:04 +0000 (10:24 +0100)]
propername: do not mark proper_name with the const attribute
* lib/propername.h (proper_name): Do *not* mark as _GL_ATTRIBUTE_CONST,
since it examines data pointed to by its parameter.
* lib/propername.c (proper_name): Instead, add a pragma to suppress
the suggestion from -Wsuggest-attribute=const.
Bruno Haible [Sun, 27 Nov 2011 23:43:01 +0000 (00:43 +0100)]
Don't set REPLACE_FOO to 1 if HAVE_FOO is 0.
* m4/opendir.m4 (gl_FUNC_OPENDIR): Don't set REPLACE_OPENDIR to 1 if
HAVE_OPENDIR is 0.
* m4/closedir.m4 (gl_FUNC_CLOSEDIR): Don't set REPLACE_CLOSEDIR to 1 if
HAVE_CLOSEDIR is 0.
* m4/dup2.m4 (gl_FUNC_DUP2): Don't set REPLACE_DUP2 to 1 if HAVE_DUP2
is 0.
* m4/dup3.m4 (gl_FUNC_DUP3): Update comments.
Bruno Haible [Sun, 27 Nov 2011 23:04:12 +0000 (00:04 +0100)]
getcwd: Fix bug from 2011-08-17.
* m4/getcwd.m4 (gl_FUNC_GETCWD): Set REPLACE_GETCWD to 1 only on
platforms that need it.
* m4/getcwd-abort-bug.m4 (gl_FUNC_GETCWD_ABORT_BUG): Consider a return
code of 4 to be a failure, not a success. This ensures that
REPLACE_GETCWD becomes 1 on OpenBSD 4.9 and NetBSD 5.1.
Bruno Haible [Sun, 27 Nov 2011 14:54:08 +0000 (15:54 +0100)]
binary-io tests: Avoid test failure on mingw when libtool is used.
* tests/test-binary-io.c (main): Don't remove t-bin-out2.tmp here.
Don't verify the size of t-bin-out1.tmp here.
* tests/test-binary-io.sh: Verify it here.
Reported by Simon Josefsson.
Bruno Haible [Sat, 26 Nov 2011 20:08:25 +0000 (21:08 +0100)]
Fix conflict between two instantiations of module 'unistd'.
* gnulib-tool (func_emit_autoconf_snippet): Substitute
${include_guard_prefix} also in the autoconf snippet.
* m4/getopt.m4 (gl_FUNC_GETOPT_POSIX): Don't set GNULIB_UNISTD_H_GETOPT.
* m4/unistd_h.m4 (gl_UNISTD_H_DEFAULTS): Don't initialize
GNULIB_UNISTD_H_GETOPT.
* modules/getopt-posix (configure.ac): Set the
GNULIB_${gl_include_guard_prefix}_UNISTD_H_GETOPT variable.
* modules/getopt-gnu (configure.ac): Likewise.
* modules/unistd (Makefile.am): Change the substitution value of
GNULIB_UNISTD_H_GETOPT to depend on the include guard prefix.
Reported by Simon Josefsson.
* tests/test-update-copyright.sh: Use $TMP.? (not $TMP.*), to work
around false positive failure on Cygwin/Windows. The latter was
matching erroneously-created files with names like
update-copyright.test-ex.4.bak. Reported by Simon Josefsson.