NEWS.stable: log cherry-pick [6cf1a95]->[338ebcb] * lib/fstatat.c: Include <sys/types...
[gnulib.git] / ChangeLog
index f6e27cd..0a2351e 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,226 @@
+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.
+
+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.
+
+2011-08-18  Paul Eggert  <eggert@cs.ucla.edu>
+
+       regex: port to Stratus OpenVOS
+       * lib/regex_internal.h (internal_function) [!_LIBC]: Simply
+       define to empty, rather than attempting nonportable optimizations.
+       Problem reported by Paul Green in:
+       http://lists.gnu.org/archive/html/bug-diffutils/2011-08/msg00047.html
+       and fix suggested by Eric Blake in:
+       http://lists.gnu.org/archive/html/bug-gnulib/2011-08/msg00143.html
+
+2011-08-17  Eric Blake  <eblake@redhat.com>
+
+       getcwd: fix test failures on mingw
+       * lib/getcwd.c (__getcwd): Early exit for ERANGE.
+       * tests/test-getcwd.c (test_abort_bug, test_long_name): Don't fail
+       test if long directory cannot be created, and allow mingw errno.
+
+       getcwd-lgpl: fix m4 to match relaxed test for BSD
+       * m4/getcwd.m4 (gl_FUNC_GETCWD_NULL): Relax probe.
+       (gl_FUNC_GETCWD_SIGNATURE): New macro.
+       (gl_FUNC_GETCWD_LGPL, gl_FUNC_GETCWD): Use it.
+       * doc/posix-functions/getcwd.texi (getcwd): Tweak mentions of
+       signature problem.
+
+       getcwd: fix compilation on mingw64
+       * lib/unistd.in.h (includes) [mingw]: Include <direct.h> for
+       getcwd.
+       Reported by Marc-AndrĂ© Lureau.
+
+       pipe2: silence compiler warning
+       * lib/pipe2.c (pipe2): Hide label if it is not used.
+
+2011-08-15  Ben Pfaff  <blp@cs.stanford.edu>
+
+       relocatable-prog: fix link error
+       * modules/relocatable-prog (configure.ac) [RELOCATABLE]: Also
+       invoke AC_LIBOBJ([relocatable]).  This invocation was previously
+       in the gl_RELOCATABLE_LIBRARY macro.  That invocation was moved
+       into modules/relocatable-lib without noticing that
+       modules/relocatable-prog also invokes gl_RELOCATABLE_LIBRARY and
+       also needs to build relocatable.c.
+
+2011-08-12  Paul Eggert  <eggert@cs.ucla.edu>
+
+       getaddrinfo: fix sh typo in gai_strerrorA decl checking
+       * m4/getaddrinfo.m4 (gl_GETADDRINFO): Fix typo in the generated
+       shell code: it contained a 'break' that was not in a loop.
+       Apparently the macro assumed that AC_CHECK_DECLS is implemenented
+       via a shell-language loop; this may have been true in old Autoconf
+       versions, but it's not true in Autoconf 2.68.  I found this bug
+       when testing coreutils git on Solaris 8, whose shell complains
+       about the syntax error.
+
+2011-08-12  Simon Josefsson  <simon@josefsson.org>
+
+       * lib/base64.c: Fix comment to reference RFC 4648.
+       Suggested by Bruno Haible <bruno@clisp.org> and Gijs van Tulder
+       <gvtulder@gmail.com>.
+
+2011-08-11  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * build-aux/bootstrap (slurp): Remove obsolescent gettext.m4 patch.
+
+       po/Makefile.in.in: fix make -q problem
+       * build-aux/po/Makefile.in.in (check-macro-version): Remove this
+       rule, since there's no file named 'check-macro-version' and its
+       use as a file breaks make -q.
+       (all): Don't depend on check-macro-version.
+       (CHECK_MACRO_VERSION): New macro.
+       (stamp-po): Use it.
+
+       configmake: fix make -q problem
+       * modules/configmake (configmake.h): Update configmake.h's time stamp
+       even if the file does not change.  Otherwise, 'make -q' fails.
+       Problem reported by Simon Josefsson in
+       <http://lists.gnu.org/archive/html/bug-gnulib/2011-08/msg00088.html>.
+
 2011-08-11  Jim Meyering  <meyering@redhat.com>
 
        git-version-gen: correct the advice in a comment