X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=ChangeLog;h=a24557021eccfb4f98c9792ae441d129e5b5d1af;hb=68dd9ac979d5c3afd72f3d2fb0d6dcda32b3c384;hp=414186a049feb60ff669694eefc3acb5aab22cde;hpb=d16d5a56e1c99790c2452c66906760ac1109d013;p=gnulib.git diff --git a/ChangeLog b/ChangeLog index 414186a04..a24557021 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,66 @@ +2011-08-23 Bruno Haible + + tmpdir: Use a good default directory on native Windows. + * lib/tmpdir.c: Include , 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 . + +2011-08-20 Reuben Thomas + + doc: fix typo in README-release + * top/README-release: Capitalize first word of a sentence. + 2011-08-19 Jim Meyering + 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 . + (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.