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.
Jim Meyering [Thu, 24 Nov 2011 21:04:32 +0000 (22:04 +0100)]
test-stdalign.c: comment out long double tests
* tests/test-stdalign.c: Don't try to reduce alignment of long double
variables. That provokes errors like this from gcc-4.7.0 20111124:
error: '_Alignas' specifiers cannot reduce alignment of \
'static_longdouble_alignas'.
Jim Meyering [Tue, 22 Nov 2011 13:51:45 +0000 (14:51 +0100)]
init.sh: make "compare /dev/null FILE" output more readable
* tests/init.sh (compare_): Document the preferred order of arguments.
(emit_diff_u_header_): New function.
(compare_dev_null_): Emit a simulated diff, rather than just the
contents of the unexpected file. Suggestion from Bruno Haible.
Jim Meyering [Mon, 21 Nov 2011 20:50:23 +0000 (21:50 +0100)]
init.sh: work around OSF/1 5.1's mishandling of /dev/null
* tests/init.sh: Make our compare function slightly more portable.
Reported by Bruno Haible in
http://thread.gmane.org/gmane.comp.gnu.grep.bugs/4020
Much improved by Eric Blake.
Bruno Haible [Sun, 20 Nov 2011 23:56:11 +0000 (00:56 +0100)]
getcwd: Work around getcwd bug on AIX 5..7.
* m4/getcwd-path-max.m4 (gl_FUNC_GETCWD_PATH_MAX): Require
AC_CANONICAL_HOST. Assign exit code 31 to the bug seen on AIX 5.1..7.1.
Use a different value for gl_cv_func_getcwd_path_max. Move the
definition of HAVE_PARTLY_WORKING_GETCWD from here...
* m4/getcwd.m4 (gl_FUNC_GETCWD): ... to here. Invoke
gl_FUNC_GETCWD_PATH_MAX also when $gl_cv_func_getcwd_null is 'no'.
Define HAVE_MINIMALLY_WORKING_GETCWD.
* lib/getcwd.c (__getcwd): Don't use the system's getcwd on platforms
where it is not even minimally working, that is, on AIX.
* tests/test-getcwd.c (test_long_name): Distinguish the same cases as
m4/getcwd-path-max.m4.
(main): Update exit code computation.
* doc/posix-functions/getcwd.texi: Mention list of platforms where
getcwd does not handle long file names.
Bruno Haible [Sat, 19 Nov 2011 18:08:02 +0000 (19:08 +0100)]
fstatat: Simplify.
* lib/fstatat.c (AT_FUNC_NAME): Define as fstatat. On platforms where
gnulib should define rpl_fstatat, there is a
"#define fstatat rpl_fstatat" in <sys/stat.h>.