Bruno Haible [Tue, 5 Oct 2010 00:30:24 +0000 (02:30 +0200)]
gnulib-tool: Synthesize appropriate _LDFLAGS for a libtool library.
* gnulib-tool (func_emit_lib_Makefile_am): When preparing for a libtool
library, put '-no-undefined' and the link dependencies into _LDFLAGS.
Reported by Bruce Korb and Eric Blake.
Bruno Haible [Mon, 4 Oct 2010 00:23:23 +0000 (02:23 +0200)]
gnulib-tool: Fixes for --create-testdir with --libtool.
* gnulib-tool (func_get_automake_snippet): Don't augment
EXTRA_lib_SOURCES for the pt_chown module, since pt_chown.o goes into
an executable.
(func_create_testdir): Handle module 'alloca' like func_import.
Reported by Bruce Korb <bruce.korb@gmail.com>.
Bruno Haible [Sun, 3 Oct 2010 16:03:48 +0000 (18:03 +0200)]
acl: Add support for ACLs on NonStop Kernel.
* m4/acl.m4 (gl_FUNC_ACL): For Solaris, test for facl(), not for acl().
Check whether the function aclsort() exists.
* lib/acl-internal.h: For Solaris, test HAVE_FACL, not HAVE_ACL.
(acl_nontrivial) [HAVE_ACLSORT]: New declaration.
* lib/file-has-acl.c: For Solaris, test HAVE_FACL, not HAVE_ACL.
(acl_nontrivial [HAVE_ACLSORT]: New function.
(file_has_acl): Implement for NonStop Kernel.
* lib/set-mode-acl.c: For Solaris, test HAVE_FACL, not HAVE_ACL.
(qset_acl): Implement for NonStop Kernel.
* lib/copy-acl.c (qcopy_acl): Implement for NonStop Kernel.
* tests/test-sameacls.c: For Solaris, test HAVE_FACL, not HAVE_ACL.
(main): Implement for NonStop Kernel.
* tests/test-file-has-acl.sh (acl_flavor): Set to 'nsk' on NonStop
Kernel. Handle this flavor.
* tests/test-set-mode-acl.sh: Likewise.
* tests/test-copy-acl.sh: Likewise.
* tests/test-copy-file.sh: Likewise.
Bruno Haible [Sat, 2 Oct 2010 16:54:05 +0000 (18:54 +0200)]
Define missing EDQUOT on NonStop Kernel.
* lib/errno.in.h (EDQUOT): Assign a value if missing.
* lib/strerror.c (rpl_strerror): Handle missing EDQUOT.
* m4/errno_h.m4 (gl_HEADER_ERRNO_H): Also test whether EDQUOT is
missing.
* doc/posix-headers/errno.texi: Mention the NSK bug.
* doc/posix-functions/strerror.texi: Mention the workaround on NSK.
Reported by Joachim Schmitz <schmitz@hp.com>.
Bruno Haible [Sat, 2 Oct 2010 09:44:20 +0000 (11:44 +0200)]
New module 'system-posix'.
* modules/system-posix: New file.
* lib/stdlib.in.h: Include <sys/wait.h> only when the 'system-posix'
module is present.
* m4/stdlib_h.m4 (gl_STDLIB_H_DEFAULTS): Initialize
GNULIB_SYSTEM_POSIX.
* modules/stdlib (Depends-on): Remove sys_wait.
(Makefile.am): Substitute GNULIB_SYSTEM_POSIX.
* doc/posix-functions/system.texi: Mention the new module.
* doc/posix-headers/stdlib.texi: Likewise.
* tests/test-stdlib.c: If GNULIB_TEST_SYSTEM_POSIX is not defined,
define test_sys_wait_macros to a no-op.
Reported by Sam Steingold <sds@gnu.org>.
Eric Blake [Thu, 30 Sep 2010 17:14:11 +0000 (11:14 -0600)]
bootstrap: use glibtoolize on MacOS
* build-aux/bootstrap (check_versions): Convert libtool into
libtoolize.
(tool search): Move libtool check earlier, and look for
glibtoolize for MacOS.
(gnulib_tool_options): Auto-add --libtool when appropriate.
Reported by Justin Clift.
Eric Blake [Thu, 30 Sep 2010 15:23:12 +0000 (09:23 -0600)]
getdate: rename to get_date
Note: getdate.h is not renamed, to minimize client impact.
Besides, whenever we eventually add getdate-posix, we'll
want to use getdate.m4 and getdate.c for the implementation,
but don't need to worry about getdate.h since getdate() uses
<time.h> for its header.
* modules/getdate: Mark obsolete. Move old contents...
* modules/get_date: ...to new module name.
* modules/getdate-tests: Move...
* modules/get_date-tests: ...here.
* m4/getdate.m4: Move...
* m4/get_date.m4: ...here, and rename gl_GETDATE to gl_GET_DATE.
* lib/getdate.y: Move...
* lib/get_date.y: ...here.
* tests/test-getdate.c: Move...
* tests/test-get_date.c: ...here.
* doc/posix-functions/getdate.texi (getdate): Update name.
* NEWS: Mention the change.
Bruno Haible [Tue, 28 Sep 2010 23:00:17 +0000 (01:00 +0200)]
New module 'poll-h'.
* lib/poll.in.h: Include c++defs.h and warn-on-use.h.
(poll): Use modern idiom.
* modules/poll-h: New file.
* modules/poll (Files): Remove lib/poll.in.h.
(Depends-on): Add poll-h.
(configure.ac): Invoke gl_POLL_MODULE_INDICATOR.
(Makefile.am): Move code for generation of poll.h to modules/poll-h.
* m4/poll_h.m4: New file.
* m4/poll.m4 (gl_FUNC_POLL): Require gl_POLL_H. Don't check for poll.h
here. Don't set POLL_H here. Instead, set HAVE_POLL and REPLACE_POLL
and invoke gl_REPLACE_POLL_H.
* lib/poll.c: Use common idiom.
* tests/test-poll.c: Likewise.
* doc/posix-headers/poll.texi: Mention the poll-h module.
Suggested by Eric Blake.
Paul Eggert [Wed, 22 Sep 2010 08:32:19 +0000 (01:32 -0700)]
pthread: add to system <pthread.h> instead of replacing it all, for MacOS
* lib/pthread.in.h: Add split double-inclusion guard, and include
system <pthread.h> if there is one. Use @@-style as in other
.in.h files. Define PTHREAD_COND_INITIALIZER etc. only if system
pthread.h doesn't.
(pthread_mutexattr_destroy, pthread_mutexattr_init):
(pthread_mutexattr_settype, pthread_mutex_trylock):
New static inline functions, if there's no system <pthread.h>.
(pthread_spinlock_t, pthread_spin_init, pthread_spin_destroy):
(pthread_spin_lock, pthread_spin_trylock, pthread_spin_unlock):
Approximate with mutexes if the system lacks spinlocks, as in
MacOS.
* m4/pthread.m4 (gl_PTHREAD_CHECK): Require gl_PTHREAD_DEFAULTS.
Add gl_CHECK_NEXT_HEADERS for pthread.h, and support the usual
@@-style. Check for spinlocks separately.
(gl_PTHREAD_DEFAULTS): New macro.
* modules/pthread: Redo to use a more typical style for in.h files.
Eric Blake [Tue, 21 Sep 2010 21:27:59 +0000 (15:27 -0600)]
net_if: enhance tests
* tests/test-net_if.c (main): Move signature checks earlier.
Print failures to stderr.
* doc/posix-functions/if_freenameindex.texi (if_freenameindex):
Document the bug that we do not yet fix.
Jim Meyering [Sat, 18 Sep 2010 19:26:27 +0000 (21:26 +0200)]
maint.mk: avoid unexpanded \n in two diagnostics
* top/maint.mk (sc_prohibit_always_true_header_tests):
Don't use a literal \n in a halt=... assignment. It would not be
expanded, and the two \n bytes would appear in the diagnostic output
rather than the desired newline. Use halt=$$(printf ... instead.
(sc_vulnerable_makefile_CVE-2009-4029): Likewise.
Jim Meyering [Sat, 18 Sep 2010 06:33:23 +0000 (08:33 +0200)]
init.sh: don't let an ephemeral "*.exe" make us skip all dir entries
Not that it's likely to happen, but if I were to remove from a PATH
directory a file named "*.exe" (yes, starting with an asterisk),
at just the right moment, it would have made init.sh ignore all
remaining .exe-suffixed names in that directory.
* tests/init.sh (find_exe_basenames_): Don't give up on a directory if
a file named "*.exe" is removed between the glob expansion and the
processing of that oddly named file.
Eric Blake [Fri, 17 Sep 2010 22:36:08 +0000 (16:36 -0600)]
mirbsd: add some more support
* m4/c-stack.m4 (AC_SYS_XSI_STACK_OVERFLOW_HEURISTIC): MirBSD is
in BSD family.
* m4/gc-random.m4 (gl_GC_RANDOM): MirBSD supports same random
devices as OpenBSD.
* m4/host-os.m4 (mirbsd): Add MirBSD.
Bruno Haible [Fri, 17 Sep 2010 16:18:38 +0000 (10:18 -0600)]
Take over the maintenance of some older macros from Autoconf.
* m4/error.m4 (AC_FUNC_ERROR_AT_LINE): New macro, from GNU Autoconf.
* m4/lstat.m4 (AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK): New macro, from
GNU Autoconf.
* m4/memcmp.m4 (AC_FUNC_MEMCMP): New macro, from GNU Autoconf.
* m4/mktime.m4 (AC_FUNC_MKTIME): Change comment.
Eric Blake [Fri, 17 Sep 2010 14:29:16 +0000 (08:29 -0600)]
fdutimensat: drop atflag validation
* lib/fdutimensat.c (fdutimensat): Allow AT_SYMLINK_NOFOLLOW even
with valid fd, to close a race scenario where futimens is
unsupported and FILE was replaced by a symlink.
* tests/test-fdutimensat.c (do_fdutimens, main): Adjust test
accordingly.
Suggested by Paul Eggert.
Bruno Haible [Fri, 17 Sep 2010 02:05:32 +0000 (04:05 +0200)]
login_tty: Make the replacement code work on BSD systems.
* lib/login_tty.c: Include <sys/ioctl.h>.
(login_tty): Use ioctl TIOCSCTTY when available.
* modules/login_tty (Depends-on): Add sys_ioctl.
Reported by Mats Erik Andersson <mats.andersson@gisladisker.se>.
Bruno Haible [Fri, 17 Sep 2010 02:00:49 +0000 (04:00 +0200)]
login_tty: Stricter unit test.
* modules/login_tty-tests (Depends-on): Add tcgetsid.
* tests/test-login_tty.c (main): Also check the results of tcgetpgrp()
and tcgetsid() after login_tty.
Reported by Mats Erik Andersson <mats.andersson@gisladisker.se>.
Eric Blake [Thu, 16 Sep 2010 23:12:35 +0000 (17:12 -0600)]
fdutimensat: add an atflag parameter
* lib/fdutimensat.c (fdutimensat): Add new parameter.
* lib/utimens.h (fdutimensat): Update prototype.
* tests/test-fdutimensat.c: Adjust test to match.
* NEWS: Document the change.
Suggested by Paul Eggert.
* m4/memchr.m4 (gl_FUNC_MEMCHR): Detect glibc 2.11.2 failure on
Alpha.
* doc/posix-functions/memchr.texi (memchr): Tweak wording.
* tests/test-memchr.c (main): Enhance test.
Reported by Nelson H. F. Beebe.
Paul Eggert [Tue, 14 Sep 2010 16:03:55 +0000 (09:03 -0700)]
fts, getcwd, glob: audit for dirfd returning -1
* lib/fts.c (opendir): Remove #define; no longer used.
(opendirat): New arg PDIR_FD. All callers changed.
(fts_build, _opendir2): Use new opendirat to avoid the need for
dirfd, or for checking whether dirfd returns a negative value.
Don't use opendir; always use openat followed by fdopendir.
* lib/getcwd.c (__getcwd): Don't reset fd; fdopendir no longer clobbers
it.
* lib/glob.c (link_exists_p): Add comment explaining why dirfd never
returns -1 here.
* modules/fts (Depends-on): Remove dirfd.
* modules/getcwd (Depends-on): Likewise.
Paul Eggert [Mon, 13 Sep 2010 19:38:41 +0000 (12:38 -0700)]
fts: use O_NOFOLLOW to avoid race condition when opening a directory
* lib/fts.c (opendirat): New arg extra_flags.
(__opendir2): Use it to avoid following symlinks when opening
a directory, if symlinks are not supposed to be followed. See
<http://lists.gnu.org/archive/html/bug-gnulib/2010-09/msg00213.html>.
Paul Eggert [Mon, 13 Sep 2010 19:21:47 +0000 (12:21 -0700)]
fdopendir: preserve argument fd before returning
* lib/fdopendir.c: Adjust comments to say POSIX, not Solaris.
(fdopendir_with_dup, fd_clone_opendir): New static functions.
(fdopendir): Use them, arranging for FD to be open to the same
directory that it was when it started. (It might be temporarily
closed while fdopendir is running, so this not thread- or
signal-safe.) Be careful to do the right thing even when file
descriptors are scarce and dup fails with errno == EMFILE. See
<http://lists.gnu.org/archive/html/bug-gnulib/2010-09/msg00208.html>.
Paul Eggert [Sun, 12 Sep 2010 21:21:52 +0000 (14:21 -0700)]
savedir: add streamsavedir, deprecate fdsavedir
* NEWS: Mention deprecation of fdsavedir.
* lib/savedir.c (streamsavedir): New extern function, whose name
ends in "savedir" to be consistent with the others. This differs
from savedirstream in that it doesn't close its argument. The
next version of GNU tar will use this instead of fdsavedir, to
avoid some race conditions and conserve file descriptors.
(savedirstream): Reimplement as a wrapper around streamsavedir.
(fdsavedir): Add a comment deprecating this function. As far as
I know, only GNU tar used it, and GNU tar doesn't need it any more.
* lib/savedir.h (streamsavedir): New decl.
(fdsavedir): Add a comment deprecating this.
Paul Eggert [Fri, 10 Sep 2010 18:55:27 +0000 (11:55 -0700)]
fcntl-h: define O_CLOEXEC and O_EXEC if not defined; use new defines
* doc/posix-headers/fcntl.texi (fcntl.h): Document that
O_CLOEXEC is now defined to 0 if it is not defined, like other flags.
Also, O_EXEC is now defined to be O_RDONLY if O_EXEC is not defined.
Similarly for O_SEARCH; this last was already true, but not documented.
* lib/fcntl.in.h (O_CLOEXEC): Define to 0 if not defined.
* lib/dup-safer-flag.c (O_CLOEXEC): Remove now-useless #define.
* lib/dup3.c, lib/pipe2.c, tests/test-dup-safer.c, tests/test-fcntl.c:
Likewise.
* lib/popen-safer.c (open_noinherit): Check whether O_CLOEXEC
is zero, not whether it is defined.
* tests/test-dup3.c, tests/test-pipe2.c (main): Likewise.
* lib/progreloc.c (find_executable): Use O_EXEC rather than O_RDONLY.
* lib/open.c (open): Check for O_SEARCH as well as for O_RDONLY.