Paul Eggert [Tue, 5 Dec 2006 18:09:17 +0000 (18:09 +0000)]
* lib/utimens.c (futimens) [HAVE_BUGGY_NFS_TIME_STAMPS]: Add a
workaround for this case. It is not autoconfigured now; offhand
it's hard to see how to autoconfigure it.
Paul Eggert [Mon, 4 Dec 2006 07:23:36 +0000 (07:23 +0000)]
* lib/mkdir-p.c (make_dir_parents): Fix race condition when making
a directory that is about to be chowned. Such a directory's
initial file permissions should permit the owner only and this
should not be changed until after the chown, since the group and
other bits would be incorrect if they granted permission before
the chown.
Jim Meyering [Sun, 3 Dec 2006 10:23:10 +0000 (10:23 +0000)]
* lib/fts.c (fts_load): Don't set sp->fts_dev here, since
p->fts_statp may not yet be defined.
(fts_read): Instead, set it in the caller, once p->fts_statp is
sure to be defined, and corresponds to a top-level directory.
Jim Meyering [Sat, 2 Dec 2006 09:18:36 +0000 (09:18 +0000)]
* modules/savewd (Depends-on): Add fcntl_h to avoid self-test
build failure due to missing definition of HAVE_WORKING_O_NOFOLLOW.
Reported by Simon Josefsson.
Paul Eggert [Thu, 30 Nov 2006 23:11:30 +0000 (23:11 +0000)]
* m4/warning.m4: Use the all-permissive copyright notice
recommended by RMS (rather than LGPL).
* m4/vararrays.m4: Likewise.
* m4/flexmember.m4: Likewise.
Paul Eggert [Mon, 27 Nov 2006 07:15:26 +0000 (07:15 +0000)]
Fix some incompatibilities with gcc -ansi -pedantic.
* lib/regex.h (__restrict_arr): Don't use the [restrict] syntax
if compiling pedantically with GCC, unless it's C99 or later.
Don't trust sys/cdefs.h's definition of __restrict_arr, either, as
it mishandles gcc -ansi -pedantic as well.
* lib/regex_internal.h (re_token_t): Don't use enum bitfields
if gcc -pedantic.
* lib/regexec.c (check_node_accept_bytes): Don't use auto
initializers for struct if -pedantic, unless it's C99 or later.
Jim Meyering [Wed, 22 Nov 2006 23:48:30 +0000 (23:48 +0000)]
Work around a compile-time error from the HP-UX 11.00 /bin/cc.
* lib/fts.c (enum Fts_stat): Give this previously-anon enum a name.
(fts_read): Use a temporary to narrow the overused st_size member
before using it in a switch statement. Reported by Matthew Woehlke.
Jim Meyering [Mon, 20 Nov 2006 23:33:31 +0000 (23:33 +0000)]
The beginnings of syntax-related checks for gnulib.
* lib/Makefile: New file.
* lib/t-idcache: New script. Ensure that the two halves of
idcache.c stay in sync.
Paul Eggert [Mon, 20 Nov 2006 22:01:30 +0000 (22:01 +0000)]
* lib/openat.h (rpl_fstatat): New macro, if
[HAVE_OPENAT && ! LSTAT_FOLLOWS_SLASHED_SYMLINK.
(fstatat): Define to rpl_fstatat under the same conditions,
unless COMPILING_FSTATAT.
* m4/openat.m4 (gl_FUNC_OPENAT): Compile fstatat.c too, if fstatat
seems to have the bug.
* lib/fstatat.c: New file.
* modules/openat (Files): Add it.
Jim Meyering [Mon, 20 Nov 2006 10:54:06 +0000 (10:54 +0000)]
* lib/idcache.c: Restore most of the 2006-11-06 patch, so as to
continue using the flexible array member (thus, this module performs
half as many malloc calls), with the addition that...
(getgroup, getuser): Consistently record a non-match via an empty
"name" string, and map an empty string match to a NULL return value.
* modules/idcache (Depends-on): Re-add flexmember.
Paul Eggert [Mon, 20 Nov 2006 09:10:18 +0000 (09:10 +0000)]
* lib/idcache.c: Undo most recent patch, dated 2006-11-06.
It mishandled the case where the group was missing.
Problem reported by Greg Schafer.
* modules/idcache: Likewise.
Bruno Haible [Wed, 15 Nov 2006 20:50:54 +0000 (20:50 +0000)]
No need to invoke gl_FUNC_ALLOCA more than once. But using AC_REQUIRE would
be wrong here, since gl_FUNC_ALLOCA calls AC_FUNC_ALLOCA which has an effect
on @ALLOCA@.
Ralf Wildenhues [Tue, 14 Nov 2006 22:01:14 +0000 (22:01 +0000)]
* MODULES.html.sh (seen_modules, seen_files): New variables.
(func_module): Rewrite to use a few less gnulib-tool and sed
invocations. Avoid a couple of quadratic algorithms for ...
(missed_modules, missed_files): ... these, with ...
(func_append, func_tmpdir): ... these new functions, from
gnulib-tool. Analogously, install traps for cleanup.
Bruno Haible [Mon, 13 Nov 2006 19:07:29 +0000 (19:07 +0000)]
Override also AC_LIBSOURCES. Works around an automake error
"automatically discovered file `error.c' should not be explicitly mentioned"
in some circumstances.
Jim Meyering [Sun, 12 Nov 2006 17:35:38 +0000 (17:35 +0000)]
Make fts (in FTS_CWDFD mode) more efficient by caching a few open
file descriptors. This also averts a failure on systems with
native openat support when a traversed directory lacks "x" access.
* lib/fts_.h: Include "i-ring.h"
(struct FTS) [fts_fd_ring]: New member.
* lib/fts.c (RESTORE_INITIAL_CWD): Also call fd_ring_clear.
(FCHDIR): Add parentheses.
(fd_ring_check, fd_ring_print) [!FTS_DEBUG]: Define away.
(cwd_advance_fd): Add a 3rd parameter. Adjust all callers.
When descending, rather than simply closing the previous
fts_cwd_fd value, push that file descriptor onto the ring.
(same_fd, fd_ring_print, fd_ring_check) [FTS_DEBUG]: New functions.
(fts_open): Initialize the new fd_ring member.
(fts_close): Clear the ring.
(fts_safe_changedir): When possible, use our new fd_ring to skip
the diropen and fstat and dev/ino comparison that would normally
accompany a virtual `chdir ("..")'.
* modules/fts (Depends-on): Add i-ring.
* modules/i-ring: New module.
* lib/i-ring.c, lib/i-ring.h, lib/i-ring-test.c: New files.
* m4/i-ring.m4: New file.
Ralf Wildenhues [Sun, 12 Nov 2006 09:53:16 +0000 (09:53 +0000)]
* gnulib-tool (func_create_testdir): Fix replacement of
`build-aux' in configure.ac. Run autotools in gltests
subdirectory.
(func_create_testdir, func_create_megatestdir, test): There is
no need for '--force' in most autotool invocations in a new
tree. Actually fail the whole test if any of the tools, or the
configure or make stages fail.
Ralf Wildenhues [Sun, 12 Nov 2006 09:50:10 +0000 (09:50 +0000)]
Sync from Automake.
* build-aux/gnupload: Revert last change. Add pointer to upload
instructions of the GNU Maintenance Instructions.
Suggestion by Karl Berry.
Paul Eggert [Wed, 8 Nov 2006 20:13:12 +0000 (20:13 +0000)]
* lib/quotearg.h (quotearg_free): New decl.
* lib/quotearg.c (quotearg_free): New function.
(slot0, nslots, slotvec0, slotvec):
Now file-scope so that quotearg_free can get at them.
Paul Eggert [Wed, 8 Nov 2006 00:22:30 +0000 (00:22 +0000)]
* lib/xalloc.h (XMALLOC, XNMALLOC, XZALLOC, XCALLOC): Move
definitions up, to avoid colliding with change below.
(static_inline) [HAVE_INLINE]: New macro.
(xnmalloc, xnrealloc, x2nrealloc, xcharalloc):
Provide extern decls when !HAVE_INLINE. Do not define unless
static_inline is defined, either by us or by xmalloc.c. Use
static_inline rather than static inline.
(XCALLOC): Optimize sizeof(T) = 1 case.
* lib/xmalloc.c (static_inline) [!HAVE_INLINE]: New macro.