pspp
14 years agotest-getopt: test stderr behavior
Eric Blake [Wed, 2 Dec 2009 22:48:08 +0000 (15:48 -0700)]
test-getopt: test stderr behavior

Portions of this commit are commented out because they tickle
glibc bugs.  For a real-life example of the bug:

$ env -ua -:
env: invalid option -- :
Try `env --help' for more information.
$ env -:
env: invalid option -- :
Try `env --help' for more information.
$ env -+
env: invalid option -- +
Try `env --help' for more information.
$ env -ua -+
Try `env --help' for more information.

Notice that when -+ is not given as the first argument, the
error message is mistakenly suppressed.

* modules/getopt-posix-tests (Depends-on): Add dup2.
* tests/test-getopt.c (ASSERT): Avoid stderr.
(main): Move stderr to a temporary file.
* tests/test-getopt.h (getopt_loop): No longer manipulate opterr.
Instead, add parameter to inform caller if output occurred.
(test_getopt): Adjust all tests to expect silence, and add new
tests of leading ":".
* doc/glibc-functions/getopt_long.texi (getopt_long): Document
glibc shortcomings with leading "-:" or "+:" in optstring.
* doc/glibc-functions/getopt_long_only.texi (getopt_long_only):
Likewise.
* doc/posix-functions/getopt.texi (getopt): Likewise.

Signed-off-by: Eric Blake <ebb9@byu.net>
14 years agotest-getopt: enhance test
Eric Blake [Wed, 2 Dec 2009 00:21:34 +0000 (17:21 -0700)]
test-getopt: enhance test

Add coverage of optind==0 for getopt_long, since coreutils
depends on it.  Also test an optstring containing "W;", since
that tends to expose corner-case bugs (even in glibc, so the
test is weaker than it could be).

* m4/getopt.m4 (gl_GETOPT_CHECK_HEADERS): Require that getopt_long
supports optind=0.
* tests/test-getopt.c (OPTIND_MIN): Move...
* tests/test-getopt.h (OPTIND_MIN): ...here.
* tests/test-getopt_long.h (test_getopt_long): Add more coverage.
Require that optind=0 works, since modern BSD supports it in
addition to optreset, and since coreutils expects it.
(test_getopt_long_only): New test.
* doc/glibc-functions/getopt_long.texi (getopt_long): Document
glibc shortcomings with 'W;', and enforcement of optind=0.
* doc/glibc-functions/getopt_long_only.texi (getopt_long_only):
Likewise.

14 years agoTweak last commit.
Bruno Haible [Tue, 22 Dec 2009 00:58:14 +0000 (01:58 +0100)]
Tweak last commit.

14 years agolocalename: Improvements for MacOS X and Cygwin.
Bruno Haible [Tue, 22 Dec 2009 00:35:04 +0000 (01:35 +0100)]
localename: Improvements for MacOS X and Cygwin.

14 years agolocalename: Update list of Win32 locale ids.
Bruno Haible [Tue, 22 Dec 2009 00:08:25 +0000 (01:08 +0100)]
localename: Update list of Win32 locale ids.

14 years agotest-utimens: avoid spurious failure
Eric Blake [Mon, 21 Dec 2009 14:00:13 +0000 (07:00 -0700)]
test-utimens: avoid spurious failure

Fixes a spurious failure on ext3, with one-second resolution,
now that ctime effects are being tested for inequality.

* tests/test-chown.h (nap): Factor...
* tests/nap.h: ...into new file.
* tests/test-lchown.h (nap): Avoid duplication.
* tests/test-utimens-common.h (nap): Use shared implementation,
necessary on file systems with 1-second resolution.
* modules/chown-tests (Files): Include new file.
* modules/fdutimensat-tests (Files): Likewise.
* modules/futimens-tests (Files): Likewise.
* modules/lchown-tests (Files): Likewise.
* modules/openat-tests (Files): Likewise.
* modules/utimens-tests (Files): Likewise.
* modules/utimensat-tests (Files): Likewise.

Signed-off-by: Eric Blake <ebb9@byu.net>
14 years agofutimens, utimensat: work around Linux bug
Eric Blake [Thu, 17 Dec 2009 14:32:00 +0000 (07:32 -0700)]
futimens, utimensat: work around Linux bug

futimens is trivial - let fdutimens do the work.  utimensat
is tougher: we don't want to call into local_utimensat,
because that can cause unnecessary chdir.  So we have to
repeat the logic from utimens.c.

* m4/futimens.m4 (gl_FUNC_FUTIMENS): Detect ctime bug.
* m4/utimensat.m4 (gl_FUNC_UTIMENSAT): Likewise.
* lib/utimensat.c (rpl_utimensat): Work around it.
* lib/futimens.c (rpl_futimens): Adjust comment.

14 years agoutimens: work around Linux ctime bug
Eric Blake [Thu, 17 Dec 2009 23:57:37 +0000 (16:57 -0700)]
utimens: work around Linux ctime bug

Force a ctime update by using stat() before any utimensat call
with mtime of UTIME_OMIT.  But avoid extra stat()s in later
calls, by doing extra work on the first instance in order to
cache whether the bug is actually present.

* lib/utimens.c (detect_ctime_bug): New helper function.
(update_timespec): Differentiate between workaround needed for
this bug vs. what is needed for systems that lack utimensat.
(fdutimens, lutimens): Work around bug.

Signed-off-by: Eric Blake <ebb9@byu.net>
14 years agoutimens: check for ctime update
Eric Blake [Thu, 17 Dec 2009 19:30:47 +0000 (12:30 -0700)]
utimens: check for ctime update

futimens/utimensat on Linux fails to bump ctime if mtime is
UTIME_OMIT and atime is specified.

* tests/test-utimens-common.h (check_ctime): Define.
* tests/test-utimens.h (test_utimens): Expose the Linux bug.
* tests/test-futimens.h (test_futimens): Likewise.
* tests/test-lutimens.h (test_lutimens): Likewise.
* doc/posix-functions/futimens.texi (futimens): Document the bug.
* doc/posix-functions/utimensat.texi (utimensat): Likewise.

Signed-off-by: Eric Blake <ebb9@byu.net>
14 years agoCorrect position of 'Applicability' section.
Bruno Haible [Sat, 19 Dec 2009 21:44:53 +0000 (22:44 +0100)]
Correct position of 'Applicability' section.

14 years agodprintf-posix: Check against memory leak fixed on 2009-12-15.
Bruno Haible [Sat, 19 Dec 2009 21:17:02 +0000 (22:17 +0100)]
dprintf-posix: Check against memory leak fixed on 2009-12-15.

14 years agofprintf-posix: Check against memory leak fixed on 2009-12-15.
Bruno Haible [Sat, 19 Dec 2009 21:15:32 +0000 (22:15 +0100)]
fprintf-posix: Check against memory leak fixed on 2009-12-15.

14 years agodirfd: fix prototype
Eric Blake [Sat, 19 Dec 2009 18:49:32 +0000 (11:49 -0700)]
dirfd: fix prototype

Fix prototype to match POSIX.

* lib/dirent.in.h (dirfd): Argument is not const, per POSIX.
* lib/dirfd.c (dirfd): Likewise.

Signed-off-by: Eric Blake <ebb9@byu.net>
14 years agocanonicalize: reduce memory usage
Eric Blake [Sat, 19 Dec 2009 16:28:36 +0000 (09:28 -0700)]
canonicalize: reduce memory usage

canonicalize was returning a 4k buffer for everything, even though
the majority of canonical path names are much shorter.  This
resulted in a lot of unused memory, which in turn made tar run
out of memory when tracking a lot of files:
http://lists.gnu.org/archive/html/bug-tar/2009-12/msg00011.html

* lib/canonicalize.c (canonicalize_filename_mode): Trim the
allocation to size.
Reported by Solar Designer <solar@openwall.com>.

Signed-off-by: Eric Blake <ebb9@byu.net>
14 years agoNew module attribute 'Applicability'.
Bruno Haible [Sat, 19 Dec 2009 14:27:58 +0000 (15:27 +0100)]
New module attribute 'Applicability'.

14 years agofflush: tweak
Bruno Haible [Sat, 19 Dec 2009 11:30:24 +0000 (12:30 +0100)]
fflush: tweak

14 years agoFix typo in comment.
José E. Marchesi [Sat, 19 Dec 2009 10:06:10 +0000 (11:06 +0100)]
Fix typo in comment.

14 years agofcntl: use to simplify other modules
Eric Blake [Wed, 16 Dec 2009 17:07:13 +0000 (10:07 -0700)]
fcntl: use to simplify other modules

Let fcntl do the work, instead of copying code into other modules.

* modules/cloexec (Depends-on): Add fcntl.
* modules/fchdir (Depends-on): Likewise.
* modules/fd-safer-flag (Depends-on): Likewise.
* modules/unistd-safer (Depends-on): Likewise.
* modules/dup3 (configure.ac): Set module indicator.
* m4/fchdir.m4 (gl_FUNC_FCHDIR): Replace fcntl if fchdir is
missing.
* lib/fchdir.c (_gl_register_dup): Fix comment.
* lib/cloexec.c (dup_cloexec): Simplify, by relying on fcntl.
* lib/dup-safer.c (dup_safer): Likewise.
* lib/dup-safer-flag.c (dup_safer_flag): Likewise.
* lib/dup3.c (dup3): Likewise.
* tests/test-fchdir.c (main): Enhance test.
Fixes a dup_cloexec bug reported by Ondřej Vašík.

Signed-off-by: Eric Blake <ebb9@byu.net>
14 years agofcntl: port portions of fcntl to mingw
Eric Blake [Wed, 16 Dec 2009 16:11:32 +0000 (09:11 -0700)]
fcntl: port portions of fcntl to mingw

Borrow ideas from dup_cloexec and dup3 to implement F_DUPFD and
F_DUPFD_CLOEXEC.  Support querying the inheritance status via
F_GETFD, but for now, no support for changing with F_SETFD.
The remaining portions of fcntl fail with EINVAL.

* m4/fcntl.m4 (gl_FUNC_FCNTL): Also build fcntl.c on mingw.
* lib/fcntl.c (fcntl) <F_DUPFD, F_DUPFD_CLOEXEC, F_GETFD>: Provide
replacement for mingw.
* modules/fcntl (Description): Update.
(Depends-on): Add dup2.
* m4/fcntl_h.m4 (gl_FCNTL_H_DEFAULTS): Add witness.
* modules/fcntl-h (Makefile.am): Substitute it.
* lib/fcntl.in.h (fcntl): Update declaration.
(F_DUPFD, F_GETFD): New macros, when needed.
* doc/posix-headers/fcntl.texi (fcntl.h): Update documentation.
* doc/posix-functions/fcntl.texi (fcntl): Likewise.
* tests/test-fcntl.c (check_flags, main): Enhance test for items
we now guarantee.

Signed-off-by: Eric Blake <ebb9@byu.net>
14 years agofcntl: work around cygwin bug in F_DUPFD
Eric Blake [Tue, 8 Dec 2009 19:10:52 +0000 (12:10 -0700)]
fcntl: work around cygwin bug in F_DUPFD

fcntl(0,F_DUPFD,10000000) mistakenly failed with EMFILE
instead of EINVAL, and fcntl(0,F_DUPFD,-1) mistakenly passed.

* m4/fcntl.m4 (gl_REPLACE_FCNTL): New macro.
(gl_FUNC_FCNTL): Use it.  Test for F_DUPFD bug.
* lib/fcntl.c (rpl_fcntl) <F_DUPFD>: Work around it.
<F_DUPFD_CLOEXEC>: Reduce calls to _gl_register_dup.
* doc/posix-functions/fcntl.texi (fcntl): Document it.

Signed-off-by: Eric Blake <ebb9@byu.net>
14 years agofcntl: support F_DUPFD_CLOEXEC on systems with fcntl
Eric Blake [Mon, 7 Dec 2009 18:50:59 +0000 (11:50 -0700)]
fcntl: support F_DUPFD_CLOEXEC on systems with fcntl

Implement F_DUPFD_CLOEXEC.  The unit test still fails on systems
with other fcntl bugs (such as cygwin 1.5 mishandling F_DUPFD,
or mingw lacking fcntl altogether).  Passes on Linux, both with
and without kernel support, and on cygwin 1.7.

* modules/fcntl (Files): List new files.
(configure.ac): Run a test.
* m4/fcntl.m4 (gl_FUNC_FCNTL): New file.
* lib/fcntl.c (rpl_fcntl): Likewise.
* m4/fcntl_h.m4 (gl_FCNTL_H_DEFAULTS): Add witness defaults.
(gl_FCNTL_H): Always replace fcntl.h.
* modules/fcntl-h (Makefile.am): Substitute witnesses.
* lib/fcntl.in.h (fcntl): Declare replacement.
(F_DUPFD_CLOEXEC, GNULIB_defined_F_DUPFD_CLOEXEC): New macro when
needed, plus a witness.
* doc/posix-functions/fcntl.texi (fcntl): Document this.
* doc/posix-headers/fcntl.texi (fcntl.h): Likewise.
* tests/test-fcntl.c: New file.
* modules/fcntl-tests: Likewise.

Signed-off-by: Eric Blake <ebb9@byu.net>
14 years agobinary-io: avoid potential compilation warning
Eric Blake [Wed, 16 Dec 2009 16:24:23 +0000 (09:24 -0700)]
binary-io: avoid potential compilation warning

* lib/binary-io.h [__DJGPP__]: Avoid null preprocessor
directives.

Signed-off-by: Eric Blake <ebb9@byu.net>
14 years agofflush: avoid compilation error on NetBSD
Eric Blake [Mon, 14 Dec 2009 22:42:13 +0000 (15:42 -0700)]
fflush: avoid compilation error on NetBSD

On NetBSD, the system <stdio.h> header contains:
|#if (!defined(_ANSI_SOURCE) && !defined(__STRICT_ANSI__)) || defined(_LIBC)
|typedef __off_t fpos_t;
|#else
|typedef struct __sfpos {
|    __off_t _pos;
|} fpos_t;
|#endif

Thus, based on compiler flags (such as using 'gcc -ansi' or the
Intel compiler), it is an error to directly set fpos_t=off_t.

* lib/fflush.c (update_fpos_cache): Use a union to safely convert
between off_t and fpos_t, since the latter is sometimes a struct.
* lib/fseeko.c (rpl_fseeko): Likewise.
Reported by Alexander Nasonov <alnsn@yandex.ru>.

Signed-off-by: Eric Blake <ebb9@byu.net>
14 years agofcntl-h, stdio, sys_ioctl: fix declarations
Eric Blake [Tue, 15 Dec 2009 13:51:24 +0000 (06:51 -0700)]
fcntl-h, stdio, sys_ioctl: fix declarations

We cannot use a function-like macro to provide a link-time warning
of a variadic function during GNULIB_POSIXCHECK; at least, not
without assuming C99 variadic macros.  We can, however,
use an object-like macro (as was already done for printf).

On the other hand, this patch is only a stop-gap measure to fix
an obvious bug; a more complete patch that switches from a
link-time warning (specific to GNU ld, gcc, and ELF image) to
a compile-time attribute is in the works.

* lib/stdio.in.h (dprintf): Use of link warning on a variadic
function must not take arguments.
* lib/sys_ioctl.in.h (ioctl): Likewise.
* lib/fcntl.in.h (openat): Likewise.  Declare extern.
(open): Add a link warning.

Signed-off-by: Eric Blake <ebb9@byu.net>
14 years agoareadlink, areadlink-with-size: relax license to LGPLv2+
Jim Meyering [Tue, 15 Dec 2009 09:28:04 +0000 (10:28 +0100)]
areadlink, areadlink-with-size: relax license to LGPLv2+

* modules/areadlink (License): Relax to LGPLv2+.
* modules/areadlink-with-size (License): Likewise.

14 years ago*printf: Fix memory leak.
Joel E. Denny [Tue, 15 Dec 2009 09:07:39 +0000 (10:07 +0100)]
*printf: Fix memory leak.

14 years agoaccept4: adjust module dependencies
Eric Blake [Tue, 15 Dec 2009 05:11:50 +0000 (22:11 -0700)]
accept4: adjust module dependencies

* modules/accept4 (Depends-on): Use fcntl-h, not fcntl.

Signed-off-by: Eric Blake <ebb9@byu.net>
14 years agoutimens: one more try at avoiding compiler warning
Eric Blake [Tue, 15 Dec 2009 05:07:15 +0000 (22:07 -0700)]
utimens: one more try at avoiding compiler warning

* lib/utimens.c (lutimens): Lower scope of result.

Signed-off-by: Eric Blake <ebb9@byu.net>
14 years agoautoupdate
Karl Berry [Mon, 14 Dec 2009 15:04:35 +0000 (07:04 -0800)]
autoupdate

14 years agoMove the malloc checking from module 'list' to new module 'xlist'.
Bruno Haible [Sun, 13 Dec 2009 23:24:41 +0000 (00:24 +0100)]
Move the malloc checking from module 'list' to new module 'xlist'.

14 years agoMove the malloc checking from module 'oset' to new module 'xoset'.
Bruno Haible [Sun, 13 Dec 2009 19:27:44 +0000 (20:27 +0100)]
Move the malloc checking from module 'oset' to new module 'xoset'.

14 years agomaint.mk: allow a project to override release-prep commands
Alfred M. Szmidt [Sun, 13 Dec 2009 14:11:14 +0000 (15:11 +0100)]
maint.mk: allow a project to override release-prep commands

* top/maint.mk (alpha, beta, stable): Move release-preparatory
commands into a new rule.
(release-prep): New rule.
(release-prep-hook): New overridable variable.

14 years agolocalcharset: Fix comment.
Bruno Haible [Sun, 13 Dec 2009 11:07:21 +0000 (12:07 +0100)]
localcharset: Fix comment.

14 years agomaint.mk (null_AM_MAKEFLAGS, built_programs): remove unused definitions
Jim Meyering [Sun, 13 Dec 2009 09:14:25 +0000 (10:14 +0100)]
maint.mk (null_AM_MAKEFLAGS, built_programs): remove unused definitions

* top/maint.mk (null_AM_MAKEFLAGS, built_programs): Remove definitions.

14 years agoduplocale: Tweak.
Bruno Haible [Sat, 12 Dec 2009 17:27:59 +0000 (18:27 +0100)]
duplocale: Tweak.

14 years agoautoupdate
Karl Berry [Sat, 12 Dec 2009 16:46:42 +0000 (08:46 -0800)]
autoupdate

14 years agotab changes -> no sync for strtoll.c
Karl Berry [Sat, 12 Dec 2009 16:44:50 +0000 (08:44 -0800)]
tab changes -> no sync for strtoll.c

14 years agoTweak whitespace.
Bruno Haible [Sat, 12 Dec 2009 14:33:49 +0000 (15:33 +0100)]
Tweak whitespace.

14 years agoUndo incorrect untabification.
Bruno Haible [Sat, 12 Dec 2009 14:31:09 +0000 (15:31 +0100)]
Undo incorrect untabification.

14 years agoc-strtod, c-strtold: Use the multithread-safe implementation on MacOS X.
Bruno Haible [Sat, 12 Dec 2009 14:13:35 +0000 (15:13 +0100)]
c-strtod, c-strtold: Use the multithread-safe implementation on MacOS X.

14 years agolocalcharset: Add comment.
Bruno Haible [Sat, 12 Dec 2009 13:46:27 +0000 (14:46 +0100)]
localcharset: Add comment.

14 years agosetenv: relax requirement in light of POSIX ruling
Eric Blake [Thu, 10 Dec 2009 19:18:31 +0000 (12:18 -0700)]
setenv: relax requirement in light of POSIX ruling

Requiring that {un,}setenv gracefully reject NULL is just a waste
of processing power; POSIX agreed to this argument in
 http://austingroupbugs.net/view.php?id=185
so we no longer worry whether a native implementation handles NULL.

* m4/setenv.m4 (gl_FUNC_SETENV_SEPARATE): Test handling of "" but
not NULL.
* tests/test-setenv.c (main): Relax test.
* tests/test-unsetenv.c (main): Likewise.
* doc/posix-functions/setenv.texi (setenv): Document this.
* doc/posix-functions/unsetenv.texi (unsetenv): Likewise.

Signed-off-by: Eric Blake <ebb9@byu.net>
14 years agoNew module 'fd-safer-flag'.
Bruno Haible [Fri, 11 Dec 2009 19:59:01 +0000 (20:59 +0100)]
New module 'fd-safer-flag'.

14 years agoTests for module 'nl_langinfo'.
Bruno Haible [Fri, 11 Dec 2009 19:11:22 +0000 (20:11 +0100)]
Tests for module 'nl_langinfo'.

14 years agoNew module 'nl_langinfo'.
Bruno Haible [Fri, 11 Dec 2009 19:09:02 +0000 (20:09 +0100)]
New module 'nl_langinfo'.

14 years agoTests for module 'langinfo'.
Bruno Haible [Fri, 11 Dec 2009 18:59:02 +0000 (19:59 +0100)]
Tests for module 'langinfo'.

14 years agoNew module 'langinfo'.
Bruno Haible [Fri, 11 Dec 2009 18:57:37 +0000 (19:57 +0100)]
New module 'langinfo'.

14 years agoUntabify.
Bruno Haible [Fri, 11 Dec 2009 16:55:51 +0000 (17:55 +0100)]
Untabify.

14 years agoChangeLog: remove spurious byte
Eric Blake [Fri, 11 Dec 2009 16:33:55 +0000 (09:33 -0700)]
ChangeLog: remove spurious byte

14 years agounistd-safer: Remove unused indicator macro.
Bruno Haible [Fri, 11 Dec 2009 16:24:22 +0000 (17:24 +0100)]
unistd-safer: Remove unused indicator macro.

14 years agoMove pipe2-safer code to its own file.
Bruno Haible [Fri, 11 Dec 2009 14:28:11 +0000 (15:28 +0100)]
Move pipe2-safer code to its own file.

14 years agorecvfrom: Allow NULL argument.
Bruno Haible [Fri, 11 Dec 2009 00:31:21 +0000 (01:31 +0100)]
recvfrom: Allow NULL argument.

14 years agoNew module 'arg-nonnull'. Declare which arguments expect non-NULL values.
Bruno Haible [Fri, 11 Dec 2009 00:15:28 +0000 (01:15 +0100)]
New module 'arg-nonnull'. Declare which arguments expect non-NULL values.

14 years agoUse spaces for indentation, not tabs.
Bruno Haible [Thu, 10 Dec 2009 19:28:30 +0000 (20:28 +0100)]
Use spaces for indentation, not tabs.

14 years agopty test: Fix link error.
Bruno Haible [Thu, 10 Dec 2009 18:15:51 +0000 (19:15 +0100)]
pty test: Fix link error.

14 years agoAdd pty module for forkpty and openpty.
Simon Josefsson [Thu, 10 Dec 2009 13:14:13 +0000 (14:14 +0100)]
Add pty module for forkpty and openpty.

14 years agostdio: Avoid syntax error in C++ mode.
Bruno Haible [Thu, 10 Dec 2009 13:08:47 +0000 (14:08 +0100)]
stdio: Avoid syntax error in C++ mode.

14 years agoUse sed with option -e.
Bruno Haible [Thu, 10 Dec 2009 11:22:41 +0000 (12:22 +0100)]
Use sed with option -e.

14 years agomgetgroups: do not write bytes beyond end of malloc'd buffer
Jim Meyering [Thu, 10 Dec 2009 11:17:19 +0000 (12:17 +0100)]
mgetgroups: do not write bytes beyond end of malloc'd buffer

* lib/mgetgroups.c: Fix an off-by-one error.  When we have no
username, we call getgroups with a one-element-shorter buffer,
but still told it the length was original, max_n_groups.

14 years agocloexec: relax license
Eric Blake [Thu, 10 Dec 2009 00:14:12 +0000 (17:14 -0700)]
cloexec: relax license

cloexec is a thin wrapper around fcntl, which is a glibc function
and therefore reasonable for LGPL.  Jim Meyering and Bruno Haible
agreed to the change.

* modules/cloexec (Maintainer): Add myself.
(License): Use LGPL, not GPL.

Signed-off-by: Eric Blake <ebb9@byu.net>
14 years agolink-warning: optimize generation
Eric Blake [Wed, 9 Dec 2009 23:11:27 +0000 (16:11 -0700)]
link-warning: optimize generation

Avoid a useless use of cat.

* modules/link-warning (Makefile.am): Reduce process usage.

Signed-off-by: Eric Blake <ebb9@byu.net>
14 years agounsetenv: Document last workaround.
Bruno Haible [Wed, 9 Dec 2009 21:04:36 +0000 (22:04 +0100)]
unsetenv: Document last workaround.

14 years agolink-warning: Allow extra lines at the top of build-aux/link-warning.h.
Jim Meyering [Wed, 9 Dec 2009 16:34:02 +0000 (17:34 +0100)]
link-warning: Allow extra lines at the top of build-aux/link-warning.h.

14 years agomgetgroups: Avoid undefined behaviour when ng == 0.
Bruno Haible [Wed, 9 Dec 2009 13:13:08 +0000 (14:13 +0100)]
mgetgroups: Avoid undefined behaviour when ng == 0.

14 years agolink-warning: Add copyright notice.
Bruno Haible [Wed, 9 Dec 2009 11:41:19 +0000 (12:41 +0100)]
link-warning: Add copyright notice.

14 years agofchdir: Optimize away rpl_fstat when possible.
Bruno Haible [Wed, 9 Dec 2009 11:11:36 +0000 (12:11 +0100)]
fchdir: Optimize away rpl_fstat when possible.

14 years agofchdir: Update comment.
Bruno Haible [Wed, 9 Dec 2009 10:49:30 +0000 (11:49 +0100)]
fchdir: Update comment.

14 years agoFix a recent ChangeLog entry.
Bruno Haible [Wed, 9 Dec 2009 10:37:17 +0000 (11:37 +0100)]
Fix a recent ChangeLog entry.

14 years agocloexec: Clarify code.
Bruno Haible [Wed, 9 Dec 2009 10:21:35 +0000 (11:21 +0100)]
cloexec: Clarify code.

14 years agofchdir: avoid memory leak on re-registration.
Eric Blake [Tue, 8 Dec 2009 17:23:27 +0000 (10:23 -0700)]
fchdir: avoid memory leak on re-registration.

Some code paths (such as dup3) could overwrite one registered
directory fd with another, and must not leak the old name.

* lib/fchdir.c (ensure_dirs_slot): Avoid memory leak.

Signed-off-by: Eric Blake <ebb9@byu.net>
14 years agoinit.sh: avoid Solaris 10 /bin/sh portability problem
Jim Meyering [Tue, 8 Dec 2009 19:37:50 +0000 (20:37 +0100)]
init.sh: avoid Solaris 10 /bin/sh portability problem

Solaris 10's /bin/sh does not pass '.' arguments 2..N to the
sourced script:
  $ printf 'echo "$@"\n' > f; /bin/sh -c '. ./f bar'
  $ printf 'echo "$@"\n' > f;    bash -c '. ./f bar'
  bar
tests/init.sh relied on that, accepting a --set-path=DIR argument,
and two tests used that idiom.
* tests/init.sh: Update suggested usage comments.
(path_prepend_): New function, to be used in place of
the --src-path=DIR option.
Disallow empty strings and strings containing ":".
(setup_): Move PATH-prepending code into path_prepend_.
* tests/test-pread.sh: Adapt to new usage.
* tests/test-xalloc-die.sh: Likewise.

14 years agoDocument pty.h functions.
Simon Josefsson [Tue, 8 Dec 2009 16:44:19 +0000 (17:44 +0100)]
Document pty.h functions.

14 years agofchdir: fix logic bugs
Eric Blake [Tue, 8 Dec 2009 13:13:05 +0000 (06:13 -0700)]
fchdir: fix logic bugs

Configuring with ac_cv_func_fchdir=no on a system that has fchdir
and where open handles directories, just to test out the replacement
capabilities, uncovered an m4 test bug and a link failure on rpl_fstat.

* m4/fchdir.m4 (gl_FUNC_FCHDIR): Fix logic bug.
* tests/test-fchdir.c (main): Enhance test.
* lib/fchdir.c (rpl_fstat): Always provide if fchdir replacement
is in use.

Signed-off-by: Eric Blake <ebb9@byu.net>
14 years agodup2: fix logic bugs
Eric Blake [Tue, 8 Dec 2009 04:08:17 +0000 (21:08 -0700)]
dup2: fix logic bugs

If the platform has dup2, don't register with fchdir if the
destination was -1.

If the platform lacks dup2 (are there any these days?), then don't
close the destination unless the source is valid, make sure errno
is correct, and only register with fchdir on fcntl (since dup is
already overridden to do a registration).

* lib/dup2.c (dup2): Fix logic bugs.  Use HAVE_DUP2 rather than
REPLACE_DUP2 to decide when rpl_dup2 is needed.
* m4/dup2.m4 (gl_REPLACE_DUP2): Only define REPLACE_DUP2 when dup2
exists.
(gl_FUNC_DUP2): Drop unneeded AC_SUBST.

Signed-off-by: Eric Blake <ebb9@byu.net>
14 years agounlink: fix m4 detection
Eric Blake [Tue, 8 Dec 2009 00:15:07 +0000 (17:15 -0700)]
unlink: fix m4 detection

The m4 test failed under -Werror due to implicit declaration.

* m4/unlink.m4 (gl_FUNC_UNLINK): Include correct header.

Signed-off-by: Eric Blake <ebb9@byu.net>
14 years agounistd-safer: add unit test
Eric Blake [Mon, 7 Dec 2009 17:17:07 +0000 (10:17 -0700)]
unistd-safer: add unit test

Add more unit tests.  Meanwhile, fix compilation error on mingw when
testing unistd-safer and fchdir together; and avoid gcc warning on
platforms without setmode.

* modules/unistd-safer-tests: New file.
* tests/test-dup-safer.c: Likewise.
* tests/test-cloexec.c (setmode): Avoid compiler warning.
* tests/test-dup2.c (setmode): Likewise.
* lib/cloexec.c (dup_cloexec): Fix mingw compile error.

Signed-off-by: Eric Blake <ebb9@byu.net>
14 years agocloexec: preserve text vs. binary across dup_cloexec
Eric Blake [Mon, 7 Dec 2009 13:53:59 +0000 (06:53 -0700)]
cloexec: preserve text vs. binary across dup_cloexec

On mingw, dup_cloexec mistakenly converted a text fd into a
binary fd.  Cygwin copied the source mode.  Most other platforms
don't distinguish between modes.

* lib/cloexec.c (dup_cloexec) [W32]: Query and use translation
mode.
* modules/dup2-tests (Depends-on): Add binary-io.
* modules/cloexec-tests (Depends-on): Likewise.
* tests/test-dup2.c (setmode, is_mode): New helpers.
(main): Add tests that translation mode is preserved.
* tests/test-cloexec.c (setmode, is_mode, main): Likewise.
Reported by Bruno Haible.

Signed-off-by: Eric Blake <ebb9@byu.net>
14 years agomgetgroups: reduce duplicate listings
Eric Blake [Fri, 4 Dec 2009 21:07:58 +0000 (14:07 -0700)]
mgetgroups: reduce duplicate listings

POSIX doesn't guarantee whether the effective gid is included in
the list of supplementary groups returned by getgroups.  On the
other hand, some platforms include the effective gid twice in
the list.  Meanwhile, mgetgroups can independently add a duplicate.
Rather than spend a full-blown O(n log n) cleanup, we just remove
the most common forms of duplicate groups with an O(n) pass.

* lib/mgetgroups.c (mgetgroups): Reduce duplicates from the
resulting array.
* tests/test-chown.h (test_chown): Simplify client.
* tests/test-lchown.h (test_lchown): Likewise.

Signed-off-by: Eric Blake <ebb9@byu.net>
14 years agocloexec: Fix possible compilation error.
Bruno Haible [Mon, 7 Dec 2009 00:02:50 +0000 (01:02 +0100)]
cloexec: Fix possible compilation error.

14 years agoprognam: Add diagnostic.
Bruno Haible [Sun, 6 Dec 2009 22:19:49 +0000 (23:19 +0100)]
prognam: Add diagnostic.

14 years agopipe2-safer: new module
Eric Blake [Sat, 5 Dec 2009 13:39:09 +0000 (06:39 -0700)]
pipe2-safer: new module

pipe2 deserves a *_safer variant.  It also makes the code in
pipe.c look simpler.

* modules/pipe2-safer: New file.
* lib/unistd-safer.h (pipe2_safer): New prototype.
* lib/unistd--.h (pipe2): New wrapper.
* lib/pipe-safer.c (pipe2_safer): New function.
* modules/pipe (Depends-on): Add pipe2-safer.
* lib/pipe.c (create_pipe) [WIN32]: Let pipe2_safer do the work.

Signed-off-by: Eric Blake <ebb9@byu.net>
14 years agostdlib-safer: preserve cloexec flag for mkostemp[s]
Eric Blake [Mon, 16 Nov 2009 23:09:42 +0000 (16:09 -0700)]
stdlib-safer: preserve cloexec flag for mkostemp[s]

mkostemp_safer(templ,O_CLOEXEC) did not always guarantee cloexec.

* lib/mkstemp-safer.c (mkostemp_safer, mkostemps_safer): Use new
fd_safer_flag.

Signed-off-by: Eric Blake <ebb9@byu.net>
14 years agounistd-safer: allow preservation of cloexec status via flag
Eric Blake [Sat, 5 Dec 2009 13:36:33 +0000 (06:36 -0700)]
unistd-safer: allow preservation of cloexec status via flag

If cloexec is in use, allow the ability to preserve cloexec
flag across *_safer functions.

* lib/unistd-safer.h (dup_safer_flag, fd_safer_flag): New
prototypes.
* lib/dup-safer.c (dup_safer_flag): New function.
* lib/fd-safer.c (fd_safer_flag): Likewise.
* modules/cloexec (configure.ac): Set witness.

Signed-off-by: Eric Blake <ebb9@byu.net>
14 years agotest-dup2: enhance test
Eric Blake [Sat, 5 Dec 2009 13:19:01 +0000 (06:19 -0700)]
test-dup2: enhance test

Ensure that dup2(cloexec_fd, target) returns an inheritable fd.

* modules/dup2-tests (Depends-on): Add cloexec.
* tests/test-dup2.c (main): Enhance test.

Signed-off-by: Eric Blake <ebb9@byu.net>
14 years agocloexec: add dup_cloexec
Eric Blake [Sat, 5 Dec 2009 05:10:44 +0000 (22:10 -0700)]
cloexec: add dup_cloexec

This is needed to enforce correct semantics of mkostemp_safer.
Meanwhile, it is one step closer to providing O_CLOEXEC support
to open, as well as implementing portions of fcntl for mingw.

* lib/cloexec.h (dup_cloexec): New prototype.  Add copyright
header and comments.
* lib/cloexec.c (set_cloexec_flag): Add comments.
(dup_cloexec): New function, with mingw implementation borrowed
from...
* lib/w32spawn.h (dup_noinherit): ...here.
* modules/execute (Depends-on): Add cloexec.
* modules/pipe (Depends-on): Likewise.
* modules/cloexec (Depends-on): Add dup2.
* modules/cloexec-tests (Files): New file.
* tests/test-cloexec.c: Likewise.

Signed-off-by: Eric Blake <ebb9@byu.net>
14 years agotest-xalloc-die: fix test for mingw
Eric Blake [Sat, 5 Dec 2009 16:24:54 +0000 (09:24 -0700)]
test-xalloc-die: fix test for mingw

When cross-compiling on mingw to target mingw, argv[0] still includes
a .exe suffix.  Rather than worry about ${EXEEXT}, just add a sed
post-process.  Also, simplify the script by using tests/init.sh.

* modules/xalloc-die-tests (Files): Add tests/init.sh.
* tests/test-xalloc-die.sh: Rewrite to use init.sh.  Strip
directory and .exe suffix off argv[0] output.

Signed-off-by: Eric Blake <ebb9@byu.net>
14 years agotest-fseeko: fix test for mingw
Eric Blake [Sat, 5 Dec 2009 16:07:28 +0000 (09:07 -0700)]
test-fseeko: fix test for mingw

Undefining fseek made test-fseeko.sh fail when testing on pipes.

* tests/test-fseeko.c (fseek): Redefine GL_LINK_WARNING, rather
than undefining fseek, so test will pass on mingw.

Signed-off-by: Eric Blake <ebb9@byu.net>
14 years agoautoupdate
Karl Berry [Sat, 5 Dec 2009 13:36:19 +0000 (05:36 -0800)]
autoupdate

14 years agoprogname: Clarify specification.
Bruno Haible [Sat, 5 Dec 2009 11:14:04 +0000 (12:14 +0100)]
progname: Clarify specification.

14 years agomaint.mk: backslash-escape parens in default regexp
Jim Meyering [Sat, 5 Dec 2009 09:02:01 +0000 (10:02 +0100)]
maint.mk: backslash-escape parens in default regexp

* top/maint.mk (news-check-regexp): Now that we're using grep -E,
backslash-escape the literal parentheses.

14 years agomaint.mk: news-check: use grep -E
Jim Meyering [Sat, 5 Dec 2009 08:35:28 +0000 (09:35 +0100)]
maint.mk: news-check: use grep -E

* top/maint.mk (today): Define a Make variable, not a...
(news-date-check): ...shell variable.
(news-check-regexp): Use the Make variable.
Use grep's -E option.  Change the failing diagnostic to mention
the variable, $(news-check-regexp).
(news-check): Rename target from news-date-check.  Update sole use.

14 years agomaintainer-makefile: allow customization of NEWS entry format
Alfred M. Szmidt [Sat, 5 Dec 2009 04:27:40 +0000 (21:27 -0700)]
maintainer-makefile: allow customization of NEWS entry format

* top/maint.mk (news-date-regexp): New overridable variable.
(news-date-check): Use it.

Signed-off-by: Eric Blake <ebb9@byu.net>
14 years agomgetgroups: add xgetgroups, and avoid ENOSYS failures
Eric Blake [Fri, 4 Dec 2009 15:26:23 +0000 (08:26 -0700)]
mgetgroups: add xgetgroups, and avoid ENOSYS failures

ENOSYS implies that there are no supplemental groups, so we can
treat it the same as a return of 0 from getgroups rather than
exposing failure to the user.  This in turn fixes a crash in
coreutils' id, which freed an uninitialized pointer.

* lib/mgetgroups.h (xgetgroups): New prototype.
* lib/mgetgroups.c (xgetgroups): New wrapper.
(mgetgroups): Handle ENOSYS.
* modules/mgetgroups (Depends-on): Add realloc.
Reported by Scott Harrison <scott.gnu.2009@scottrix.co.uk>.

Signed-off-by: Eric Blake <ebb9@byu.net>
14 years agomgetgroups: avoid argument promotion issues with -1
Eric Blake [Fri, 4 Dec 2009 21:37:32 +0000 (14:37 -0700)]
mgetgroups: avoid argument promotion issues with -1

On platforms where gid_t is equivalent to uint16_t, argument
promotion states that -1 != (gid_t) -1.

* lib/mgetgroups.c (mgetgroups): A cast is required when checking
for invalid gid_t.
* tests/test-chown.h (getegid, test_chown): Likewise.
* tests/test-lchown.h (getegid, test_lchown): Likewise.

Signed-off-by: Eric Blake <ebb9@byu.net>
14 years agoexclude: Fix header file problems. 20100218131909/gnulib 20100219094430/gnulib 20100220042854/gnulib 20100221043013/gnulib 20100222042935/gnulib 20100223043106/gnulib 20100224042837/gnulib 20100225042841/gnulib 20100226043037/gnulib 20100227042904/gnulib 20100228043031/gnulib 20100301043017/gnulib 20100302042905/gnulib 20100303042934/gnulib 20100304042941/gnulib 20100305042438/gnulib 20100306042459/gnulib 20100307042432/gnulib 20100308042443/gnulib 20100309042515/gnulib 20100310042437/gnulib 20100311042448/gnulib 20100312042514/gnulib 20100313042512/gnulib 20100314042501/gnulib 20100315042558/gnulib 20100316042536/gnulib 20100317042439/gnulib 20100318042423/gnulib 20100319042428/gnulib 20100320042434/gnulib 20100321042521/gnulib 20100322042454/gnulib 20100323042535/gnulib 20100324042504/gnulib 20100326042718/gnulib 20100327042638/gnulib 20100328042559/gnulib 20100329042647/gnulib 20100330042709/gnulib 20100331042620/gnulib 20100401042611/gnulib 20100402042617/gnulib 20100403042613/gnulib 20100404042635/gnulib 20100405042635/gnulib 20100406042722/gnulib 20100407042652/gnulib 20100408042609/gnulib 20100409042702/gnulib 20100410042638/gnulib 20100411042812/gnulib 20100412042622/gnulib 20100413042644/gnulib 20100414042639/gnulib 20100415042645/gnulib 20100415133605/gnulib 20100416042623/gnulib 20100419042725/gnulib 20100420042610/gnulib 20100421042655/gnulib 20100422042613/gnulib 20100423042626/gnulib 20100424042622/gnulib 20100425042523/gnulib 20100426042559/gnulib 20100427042632/gnulib 20100428042627/gnulib 20100430042736/gnulib 20100501042642/gnulib 20100501193346/gnulib 20100502042600/gnulib 20100503042614/gnulib 20100504042743/gnulib 20100505042637/gnulib 20100506042616/gnulib 20100507042642/gnulib 20100508042736/gnulib 20100509042555/gnulib 20100510042527/gnulib 20100512042616/gnulib 20100513042530/gnulib 20100521041225/gnulib 20100521091416/gnulib 20100522041550/gnulib 20100523041559/gnulib 20100524041610/gnulib 20100525041248/gnulib 20100526041535/gnulib 20100527041522/gnulib 20100528041522/gnulib 20100529041534/gnulib 20100530041504/gnulib 20100531041536/gnulib 20100601041620/gnulib 20100602041534/gnulib 20100603041547/gnulib 20100605041552/gnulib 20100606041544/gnulib 20100607041548/gnulib 20100608041611/gnulib 20100609041548/gnulib 20100610041652/gnulib 20100611041634/gnulib 20100612041620/gnulib 20100613041621/gnulib 20100614041736/gnulib 20100615041649/gnulib 20100616041634/gnulib 20100617041556/gnulib 20100618041533/gnulib 20100619041533/gnulib 20100620041537/gnulib 20100621041557/gnulib 20100622041552/gnulib 20100623041555/gnulib 20100624041519/gnulib 20100625040617/gnulib 20100626041055/gnulib 20100627041020/gnulib 20100628041528/gnulib 20100629041110/gnulib 20100630041144/gnulib 20100701041615/gnulib 20100702041143/gnulib 20100703041618/gnulib 20100711041112/gnulib 20100712041116/gnulib 20100713041535/gnulib 20100714041130/gnulib 20100715041146/gnulib 20100716041532/gnulib 20100717041056/gnulib 20100718041608/gnulib 20100719041451/gnulib 20100720041111/gnulib 20100721041552/gnulib 20100722041118/gnulib 20100723041635/gnulib 20100724041102/gnulib 20100725041551/gnulib 20100726041541/gnulib 20100727041553/gnulib 20100728041141/gnulib 20100729041110/gnulib 20100730041051/gnulib 20100731041100/gnulib 20100801041042/gnulib 20100802041059/gnulib 20100803040608/gnulib 20100804041612/gnulib 20100805041620/gnulib 20100806041612/gnulib 20100807041107/gnulib 20100808041110/gnulib 20100809041608/gnulib 20100810041136/gnulib 20100811041612/gnulib 20100812041836/gnulib 20100813042446/gnulib 20100814041753/gnulib 20100816041530/gnulib 20100817041735/gnulib 20100819041710/gnulib 20100820041529/gnulib 20100821041124/gnulib 20100822041134/gnulib 20100823041126/gnulib 20100824041139/gnulib 20100825041154/gnulib 20100826041614/gnulib 20100827041134/gnulib 20100828041143/gnulib 20100829041128/gnulib 20100830041116/gnulib 20100831041146/gnulib 20100901041138/gnulib 20100902040644/gnulib 20100904041453/gnulib 20100905041109/gnulib 20100906041433/gnulib 20100907041042/gnulib 20100908041130/gnulib 20100909040655/gnulib 20100910041109/gnulib 20100911040530/gnulib 20100912041115/gnulib 20100913041129/gnulib 20100914041133/gnulib 20100915041535/gnulib 20100916041629/gnulib 20100917041120/gnulib 20100918041133/gnulib 20100919041540/gnulib 20100920041555/gnulib 20100921041501/gnulib 20100922041532/gnulib 20100923041557/gnulib 20100924041103/gnulib 20100925041139/gnulib 20100926040703/gnulib 20100927041238/gnulib 20100928041549/gnulib 20100929041133/gnulib 20100930041139/gnulib 20101003041054/gnulib 20101004041406/gnulib 20101005041104/gnulib 20101006041207/gnulib 20101007041630/gnulib 20101008041557/gnulib 20101009041631/gnulib 20101010041644/gnulib 20101011041614/gnulib 20101012041641/gnulib 20101013040717/gnulib 20101014041722/gnulib 20101015041724/gnulib 20101016041724/gnulib 20101017040815/gnulib 20101018041718/gnulib 20101019041746/gnulib 20101020041720/gnulib 20101021041737/gnulib 20101022041639/gnulib 20101023041659/gnulib 20101025041530/gnulib 20101026041642/gnulib 20101027041639/gnulib 20101028041637/gnulib 20101029041644/gnulib 20101030041656/gnulib 20101031041554/gnulib 20101101041534/gnulib 20101102041658/gnulib 20101103041554/gnulib 20101104041646/gnulib 20101105041640/gnulib 20101106041650/gnulib 20101107041610/gnulib 20101108041611/gnulib 20101109041719/gnulib 20101110041717/gnulib 20101111041723/gnulib 20101112041734/gnulib 20101113041729/gnulib 20101114041833/gnulib 20101115031810/gnulib 20101116031826/gnulib 20101117031914/gnulib 20101118031739/gnulib 20101119031628/gnulib 20101120031735/gnulib 20101121031614/gnulib 20101122031607/gnulib 20101123031720/gnulib 20101124031711/gnulib 20101125031735/gnulib 20101126031730/gnulib 20101127031717/gnulib 20101202031726/gnulib 20101203031758/gnulib 20101204031721/gnulib 20101205031706/gnulib 20101206031713/gnulib 20101207031701/gnulib 20101208031644/gnulib 20101209031739/gnulib 20101210031714/gnulib 20101211031712/gnulib 20101212031630/gnulib 20101213031641/gnulib 20101214031733/gnulib 20101215031731/gnulib 20101216030723/gnulib 20101217031736/gnulib 20101218031744/gnulib 20101219031739/gnulib 20101220031702/gnulib 20101221031650/gnulib 20101222031745/gnulib 20101223031821/gnulib 20101224031749/gnulib 20101225031758/gnulib 20101226031707/gnulib 20101227030652/gnulib 20101228031744/gnulib 20101229031808/gnulib 20101230031752/gnulib 20101231031744/gnulib 20110101031816/gnulib 20110102031716/gnulib 20110103031649/gnulib 20110104031715/gnulib 20110105031812/gnulib 20110106031749/gnulib 20110107031812/gnulib 20110110031707/gnulib 20110111031744/gnulib 20110116031720/gnulib 20110117031715/gnulib 20110118031800/gnulib 20110119031753/gnulib 20110121031906/gnulib 20110122031857/gnulib 20110123031931/gnulib 20110124031917/gnulib 20110125031844/gnulib 20110126031846/gnulib 20110127031817/gnulib 20110128031830/gnulib 20110129031832/gnulib 20110130031814/gnulib 20110131031804/gnulib 20110201031746/gnulib 20110202031753/gnulib 20110203031711/gnulib 20110204031758/gnulib 20110205031747/gnulib 20110206031630/gnulib 20110207030645/gnulib 20110208031822/gnulib 20110212030805/gnulib 20110213030757/gnulib 20110214030738/gnulib 20110215030738/gnulib 20110216031552/gnulib 20110217031539/gnulib 20110218031555/gnulib 20110219031618/gnulib 20110220031600/gnulib 20110221031653/gnulib 20110222031614/gnulib 20110223030636/gnulib 20110224031103/gnulib 20110225032456/gnulib 20110225071819/gnulib 20110226031634/gnulib 20110227031601/gnulib 20110228031553/gnulib 20110301031600/gnulib 20110302031556/gnulib 20110303031547/gnulib 20110304031610/gnulib 20110305031630/gnulib 20110306031631/gnulib 20110307031623/gnulib 20110308031619/gnulib 20110309031621/gnulib 20110310031601/gnulib 20110311031533/gnulib 20110312031538/gnulib 20110313031612/gnulib 20110314031604/gnulib 20110315031549/gnulib 20110316031608/gnulib 20110318031557/gnulib 20110319031612/gnulib 20110320030624/gnulib 20110321031532/gnulib 20110322031526/gnulib 20110323031530/gnulib 20110324031603/gnulib 20110325031532/gnulib 20110326031556/gnulib 20110327031610/gnulib 20110328031556/gnulib 20110329031601/gnulib 20110330031551/gnulib 20110331031552/gnulib 20110401031548/gnulib 20110402031555/gnulib 20110403031553/gnulib 20110404031545/gnulib 20110405031555/gnulib 20110406031543/gnulib 20110407031550/gnulib 20110408031537/gnulib 20110409031508/gnulib 20110410031507/gnulib 20110411031515/gnulib 20110412031531/gnulib 20110413031607/gnulib 20110414031522/gnulib 20110415031534/gnulib 20110416031529/gnulib 20110417031551/gnulib 20110418031526/gnulib 20110419031602/gnulib 20110420031551/gnulib 20110421031555/gnulib 20110422031555/gnulib 20110423031121/gnulib 20110424031605/gnulib 20110425031606/gnulib 20110426031542/gnulib 20110427031531/gnulib 20110428031605/gnulib 20110429031603/gnulib 20110430031612/gnulib 20110501031611/gnulib 20110502031608/gnulib 20110503031545/gnulib 20110504031614/gnulib 20110505031602/gnulib 20110506031604/gnulib 20110507031558/gnulib 20110508031638/gnulib 20110509031634/gnulib 20110510031628/gnulib 20110511031633/gnulib 20110512031633/gnulib 20110513031628/gnulib 20110514031601/gnulib 20110515031631/gnulib 20110516031814/gnulib 20110517031420/gnulib 20110518031408/gnulib 20110519031414/gnulib 20110520031408/gnulib 20110521031417/gnulib 20110522031415/gnulib 20110523031409/gnulib 20110524031408/gnulib 20110525031418/gnulib 20110526031358/gnulib 20110527031354/gnulib 20110528031404/gnulib 20110529031414/gnulib 20110530031416/gnulib 20110531031410/gnulib 20110601031404/gnulib 20110602031422/gnulib 20110604031416/gnulib 20110605031415/gnulib 20110606031415/gnulib 20110607031415/gnulib 20110608031410/gnulib 20110609031415/gnulib 20110610031413/gnulib 20110611031416/gnulib 20110612031417/gnulib 20110613031407/gnulib 20110614031418/gnulib 20110615031353/gnulib 20110616031404/gnulib 20110617031417/gnulib 20110618031400/gnulib 20110619031415/gnulib 20110620031412/gnulib 20110621031414/gnulib 20110622031416/gnulib 20110623031400/gnulib 20110624031413/gnulib 20110625031415/gnulib 20110626031422/gnulib 20110627031418/gnulib 20110628031407/gnulib 20110629031411/gnulib 20110630031420/gnulib 20110701031420/gnulib 20110702030702/gnulib 20110703031405/gnulib 20110704031413/gnulib 20110705031409/gnulib 20110706031350/gnulib 20110707031410/gnulib 20110708031409/gnulib 20110709031405/gnulib 20110710031413/gnulib 20110711031353/gnulib 20110712031417/gnulib 20110713031352/gnulib 20110714031357/gnulib 20110715031426/gnulib 20110716031434/gnulib 20110717031406/gnulib 20110718031405/gnulib 20110719031413/gnulib 20110720031408/gnulib 20110721031418/gnulib 20110722031411/gnulib 20110723031404/gnulib 20110724031402/gnulib 20110725031357/gnulib 20110726031415/gnulib 20110727031401/gnulib 20110728031411/gnulib 20110729031400/gnulib 20110730031453/gnulib 20110731031404/gnulib 20110801031417/gnulib 20110802031414/gnulib 20110803031358/gnulib 20110804031410/gnulib 20110805031406/gnulib 20110806031409/gnulib 20110807031403/gnulib 20110808031415/gnulib 20110810031403/gnulib 20110811031423/gnulib 20110812031420/gnulib 20110813031418/gnulib 20110814031356/gnulib 20110815031420/gnulib 20110816031547/gnulib 20110817031410/gnulib 20110818031425/gnulib 20110819031415/gnulib 20110820031101/gnulib 20110821031041/gnulib 20110822031403/gnulib 20110823031429/gnulib 20110824031424/gnulib 20110825031423/gnulib 20110826031431/gnulib 20110901031215/gnulib 20110902130633/gnulib 20110904031424/gnulib 20110905031444/gnulib 20110906031425/gnulib 20110907031503/gnulib 20110908031428/gnulib 20110909031431/gnulib 20110910092829/gnulib 20110911031407/gnulib 20110912031458/gnulib 20110913031431/gnulib 20110914030653/gnulib 20110915031436/gnulib 20110916031420/gnulib 20110917031415/gnulib 20110918031424/gnulib 20110919031411/gnulib 20110920031422/gnulib 20110921031404/gnulib 20110922031425/gnulib 20110923031426/gnulib 20110924031504/gnulib 20110925031421/gnulib 20110926031416/gnulib 20110927031420/gnulib 20110928031417/gnulib 20110929031416/gnulib 20110930031425/gnulib 20111001031428/gnulib 20111002031429/gnulib 20111003031429/gnulib 20111004031424/gnulib 20111005031422/gnulib 20111006031431/gnulib 20111007031429/gnulib 20111008031431/gnulib 20111009031439/gnulib 20111010031418/gnulib 20111011031441/gnulib 20111012031429/gnulib 20111013031427/gnulib 20111015031430/gnulib 20111016031435/gnulib 20111017031437/gnulib 20111018031415/gnulib 20111020031428/gnulib 20111021031428/gnulib 20111022031418/gnulib 20111023031438/gnulib 20111024031440/gnulib 20111025031424/gnulib 20111026031438/gnulib 20111027031423/gnulib 20111028031451/gnulib 20111029031439/gnulib 20111030031436/gnulib 20111031031435/gnulib 20111101031427/gnulib 20111102031407/gnulib 20111103031421/gnulib 20111104031424/gnulib 20111105031408/gnulib 20111106031419/gnulib 20111107031427/gnulib 20111108031421/gnulib 20111109031406/gnulib 20111110031413/gnulib 20111111031414/gnulib 20111112031438/gnulib 20111113030703/gnulib 20111114031416/gnulib 20111115031415/gnulib 20111116031428/gnulib 20111117031413/gnulib 20111118031422/gnulib 20111119031422/gnulib 20111120031430/gnulib 20111121031405/gnulib 20111122031426/gnulib 20111123031417/gnulib 20111124031418/gnulib 20111125031416/gnulib 20111126031422/gnulib 20111127031414/gnulib 20111128031426/gnulib 20111129031418/gnulib 20111130031417/gnulib 20111201031427/gnulib 20111202031543/gnulib 20111203031544/gnulib 20111204031408/gnulib 20111205031526/gnulib 20111206031606/gnulib 20111207031533/gnulib 20111208031646/gnulib 20111209031616/gnulib 20111210031444/gnulib 20111211031438/gnulib 20111212031636/gnulib 20111213031439/gnulib 20111214031452/gnulib 20111215031733/gnulib 20111216031608/gnulib 20111217031658/gnulib 20111218031545/gnulib 20111219031409/gnulib 20111220031607/gnulib 20111221031449/gnulib 20111222031615/gnulib 20111223031415/gnulib 20111224031426/gnulib 20111225031725/gnulib 20111226031501/gnulib 20111227031911/gnulib 20111228031606/gnulib 20111229031425/gnulib 20111230031523/gnulib 20111231031421/gnulib 20120101031422/gnulib 20120104031502/gnulib 20120105031414/gnulib 20120106031419/gnulib 20120107031420/gnulib 20120108031556/gnulib 20120109031459/gnulib 20120110031423/gnulib 20120111031411/gnulib 20120112031555/gnulib 20120113031423/gnulib 20120114031432/gnulib 20120115031416/gnulib 20120116031417/gnulib 20120117031410/gnulib 20120118031418/gnulib 20120119031414/gnulib 20120120031423/gnulib 20120121031452/gnulib 20120122031521/gnulib 20120123031402/gnulib 20120124031641/gnulib 20120125030952/gnulib 20120126031430/gnulib 20120127031612/gnulib 20120128031636/gnulib 20120129031423/gnulib 20120130031652/gnulib 20120131031416/gnulib 20120201031456/gnulib 20120202031505/gnulib 20120203031408/gnulib 20120204031439/gnulib 20120205031458/gnulib 20120206031506/gnulib 20120207031515/gnulib 20120208031512/gnulib 20120209031410/gnulib 20120210031615/gnulib 20120211031504/gnulib 20120212031412/gnulib 20120213031512/gnulib 20120214031444/gnulib 20120215031428/gnulib 20120216031432/gnulib 20120217031758/gnulib 20120218031601/gnulib 20120219031439/gnulib 20120220031817/gnulib 20120221031447/gnulib 20120222031641/gnulib 20120223031435/gnulib 20120224031529/gnulib 20120225031508/gnulib 20120226031502/gnulib 20120227031427/gnulib 20120228031430/gnulib 20120229031458/gnulib 20120301031528/gnulib 20120302031409/gnulib 20120303031408/gnulib 20120304031409/gnulib 20120305031436/gnulib 20120306031436/gnulib 20120307031512/gnulib 20120308031508/gnulib 20120309031510/gnulib 20120310031522/gnulib 20120311031448/gnulib 20120312031506/gnulib 20120313031510/gnulib 20120314031456/gnulib 20120315031451/gnulib 20120316031452/gnulib 20120317031527/gnulib 20120318031500/gnulib 20120319031513/gnulib 20120320031506/gnulib 20120321031503/gnulib 20120322031512/gnulib 20120323031459/gnulib 20120324031507/gnulib 20120325031503/gnulib 20120326031506/gnulib 20120327031456/gnulib 20120328031512/gnulib 20120329031508/gnulib 20120330031511/gnulib 20120331031509/gnulib 20120401031455/gnulib 20120402031523/gnulib 20120403031518/gnulib 20120404031451/gnulib 20120405031514/gnulib 20120406031516/gnulib 20120407031517/gnulib 20120408031516/gnulib 20120409031513/gnulib 20120410031532/gnulib 20120411031450/gnulib 20120412031510/gnulib 20120413031509/gnulib 20120414031511/gnulib 20120415031515/gnulib 20120416031516/gnulib 20120417031616/gnulib 20120418031457/gnulib 20120419031509/gnulib 20120420031514/gnulib 20120421031324/gnulib 20120422031515/gnulib 20120423031537/gnulib 20120424031555/gnulib 20120425031512/gnulib 20120426031527/gnulib 20120427031527/gnulib 20120428031537/gnulib 20120429031326/gnulib 20120430031536/gnulib 20120501031243/gnulib 20120502031521/gnulib 20120503031529/gnulib 20120504031541/gnulib 20120505031533/gnulib 20120506031620/gnulib 20120507031559/gnulib 20120508031643/gnulib 20120509031603/gnulib 20120510031606/gnulib 20120511031535/gnulib 20120512031531/gnulib 20120513031611/gnulib 20120514031630/gnulib 20120515031552/gnulib 20120516031616/gnulib 20120517031608/gnulib 20120518031611/gnulib 20120519031621/gnulib 20120520031620/gnulib 20120521031633/gnulib 20120522031633/gnulib 20120524031621/gnulib 20120525031811/gnulib 20120526031619/gnulib 20120527031632/gnulib 20120528031718/gnulib 20120530031634/gnulib 20120531031721/gnulib 20120602061528/gnulib 20120603061521/gnulib 20120604061507/gnulib 20120605061328/gnulib 20120606061543/gnulib 20120608061509/gnulib 20120610001708/gnulib 20120611001553/gnulib 20120612001635/gnulib 20120613001549/gnulib 20120614001554/gnulib 20120615001606/gnulib 20120616001546/gnulib 20120617001633/gnulib 20120618001646/gnulib 20120619001615/gnulib 20120620001621/gnulib 20120621002000/gnulib 20120622001630/gnulib 20120623001635/gnulib 20120624001638/gnulib 20120625001750/gnulib 20120625204723/gnulib 20120626001706/gnulib 20120627001715/gnulib 20120628001748/gnulib 20120629001656/gnulib 20120630001820/gnulib 20120701001705/gnulib 20120702001701/gnulib 20120703001654/gnulib 20120704001636/gnulib 20120705001646/gnulib 20120706001639/gnulib 20120708001625/gnulib 20120709001626/gnulib 20120710001631/gnulib 20120711001653/gnulib 20120712001636/gnulib 20120713001643/gnulib 20120714001724/gnulib 20120715001929/gnulib 20120716001646/gnulib 20120717001635/gnulib 20120718001627/gnulib 20120719001652/gnulib 20120720001729/gnulib 20120721001805/gnulib 20120722001653/gnulib 20120723001646/gnulib 20120724001845/gnulib 20120725001829/gnulib 20120727001701/gnulib 20120728001650/gnulib 20120729001648/gnulib 20120730001741/gnulib 20120731001644/gnulib 20120801001625/gnulib 20120802001759/gnulib 20120803001700/gnulib 20120804001643/gnulib 20120805001649/gnulib 20120806001631/gnulib 20120807001646/gnulib 20120808001622/gnulib 20120809001624/gnulib 20120810001704/gnulib 20120811001638/gnulib 20120813001705/gnulib 20120814001708/gnulib 20120815001708/gnulib 20120816001800/gnulib 20120817001731/gnulib 20120818001801/gnulib 20120819001442/gnulib 20120820001625/gnulib 20120821001728/gnulib 20120822001625/gnulib 20120823001658/gnulib 20120824001745/gnulib 20120825001645/gnulib 20120826001703/gnulib 20120827001621/gnulib 20120828031737/gnulib 20120829031643/gnulib 20120830031611/gnulib 20120831031712/gnulib 20120901031621/gnulib 20120902031604/gnulib 20120903031606/gnulib 20120904031617/gnulib 20120905031637/gnulib 20120906031612/gnulib 20120907031641/gnulib 20120908031543/gnulib 20120909031611/gnulib 20120910031707/gnulib 20120911031714/gnulib 20120912031706/gnulib 20120913031652/gnulib 20120914031716/gnulib 20120915031713/gnulib 20120921031819/gnulib 20120922031737/gnulib 20120923031742/gnulib 20120927031853/gnulib 20120928031812/gnulib 20120929031815/gnulib 20120930031815/gnulib 20121001031750/gnulib 20121002031833/gnulib 20121003031813/gnulib 20121004031822/gnulib 20121005031801/gnulib 20121006031831/gnulib 20121007031819/gnulib 20121008031823/gnulib 20121009031755/gnulib 20121011031845/gnulib 20121012031848/gnulib 20121013032330/gnulib 20121014032302/gnulib 20121015032311/gnulib 20121016032312/gnulib 20121017032314/gnulib 20121018032300/gnulib 20121019031835/gnulib 20121020031822/gnulib 20121021031826/gnulib 20121022031811/gnulib 20121023031812/gnulib 20121024031808/gnulib 20121025031806/gnulib 20121026031823/gnulib 20121027031800/gnulib 20121028031824/gnulib 20121029031822/gnulib 20121030031748/gnulib 20121031031749/gnulib 20121101031819/gnulib 20121102031759/gnulib 20121103031756/gnulib 20121104031802/gnulib 20121105031808/gnulib 20121106032000/gnulib 20121107031748/gnulib 20121108031813/gnulib 20121109031745/gnulib 20121110031814/gnulib 20121111031706/gnulib 20121112031806/gnulib 20121113031812/gnulib 20121114031754/gnulib 20121115031747/gnulib 20121116031830/gnulib 20121117031814/gnulib 20121118031812/gnulib 20121119031750/gnulib 20121120031747/gnulib 20121121031750/gnulib 20121122031800/gnulib 20121123031757/gnulib 20121124031754/gnulib 20121125031759/gnulib 20121126031803/gnulib 20121127031748/gnulib 20121128031829/gnulib 20121129031832/gnulib 20121130031824/gnulib 20121201031801/gnulib 20121202031746/gnulib 20121203031832/gnulib 20121204031756/gnulib 20121205031823/gnulib 20121206031813/gnulib 20121207031828/gnulib 20121208031832/gnulib 20121209031811/gnulib 20121210031814/gnulib 20121211031830/gnulib 20121212031820/gnulib 20121213031822/gnulib 20121214031827/gnulib 20121215031816/gnulib 20121216031813/gnulib 20121217031822/gnulib 20121218031750/gnulib 20121219031825/gnulib 20121220031822/gnulib 20121221031830/gnulib 20121222031822/gnulib 20121223031756/gnulib 20121225031801/gnulib 20121226031806/gnulib 20121227031753/gnulib 20121228031851/gnulib 20121229031944/gnulib 20121230031918/gnulib 20121231031920/gnulib 20130101031913/gnulib 20130102031859/gnulib 20130103031906/gnulib 20130104031856/gnulib 20130105031938/gnulib 20130106031854/gnulib 20130107031908/gnulib 20130108102410/gnulib 20130109031927/gnulib 20130110030901/gnulib 20130110084335/gnulib 20130111031926/gnulib 20130111090732/gnulib 20130112031858/gnulib 20130113031855/gnulib 20130114032144/gnulib 20130115031934/gnulib 20130116031909/gnulib 20130117031900/gnulib 20130118031916/gnulib 20130119031920/gnulib 20130120031929/gnulib 20130121032508/gnulib 20130122031923/gnulib 20130123031917/gnulib 20130124031921/gnulib 20130125031903/gnulib 20130126031854/gnulib 20130127031902/gnulib 20130128031909/gnulib 20130129031849/gnulib 20130130031905/gnulib 20130131031912/gnulib 20130201031922/gnulib 20130202031915/gnulib 20130203031837/gnulib 20130204031914/gnulib 20130205031924/gnulib 20130206031842/gnulib 20130207031907/gnulib 20130208031921/gnulib 20130209031910/gnulib 20130210031846/gnulib 20130211031905/gnulib 20130212031907/gnulib 20130213031900/gnulib 20130214031900/gnulib 20130215031921/gnulib 20130216031923/gnulib 20130217031849/gnulib 20130218031847/gnulib 20130219031902/gnulib 20130220031904/gnulib 20130221031903/gnulib 20130222031817/gnulib 20130223031843/gnulib 20130224031906/gnulib 20130225031914/gnulib 20130226031658/gnulib 20130227031653/gnulib 20130228031700/gnulib 20130301031642/gnulib 20130302031844/gnulib 20130303031658/gnulib 20130305031636/gnulib 20130306031653/gnulib 20130307031700/gnulib 20130308031651/gnulib 20130309031700/gnulib 20130310031651/gnulib 20130311031653/gnulib 20130312031637/gnulib 20130313031711/gnulib 20130314031651/gnulib 20130315031648/gnulib 20130316031659/gnulib 20130317031635/gnulib 20130318031524/gnulib 20130318080716/gnulib 20130319031711/gnulib 20130320031704/gnulib 20130321031705/gnulib 20130322031640/gnulib 20130324031650/gnulib 20130325031558/gnulib 20130326031609/gnulib 20130327031607/gnulib 20130328031628/gnulib 20130329031614/gnulib 20130330031604/gnulib 20130331032325/gnulib 20130401031629/gnulib 20130402031618/gnulib 20130403031942/gnulib 20130405031941/gnulib 20130406012110/gnulib 20130407011631/gnulib 20130408011601/gnulib 20130409011616/gnulib 20130410011608/gnulib 20130411011613/gnulib 20130415101646/gnulib 20130416011601/gnulib 20130417011611/gnulib 20130419011623/gnulib 20130420011637/gnulib 20130421011608/gnulib 20130422011600/gnulib 20130423011619/gnulib 20130424011621/gnulib 20130425011620/gnulib 20130426011620/gnulib 20130427011629/gnulib 20130428011622/gnulib 20130429011618/gnulib 20130430011624/gnulib 20130501011639/gnulib 20130502011635/gnulib 20130503011636/gnulib 20130504011633/gnulib 20130505011649/gnulib 20130506011634/gnulib 20130507011623/gnulib 20130508011622/gnulib 20130509011625/gnulib 20130509094357/gnulib 20130510011623/gnulib 20130511011655/gnulib 20130512011637/gnulib 20130513011635/gnulib 20130516011655/gnulib 20130517011701/gnulib 20130518011628/gnulib 20130519011621/gnulib 20130520011628/gnulib 20130521011635/gnulib 20130523011628/gnulib 20130524011642/gnulib 20130525011619/gnulib 20130526011621/gnulib 20130527011623/gnulib 20130528011646/gnulib 20130529011624/gnulib 20130530011919/gnulib 20130531011636/gnulib 20130601011638/gnulib 20130602011639/gnulib 20130603011650/gnulib 20130604011633/gnulib 20130605011745/gnulib 20130606011635/gnulib 20130607011646/gnulib 20130608011654/gnulib 20130609011643/gnulib 20130610011628/gnulib 20130611011642/gnulib 20130612011645/gnulib 20130613011635/gnulib 20130614011641/gnulib 20130615011746/gnulib 20130616011634/gnulib 20130617011624/gnulib 20130618011630/gnulib 20130619011658/gnulib 20130620011658/gnulib 20130621011712/gnulib 20130623011704/gnulib 20130624011706/gnulib 20130625011707/gnulib 20130626011723/gnulib 20130628011726/gnulib 20130629011844/gnulib 20130708031735/gnulib 20130709031703/gnulib 20130710031642/gnulib 20130711031650/gnulib 20130712031635/gnulib 20130713031640/gnulib 20130714031654/gnulib 20130715031652/gnulib 20130716031643/gnulib 20130717031734/gnulib 20130719031709/gnulib 20130720031649/gnulib 20130721031719/gnulib 20130722031700/gnulib 20130723031714/gnulib 20130724031627/gnulib 20130725031733/gnulib 20130726032803/gnulib 20130727032547/gnulib 20130728032810/gnulib 20130729032736/gnulib 20130730031821/gnulib 20130731031801/gnulib 20130801031805/gnulib 20130802031752/gnulib 20130803031948/gnulib 20130804032131/gnulib 20130805031805/gnulib 20130806032340/gnulib 20130807030655/gnulib 20130808030658/gnulib
Paolo Bonzini [Thu, 3 Dec 2009 17:39:47 +0000 (18:39 +0100)]
exclude: Fix header file problems.

* lib/exclude.h: Add multiple inclusion guards and include stdbool.h.

14 years agoautoupdate
Karl Berry [Tue, 1 Dec 2009 14:38:45 +0000 (06:38 -0800)]
autoupdate

14 years agofts: fts_open: do not let an empty string cause immediate failure
Jim Meyering [Tue, 1 Dec 2009 11:06:34 +0000 (12:06 +0100)]
fts: fts_open: do not let an empty string cause immediate failure

This is required in support of GNU rm, for which the command
"rm A '' B" must process and remove both A and B, in spite of
the empty string argument.
* lib/fts.c (fts_open): Do not let the presence of an empty string
cause fts_open to fail immediately.  Most fts-using tools must be
able to process all arguments, in order, and can be expected to
diagnose such arguments themselves.
Also, move declaration of local, "len", "down" to initialization.

14 years agoutimens: fix compilation error
Eric Blake [Mon, 30 Nov 2009 13:45:42 +0000 (06:45 -0700)]
utimens: fix compilation error

Fixes a regression from 2009-11-25.

* lib/utimens.c (lutimens) [!HAVE_UTIMENSAT && HAVE_LUTIMES]:
Declare variable at right scope.

Signed-off-by: Eric Blake <ebb9@byu.net>
14 years agobootstrap: fix handling of various perl --version formats
Pádraig Brady [Mon, 30 Nov 2009 12:29:03 +0000 (12:29 +0000)]
bootstrap: fix handling of various perl --version formats

* build-aux/bootstrap (get_version): Don't use perl's $] special
variable, as that requires updating all bootstrap.conf files to
use perl's x.yyyzzz version format.  Instead make the regular
expression more general to support version formats from older
perl-5.005_002 (5.5.2) and perl-5.11 which has other numbers
in the version line.

14 years agobootstrap: handle perl-5.11's changed --version output
Jim Meyering [Sun, 29 Nov 2009 12:57:05 +0000 (13:57 +0100)]
bootstrap: handle perl-5.11's changed --version output

* build-aux/bootstrap (get_version): Handle perl separately,
since perl-5.11's --version output is different.