+2011-09-07 Bruno Haible <bruno@clisp.org>
+
+ openat: Work around compilation error with OSF/1 5.1 DTK cc.
+ * lib/fopen.c: Use different syntax for include of <stdio.h>.
+ * lib/freopen.c: Likewise.
+ * lib/fstatat.c: Use different syntax for include of <sys/stat.h>.
+ * lib/lstat.c: Likewise.
+ * lib/stat.c: Likewise.
+ * lib/open.c: Use different syntax for include of <fcntl.h>.
+ * lib/openat.c: Include fcntl.h again, explicitly.
+
+2011-09-04 J.T. Conklin <jtc@acorntoolworks.com>
+
+ parse-datetime: document the newly accepted format
+ * doc/parse-datetime.texi (Combined date and time of day items):
+ New section.
+
+2011-09-06 Bruno Haible <bruno@clisp.org>
+
+ acl: Fix a test failure on newer Solaris 10 with ZFS.
+ * tests/test-sameacls.c (main): Interpret acl GETACLCNT failure with
+ ENOSYS as no ACL.
+ Reported by Jim Meyering.
+
+2011-09-06 Bruno Haible <bruno@clisp.org>
+
+ acl: Update for AIX >= 5.3 with NFS.
+ * lib/file-has-acl.c (file_has_acl): Interpret aclx_get failure with
+ ENOSYS as no ACL.
+
+ acl: Fix a test failure on AIX >= 5.3 with NFS.
+ * tests/test-sameacls.c (main): Interpret aclx_get failure with ENOSYS
+ as no ACL.
+
+2011-09-06 Bruno Haible <bruno@clisp.org>
+
+ acl: Fix a test failure on IRIX 6.5 with NFS.
+ * lib/acl-internal.h (MODE_INSIDE_ACL): Define to 0 on IRIX.
+ * lib/set-mode-acl.c (qset_acl): Test !HAVE_ACL_TYPE_EXTENDED instead
+ of MODE_INSIDE_ACL. If !MODE_INSIDE_ACL, do a chmod_or_fchmod always.
+ * lib/copy-acl.c (qcopy_acl): Likewise.
+
+2011-09-05 Paul Eggert <eggert@cs.ucla.edu>
+
+ openat: port to AIX 7.1 with large files
+ AIX 7.1 does a "#define openat open64at" if large files are in use,
+ so we can't simply #undef openat. Use the orig_openat trick (similar
+ to orig_open in lib/open.c) to work around the problem. Problem
+ reported by Kevin Brott for GNU tar, in the thread containing
+ <http://lists.gnu.org/archive/html/bug-tar/2011-09/msg00032.html>.
+ * lib/openat.c (__need_system_fcntl_h): Define first.
+ Include <fcntl.h> and <sys/types.h> before undefining.
+ (orig_openat) [HAVE_OPENAT]: New inline function.
+ (openat) [HAVE_OPENAT]: Do not undef.
+ (rpl_openat): Use orig_openat, not openat.
+
+2011-09-05 Joachim Schmitz <schmitz@hp.com> (tiny change)
+ Bruno Haible <bruno@clisp.org>
+
+ acl: Avoid errors on NonStop Kernel.
+ * lib/file-has-acl.c (file_has_acl) [NonStop Kernel]: Ignore ENOSYS and
+ ENOTSUP errors.
+
+2011-09-05 Bruno Haible <bruno@clisp.org>
+
+ acl: Clean up Solaris code.
+ * lib/acl-internal.h: Remove no-op #if.
+ * lib/file-has-acl.c: Likewise.
+ * lib/set-mode-acl.c (qset_acl): Remove unused Solaris code.
+ * lib/copy-acl.c (qcopy_acl): Likewise.
+
+2011-09-05 Bruno Haible <bruno@clisp.org>
+
+ acl: Fix a bug with NFSv4 ACLs on Solaris 10 (newer version) in
+ binaries built on the original Solaris 10.
+ * lib/file-has-acl.c (file_has_acl): ACLs with 4..6 ACEs can be
+ trivial.
+
+2011-09-05 Bruno Haible <bruno@clisp.org>
+
+ acl: Improve support of NFSv4 ACLs on Solaris 10 (newer version).
+ * lib/acl-internal.h (acl_nontrivial): Declare also on newer Solaris
+ 10.
+ * lib/file-has-acl.c (acl_nontrivial): Define also on newer Solaris 10.
+ (acl_ace_nontrivial): Likewise. Recognize the trivial ACLs with 6 ACEs.
+ * lib/copy-acl.c (qcopy_acl): On newer Solaris 10, use acl or facl
+ instead of acl_get, facl_get, acl_set, facl_set.
+
+2011-09-05 Bruno Haible <bruno@clisp.org>
+
+ copy-file: Try unit tests on more file systems.
+ * tests/test-copy-file-1.sh: New file.
+ * tests/test-copy-file-2.sh: New file.
+ * modules/copy-file-tests (Files): Add them.
+ (Makefile.am): Add them to TESTS.
+
+ acl: Try unit tests on more file systems.
+ * tests/test-file-has-acl-1.sh: New file.
+ * tests/test-file-has-acl-2.sh: New file.
+ * tests/test-set-mode-acl-1.sh: New file.
+ * tests/test-set-mode-acl-2.sh: New file.
+ * tests/test-copy-acl-1.sh: New file.
+ * tests/test-copy-acl-2.sh: New file.
+ * modules/acl-tests (Files): Add them.
+ (Makefile.am): Add them to TESTS.
+
+2011-09-04 Bruno Haible <bruno@clisp.org>
+
+ acl: Improve support of NFSv4 ACLs on Solaris 10 (newer version).
+ * lib/acl-internal.h (ACE_*, NEW_ACE_*): Define also on newer Solaris
+ 10.
+ (OLD_ALLOW, OLD_DENY): New macros.
+ (NEW_ACE_ACCESS_ALLOWED_ACE_TYPE): Renamed from
+ ACE_ACCESS_ALLOWED_ACE_TYPE.
+ (NEW_ACE_ACCESS_DENIED_ACE_TYPE): Renamed from
+ ACE_ACCESS_DENIED_ACE_TYPE.
+ (OLD_ACE_OWNER, OLD_ACE_GROUP, OLD_ACE_OTHER): New macros.
+ (NEW_ACE_EXECUTE): Fix value.
+ (NEW_ACE_APPEND_DATA, NEW_ACE_READ_NAMED_ATTRS,
+ NEW_ACE_WRITE_NAMED_ATTRS, NEW_ACE_DELETE_CHILD,
+ NEW_ACE_READ_ATTRIBUTES, NEW_ACE_WRITE_ATTRIBUTES, NEW_ACE_DELETE,
+ NEW_ACE_READ_ACL, NEW_ACE_WRITE_ACL, NEW_ACE_WRITE_OWNER,
+ NEW_ACE_SYNCHRONIZE): New macros.
+ * lib/set-mode-acl.c (qset_acl): On newer Solaris 10, use acl or facl
+ instead of acl_fromtext, acl_set, facl_set.
+ Fixes a coreutils/tests/cp/perm failure.
+
+2011-09-03 Paul Eggert <eggert@cs.ucla.edu>
+
+ openat: test for fstatat (..., 0) bug
+ Further testing with tar suggests that fstatat (..., 0)
+ does not work in general, on AIX 7.1; see
+ <http://lists.gnu.org/archive/html/bug-tar/2011-09/msg00023.html>.
+ So, give up entirely on AIX 7.1's fstatat, and fall back on our
+ replacement fstatat (which is what older AIX releases were using
+ anyway).
+ * lib/fstatat.c (fstatat) [HAVE_FSTATAT]: Do not undef. The only
+ use is now changed to orig_fstatat. This was probably the right
+ thing to do anyway.
+ (FSTATAT_AT_FDCWD_0_BROKEN): Remove; no longer used.
+ (rpl_fstatat) [FSTATAT_ZERO_FLAG_BROKEN]: Remove.
+ (rpl_fstatat): Simplify, assuming !FSTATAT_ZERO_FLAG_BROKEN.
+ (AT_FUNC_NAME) [FSTATAT_ZERO_FLAG_BROKEN]: Now rpl_fstatat.
+ * m4/openat.m4 (gl_FUNC_FSTATAT): Test for the more-general bug
+ and define FSTATAT_ZERO_FLAG_BROKEN, not FSTATAT_AT_FDCWD_0_BROKEN,
+ if the bug is found.
+
+ openat: test for fstatat (AT_FDCWD, ..., 0) bug
+ This tests for another fstatat bug on AIX 7.1:
+ fstatat (AT_FDCWD, ..., 0) does not work. See
+ <http://lists.gnu.org/archive/html/bug-tar/2011-09/msg00015.html>.
+ * lib/fstatat.c (FSTATAT_AT_FDCWD_0_BROKEN)
+ (LSTAT_FOLLOWS_SLASHED_SYMLINK): Default to 0.
+ (rpl_fstatat): Adjust so that it works around either (or both)
+ bugs if present.
+ * m4/openat.m4 (gl_FUNC_FSTATAT): Test for this fstatat bug.
+
+2011-09-03 Karl Berry <karl@gnu.org>
+
+ * doc/regex.texi (Character Class Operators): Avoid literal ":"
+ in index entries.
+
+2011-09-02 Bruno Haible <bruno@clisp.org>
+
+ Allow the user to override the choice of AR, ARFLAGS, RANLIB.
+ * m4/gnulib-common.m4 (gl_PROG_AR_RANLIB): Don't override the given
+ values of AR, ARFLAGS, RANLIB.
+ Reported by John W. Eaton <jwe@gnu.org> for Octave.
+
+2011-09-02 Bruno Haible <bruno@clisp.org>
+
+ Find 'ar' program that fits with --host argument.
+ * m4/gnulib-common.m4 (gl_PROG_AR_RANLIB): Use AC_CHECK_TOOL.
+
+2011-09-02 Bruno Haible <bruno@clisp.org>
+
+ tests: init.sh: Support any non-GNU diff.
+ * tests/init.sh (compare): If "diff -c" is supported but "diff -u" is
+ not, use "diff -c". Useful on AIX 6.1, HP-UX 11.31, OSF/1 5.1,
+ Solaris 8.
+
+2011-09-02 Bruno Haible <bruno@clisp.org>
+
+ tests: init.sh: work also with any non-GNU diff that supports -u
+ * tests/init.sh: Relax check for diff -u support.
+ Rather than checking for GNU diff via --version, simply check
+ for support for -u itself. Useful at least on OpenBSD 4.9,
+ AIX 7.1, IRIX 6.5, and Solaris 10.
+
+2011-09-01 Bruno Haible <bruno@clisp.org>
+
+ strtoimax, strtoumax: Document problem on HP-UX 11.
+ * doc/posix-functions/strtoimax.texi: Mention HP-UX 11.11 problem.
+ * doc/posix-functions/strtoumax.texi: Likewise.
+
+2011-09-01 Bruno Haible <bruno@clisp.org>
+
+ strtoumax: Avoid link error on OSF/1 with DTK cc.
+ * m4/strtoumax.m4 (gl_FUNC_STRTOUMAX): Always test whether strtoumax is
+ defined as a function.
+ * modules/strtoumax (Depends-on, configure.ac): Test only whether
+ strtoumax is defined, not whether it is declared.
+
+2011-09-01 Bruno Haible <bruno@clisp.org>
+
+ strtoimax: Avoid link error on OSF/1 with DTK cc.
+ * m4/strtoimax.m4 (gl_FUNC_STRTOIMAX): Always test whether strtoimax is
+ defined as a function.
+ * modules/strtoimax (Depends-on, configure.ac): Test only whether
+ strtoimax is defined, not whether it is declared.
+
+2011-09-01 Bruno Haible <bruno@clisp.org>
+
+ imaxdiv: Avoid link error on OSF/1 with DTK cc.
+ * m4/imaxdiv.m4 (gl_FUNC_IMAXDIV): Also test whether imaxdiv is defined
+ as a function.
+ * modules/imaxdiv (configure.ac): Test whether imaxdiv is defined, not
+ whether it is declared.
+
+2011-09-01 Bruno Haible <bruno@clisp.org>
+
+ imaxabs: Avoid link error on OSF/1 with DTK cc.
+ * m4/imaxabs.m4 (gl_FUNC_IMAXABS): Also test whether imaxabs is defined
+ as a function.
+ * modules/imaxabs (configure.ac): Test whether imaxabs is defined, not
+ whether it is declared.
+
+2011-09-01 Bruno Haible <bruno@clisp.org>
+
+ Tests for module 'strtoumax'.
+ * modules/strtoumax-tests: New file.
+ * tests/test-strtoumax.c: New file.
+
+ Tests for module 'strtoimax'.
+ * modules/strtoimax-tests: New file.
+ * tests/test-strtoimax.c: New file.
+
+ Tests for module 'imaxdiv'.
+ * modules/imaxdiv-tests: New file.
+ * tests/test-imaxdiv.c: New file.
+
+ Tests for module 'imaxabs'.
+ * modules/imaxabs-tests: New file.
+ * tests/test-imaxabs.c: New file.
+
+2011-09-01 Bruno Haible <bruno@clisp.org>
+
+ pthread: Determine $(LIB_PTHREAD) correctly on IRIX 6.5.
+ * m4/pthread.m4 (gl_PTHREAD_CHECK): Check for pthread_join, not
+ pthread_create.
+
+2011-09-01 Paul Eggert <eggert@cs.ucla.edu>
+
+ openat: work around AIX 7.1 fstatat issue
+ This should fix the problem that was not properly fixed
+ in the previous change, dated 2011-08-30.
+ * lib/fstatat.c: Include <sys/stat.h> twice, the first with
+ __need_system_stat_h defined.
+ (orig_fstatat) [HAVE_FSTATAT]: New function.
+ (rpl_fstatat): Go back to the old way of doing things,
+ except call orig_fstatat instead of fstatat.
+ * m4/openat.m4 (gl_FUNC_FSTATAT): Remove unnecessary check for openat.
+ Remove unnecessary check whether fstatat fills in st_size etc.
+
+2011-09-01 Bruno Haible <bruno@clisp.org>
+
+ sys_select: Avoid a syntax error regarding timespec_t on IRIX 6.5.
+ * lib/sys_select.in.h [__sgi]: When included from <sys/bsd_types.h>,
+ just include the system's header.
+
+2011-08-31 Jim Meyering <meyering@redhat.com>
+
+ tests: avoid spurious assertion failure in test-float.c on ppc64
+ * tests/test-float.c (test_long_double): Comment out an assertion,
+ LDBL_MIN_EXP <= DBL_MIN_EXP, that is failing at least on PowerPC-64
+ with gcc-4.4.4.
+
+ maint: indent with spaces, not TABs
+ I need to get in the habit of running gnulib's "make check".
+ Both of these would have been caught.
+ * m4/largefile.m4: Indent with spaces, not TABs.
+ * lib/parse-datetime.y (iso_8601_time): Likewise.
+ Spotted by Pádraig Brady.
+
+ test-parse-datetime.c: accommodate a relatively strict gcc warning
+ * tests/test-parse-datetime.c (gmt_offset): Declare function "static",
+ to avoid a warning from gcc's -Werror=missing-declarations.
+ Insert a few spaces-before-funcall-parenthesis.
+
+2011-08-17 J.T. Conklin <jtc@acorntoolworks.com>
+
+ parse-datetime: accept ISO 8601 date and time rep with "T" separator
+ The parser now accepts ISO 8601 date-time strings with "T" as the
+ separator. It has long parsed dates like "2004-02-29 16:21:42"
+ with a space between the date and time strings. Now it also parses
+ "2004-02-29T16:21:42" and fractional-second and time-zone-annotated
+ variants like "2004-02-29T16:21:42.333-07:00"
+ * lib/parse-datetime.y: Parse ISO 8601 extended date and time
+ of day representation using the 'T' separator character.
+ * doc/parse-datetime.texi (General date syntax): replace use of
+ deprecated --iso-8601 option with --rfc-3339 in example of date
+ command output formats that can be parsed.
+ * tests/test-parse-datetime.c (tm_diff): New function, taken from
+ lib/parse-datetime.y.
+ (gmt_offset): New function.
+ (main): Add additional test cases to validate ISO8601 extended
+ date and time of day parsing.
+
+2011-08-31 Bruno Haible <bruno@clisp.org>
+
+ freopen: Documentation.
+ * doc/posix-functions/freopen.texi: Document the bug with the NULL file
+ name.
+ Reported by Claudio Bley <claudio.bley@gmail.com>.
+
+2011-08-31 Claudio Bley <claudio.bley@gmail.com> (tiny change)
+
+ freopen: Don't crash if the filename argument is NULL.
+ * lib/freopen.c (rpl_freopen): Don't compare the filename if it is
+ NULL.
+
+2011-08-30 Paul Eggert <eggert@cs.ucla.edu>
+
+ openat: work around AIX 7.1 fstatat bug
+ Problem reported by Kevin Brott for GNU tar, in the thread containing
+ <http://lists.gnu.org/archive/html/bug-tar/2011-08/msg00015.html>.
+ * lib/fstatat.c (rpl_fstatat): Do not invoke underlying fstatat if
+ FSTATAT_ST_SIZE_ETC_BROKEN.
+ (fstatat) [FSTATAT_ST_SIZE_ETC_BROKEN && HAVE_FSTATAT]: #define to
+ rpl_fstatat.
+ * m4/openat.m4 (gl_FUNC_FSTATAT): New macro, with the fstatat-relevant
+ part of gl_FUNC_OPENAT. Also, check for the AIX 7.1 bug, and use
+ AC_CHECK_FUNCS_ONCE for fstatat.
+ (gl_FUNC_OPENAT): Use it. Use AC_CHECK_FUNCS_ONCE for
+ fchmodat, mkdirat, openat and unlinkat.
+
+2011-08-30 Bruno Haible <bruno@clisp.org>
+
+ Avoid endless recursions if config.h includes some header files.
+ * lib/fopen.c (__need_FILE): Define already before including config.h.
+ * lib/freopen.c (__need_FILE): Likewise.
+ * lib/open.c (__need_system_fcntl_h): Likewise.
+ * lib/stat.c (__need_system_sys_stat_h): Likewise.
+ * lib/lstat.c (__need_system_sys_stat_h): Likewise.
+ Reported by Michael Goffioul <michael.goffioul@gmail.com>.
+
+2011-08-25 Karl Berry <karl@gnu.org>
+
+ * config/srclist.txt (ylwrap): new try.
+ * build-aux/ylwrap: new file.
+
+2011-08-23 Bruno Haible <bruno@clisp.org>
+
+ tmpdir: Use a good default directory on native Windows.
+ * lib/tmpdir.c: Include <windows.h>, pathmax.h.
+ (P_tmpdir): Default to _P_tmpdir on native Windows.
+ (path_search): On native Windows, try the value returned by GetTempPath
+ before trying P_tmpdir.
+ * modules/tmpdir (Depends-on): Add pathmax.
+ Suggested by John Darrington <john@darrington.wattle.id.au>.
+
+2011-08-20 Reuben Thomas <rrt@sc3d.org>
+
+ doc: fix typo in README-release
+ * top/README-release: Capitalize first word of a sentence.
+
2011-08-19 Jim Meyering <meyering@redhat.com>
+ fts: do not exhaust memory when processing million-entry directories
+ Before this change, traversing (via rm -rf, find, du, etc.) an N-entry
+ directory would require about 256*N bytes of memory. Thus, it was
+ easy to construct a directory too large to be processed by any of
+ those tools. With this change, fts' maximum memory utilization is
+ now limited to around 30MB.
+ * lib/fts.c (FTS_MAX_READDIR_ENTRIES): Define.
+ (fts_read): When we've processed the final entry (i.e., when
+ ->fts_link is NULL) and fts_dirp is non-NULL, call fts_build
+ using the parent entry to read any remaining entries. Dispatch
+ depending on what fts_build returns:
+ - NULL+stop, aka failure: stop
+ - NULL otherwise: move up in the dir hierarchy
+ - non-NULL: handle this new entry
+ (fts_build): Declare and use new local, continue_readdir.
+ Prepare to be called from fts_read, when the entries
+ from a partially-read directory have just been exhausted.
+ In that case, we'll skip the opendir and instead use the parent's
+ fts_dirp and derive dir_fd from that.
+ Finally, in the readdir loop, if we read max_entries entries,
+ exit the loop ensuring *not* to call closedir. This is required
+ so that fts_dirp can be reused on a subsequent call.
+ Prompted by Ben England's report of memory exhaustion in find
+ and rm -rf vs. NFS: https://bugzilla.redhat.com/719749.
+
+ maint: fts: move decl of `dp' down into while loop; split a long line
+ * lib/fts.c (fts_build): No semantic change.
+
+ fts: add/use new struct member, fts_dirp
+ We are about to use this to manage any directory with
+ too many entries to read all of them into memory at once.
+ To do that, we'll need to save the DIR* pointer in each
+ affected FTSENT struct.
+ * lib/fts_.h: Include <dirent.h>.
+ (struct FTSENT) [fts_dirp]: New member.
+ * lib/fts.c (closedir_and_clear): Define.
+ Use it in place of closedir so that we are sure to
+ clear the new fts_dirp member when done with it.
+ (fts_alloc): Initialize the new member.
+ (fts_lfree): Free, if needed.
+
+ maint: fts: give __opendir2 a new parameter and rename
+ * lib/fts.c (__opendir2): Give it a new parameter, Pdir_fd, rather
+ than surreptitiously using sole caller's "dir_fd".
+ (fts_opendir): Rename from __opendir2.
+
+ maint: fts.c: remove __opendir2's now-unused parameter, oflag
+ * lib/fts.c (__opendir2): Remove unused parameter, oflag.
+
+ maint: fts.c: correct off-by-one indentation
+ * lib/fts.c (fts_build): Correct indentation, change style
+ of a couple of block comments, and bracing style.
+
+ maint: fts.c: move __opendir2 #define "up" out of function body
+ * lib/fts.c (__opendir2): Move "up". No semantic change.
+
maint: fts.c: remove #if-0'd FTS_WHITEOUT code
* lib/fts.c: Remove #if-0'd FTS_WHITEOUT code. It's been #if-0'd
out for a long time and besides was useful only on BSD systems.