Imported Upstream version 4.5.10
[platform/upstream/findutils.git] / NEWS
1 GNU findutils NEWS - User visible changes.      -*- outline -*- (allout)
2
3 * Major changes in release 4.5.10, 2011-05-11
4
5 ** Documentation Changes
6
7 The manual now includes a small number of references to further
8 reading on security.
9
10 ** Bug Fixes
11
12 #30608: Automagic dependency on selinux.  The configure script now
13 provides a --without-selinux option.
14
15 #29949: find -execdir does not change working directory
16
17 #31359: test-strstr unit test fails on alpha.
18
19 #30777: find -exec echo TURNIP{} \+ is accepted but TURNIP is eaten
20
21 #30180: error message from incorrect -size option is off
22
23 #29828: test suite deadlock on FreeBSD.
24
25 ** Translations
26
27 Updated translations: Finnish, Italian, Danish, Slovenian, German,
28 Estonian, French, Japanese, Danish.
29
30 * Major changes in release 4.5.9, 2010-04-29
31
32 ** Bug Fixes
33
34 #29593: Make import-gnulib.sh work under a POSIX shell.
35
36 #29511: fails to build on kfreebsd-*
37
38 #27563: -L breaks -execdir
39
40 #19593: -execdir .... {} + has suboptimal performance (see below)
41
42 ** Translations
43
44 Updated translations: Chinese (simplified).
45
46 ** Performance changes
47
48 The find program will once again build argument lists longer than 1
49 with "-execdir ...+".  The upper limit of 1 argument for execdir was
50 introduced as a workaround in findutils-4.3.4.   The limit is now
51 removed, but find still does not issue the maximum possible number of
52 arguments, since an exec will occur each time find encounters a
53 subdirectory (if at least one argument is pending).
54
55 ** Functional enhancements to xargs
56
57 You can now increase the parallelism of xargs in mid-run by sending
58 it SIGUSR1, and decrease the parallelism with SIGUSR2.
59
60 * Major changes in release 4.5.8, 2010-04-07
61
62 ** Bug Fixes
63
64 #29460: -printf %Y fails in $CWD-dependent way
65
66 #27974: Use gnulib's xreadlinkat support
67
68 #29435: fd_is_cloexec does not work on Fedora buildhosts
69
70 #27221: symlink_loop check broken by FTS_CWDFD
71
72 #27213: avoid failed assertions for non-executable directories.
73
74 ** Translations
75
76 Updated Vietnamese, Czech, Dutch, Polish, Russian translations.
77
78 * Major changes in release 4.5.7, 2010-04-03
79
80 ** Performance changes
81
82 If you use the -fstype FOO predicate and specify a filsystem type FOO
83 which is not known (e.g. present in /etc/mtab) at the time find
84 starts, that predicate is now equivalent to -false.  This substitution
85 currently occurs at optimisation level 2 and above.
86
87 ** Translations
88
89 Copyright headers in the translation files have been updated.  Some
90 additional messages have been marked for translation.  However, there
91 have not been any changes to translation text.  The main purpose of
92 this release is to provide a base for updated translations.
93
94 * Major changes in release 4.5.6b, 2010-03-30
95
96 This is a replacement release for 4.5.6, which is not available by FTP
97 since it contains Makefiles which are vulnerable to CVE-2009-4029.
98
99 * Major changes in release 4.5.6, 2010-03-30
100
101 ** Functional Enhancements to find
102
103 patch #4848: Patch - Support for SELinux
104
105 ** Bug Fixes
106
107 #29089: SELinux --context and %Z options
108
109 #28872: Mistake in "#safer" example in "Problems with -exec and
110         filenames" section of the Texinfo manual.
111
112 #28824: Corrected error message for "-ctime x".
113         Likewise for -gid, -inum, -links, -mmin, -cmin, -amin,
114         -uid, -used, -atime, -mtime, -ctime.
115
116 #27975: Infinite loop for -exec [..] {} +.
117
118 #27846: Assertion failure in xargs.c on AIX.
119
120 #27375: Open file descriptors leak into child processes.
121
122 #27017: find -D opt / -fstype ext3 -print , -quit coredumps
123
124 #27328: segfault if the initial exec for "find -exec" fails.
125
126 #27017: find -D opt / -fstype ext3 -print , -quit coredumps.
127
128 #26868: compilation error in pred.c on Solaris x86_64
129
130 #24873: Duplicate fprint option corrupts output
131
132 #23920: warn about un-matchable -path arguments ending in /.
133
134 #19120: Patch to fix single quotes in man page find(1)
135
136 ** Documentation Changes
137
138 #26327: xargs man page is vague about the number of times command is executed.
139
140 * Major changes in release 4.5.5, 2009-07-06
141
142 xargs now handles the case where the system's actual exec limits are
143 smaller than the value of ARG_MAX at compile time.  Very few platforms
144 normally have this property, but it is possible to configure some Unix
145 systems this way.
146
147 ** Bug Fixes
148
149 #25359: files/testsuite/find.gnu/posix-h.exp tests fail
150
151 #26587: Fix a typo in -execdir documentation (it says -exec by mistake
152 in the text).
153
154 #26537: find -prune now makes sure it has valid stat() information.
155
156 #22708: Exit status 126 and 127 from the utility invoked from xargs
157 now makes xargs return 123, meaning that exit status values 126 and
158 127 now unambigously mean that the utility could not be run or could
159 not be found, respectively.
160
161 ** Documentation Changes
162
163 The -wholename option to find is no longer preferred over -ipath.
164
165
166 * Major changes in release 4.5.4, 2009-03-10
167
168 ** Performance changes
169
170 The ftsfind executable (which is built by default as "find") now calls
171 fts() in such a way that it avoids calling stat() on directory
172 entries, if it doesn't need the information.  This can produce a
173 significant speedup on filesystems which don't populate the d_type
174 element of struct dirent, for example reiserfs.  Anecdotal evidence
175 suggests this can speed updatedb up from about 30 minutes to 3-4
176 minutes.
177
178 The ftsfind executable also now avoids calling stat() functions to
179 discover the inode number of a file, if we already read this
180 information from the directory.  This does provide a speed-up, but
181 only for a restricted set of commands such as "find . -inum 4001".
182 This fix is listed below as bug #24342.
183
184 ** Bug Fixes
185
186 #25764: remove duplicate entry for 'proc' in updatedb's $PRUNEFS.
187
188 #25359: find -H wrongly behaves like -L sometimes; this bug affects
189 only filesystems which populate d_type and affects -type and -printf
190 %y.   This does not affect the default behaviour of find or find -P.
191
192 #25144: Misleading error message when argument to find -user is an
193 unknown user or is missing.
194
195 #25154: Allow compilation with C compilers that don't allow
196 declarations to follow statements.
197
198 #24342: -inum predicate shoud use dirent.d_ino instead of stat.st_ino
199 (this is a performance bug).
200
201 ** Translations
202
203 Updated translations for Bulgarian, German, Irish, Hungarian,
204 Lithuanian, Dutch, Polish, Slovenian, Swedish, Turkish, Ukranian,
205 Vietnamese.
206
207 ** Documentation Changes
208
209 The file README-CVS has been renamed to README-hacking and improved.
210
211 * Major changes in release 4.5.3, 2008-12-07
212
213 ** Bug Fixes
214
215 #24283: find-4.5.2 -printf %TY causes NULL pointer dereference
216
217 ** Performance changes
218
219 Changes to gnulib's fts code should provide performance improvements
220 in find when processing very large directories (for example
221 directories containing significantly more than 10000 filenames).
222 Performance imporvements may only exist for some find command lines
223 (performance testing was done for the fts implementation itself but
224 we haven't done the analogous performance tests in find).
225
226 File type information is also passed back from fts to find, saving
227 calls to the stat system call for find command lines which don't need
228 the stat information.  This provides a performance improvement for
229 common cases like "find . -type d".
230
231 * Major changes in release 4.5.2, 2008-09-07
232
233 ** Bug Fixes
234
235 #24169: find would segfault if the -newerXY test was not followed by
236 any argument.
237
238 #23996: integer overflow on some platforms when parsing "-used 3".
239
240 ** Documentation Enhancements
241
242 #23070: Corrected manpage description of find -perm /000 (the change
243 was already made but the manpage indicated the change would happen
244 "soon").
245
246 ** Translations
247
248 Updated translation: French, Indonesian.
249 New translation: Czech.
250
251 * Major changes in release 4.5.1, 2008-06-21
252
253 ** Bug Fixes
254
255 #22662: find -printf %AX appends nanoseconds in the right place now.
256
257 #23663: crash in some locales for -printf %AX (this problem seems to
258 have affected only the CVS code, and not any public releases).
259
260 ** Translations
261
262 New translation: Lithuanian.
263
264 Updated translations: Chinese (simplified).
265
266 ** Documentation Enhancements
267
268 Added a worked example describing how to find the shallowest instances
269 of a given directory name (or names) in a directory hierarchy.
270
271 * Major changes in release 4.5.0, 2008-05-21
272
273 ** Functional Enhancements to find
274
275 If the POSIXLY_CORRECT environment variable is set, the system's
276 definition of "yes" and "no" responses are used to interpret the
277 response to questions from -ok and -okdir.  The default is still to
278 use information from the findutils message translations.
279
280 ** Enhancements
281
282 If xargs find that exec fails because the argument size limit it
283 calculated is larger than the system's actual maximum, it now adapts
284 by passing fewer arguments (as opposed to failing).
285
286 ** Performance changes
287
288 The default optimisation level for find is now -O2 instead of -O0,
289 meaning that a number of additional optimisations are performed by
290 default.   Current optimisations at each level are:
291
292 0:      Perform -name, -path, -iname, -ipath before other checks.
293 1:      Expressions containing only cost-free tests are evaluated
294         before expressions which contain more costly tests.
295 2:      Bring forward all tests that need to know the type of a file
296         but don't need to stat it.
297 3:      All tests are ordered by their estimated cost.
298
299 Cost here is simply an estimate of how time consuming the I/O
300 operations needed to make a test are.
301
302 ** Bug Fixes
303
304
305 #22662: nanoseconds wrongly appended after "PM" for find -printf %AX
306 in locale en_US.UTF-8.
307
308 #15472: Error messages that print ino_t values are no longer truncated
309 on platforms with 64-bit ino_t.
310
311 On some systems without support for a boolean type (for example some
312 versions of the AIX C compiler), find's regular expression
313 implementation fails to support case-insensitive regular expression
314 matching, causing -iregex to behave like -regex.  This is now fixed.
315
316 ** Documentation Changes
317
318 #20873: Indicate that * matches / and leading dot in filenames for
319 "find -path".
320
321 Both the Texinfo manual and the find manual page now include a more
322 precise description of how your locale configuration affects the
323 interpretation of regular expressions and how your response to prompts
324 from the -ok action are interpreted.
325
326 * Major changes in release 4.3.13, 2008-02-14
327
328 ** Bug Fixes
329
330 #22057: Actually rename the old locate database to the new one
331 atomically, instead of just claiming the rename is atomic in a
332 comment.
333
334 #22056: -Xtime tests are off by one second (e.g. rm -f x; touch x;
335 find x -mtime 0 should print x).
336
337 #21960: xargs should collect the exit status of child processes even if
338 the total count of unreaped children has not yet reached the maximum
339 allowed.
340
341 ** Documentation Fixes
342
343 Documented various useful techniques with invoking "sh -c" from
344 xargs in the Texinfo documentation.
345
346 ** Translations
347
348 Updated the German, Irish, Dutch, Polish and Vietnamese translations.
349
350
351 * Major changes in release 4.3.12, 2007-12-19
352
353 ** Bug Fixes
354
355 #15384: Find misbehaves when parent directory is not readable.
356
357 ** Documentation Fixes
358
359 More examples in the xargs manual page, including a portable analogue
360 for BSD's "xargs -o".
361
362 ** Translations
363
364 Updated translations: Polish, Dutch, Portuguese, Swedish, Vietnamese.
365
366
367 * Major changes in release 4.3.11, 2007-12-02
368
369 ** Functional changes
370
371 When the POSIXLY_CORRECT environment variable is set, "find -perm
372 +a+w" is rejected as invalid.  Some other similar mode strings
373 starting with '+' which are not valid in POSIX are also rejected.
374
375 The -prune action now always evaluates as true (this is also a
376 bugfix).
377
378
379 ** Bug Fixes
380
381 #21568: Switch to checking the gnulib code out with native git, not
382 CVS.  This affects mainly those who check findutils code out of CVS.
383 This is not the first time this bug has been fixed (the previous fix
384 used "cvs update -D", which git-cvspserver silently does not
385 support).
386
387 #21039: Setting the POSIXLY_CORRECT environment variable now turns off
388 warnings by default, because POSIX requires that only diagnostic
389 messages (and -ok prompts) are printed on STDERR, and diagnostic
390 messages must also result in a nonzero exit status.
391
392 #20970: Trailing slash on directory arguments breaks -name.  "find
393 foo/ -name foo" now correctly matches foo and printf foo/.  See POSIX
394 interp http://www.opengroup.org/austin/interps/uploads/40/14959/AI-186.txt
395
396 #20865: Using both -delete and -prune without explicitly using -depth
397 is now an error.  Traditionally, -delete has always turned -depth on
398 anyway, so this is not a functional change.   However, using -depth
399 (implicitly or explicitly) makes -prune a no-op.  This change is
400 intended to avoid nasty surprises for people who test with
401 "-print" and then change it to "-delete" when they are happy.
402
403 #20803: POSIX requires that -prune always returns true.  Previously it
404 returned false when -depth was in effect and true otherwise.
405
406 #20802: If -delete fails, find's exit status will now be non-zero.
407 However, find still skips trying to delete ".".
408
409 ** Documentation Fixes
410 #21635: Some of the documentation files had missing copying
411 conditions.   The missing files now have copying headers, and these
412 are compatible with each other (GNU FDL 1.2).
413
414 #21634: No copy of FDL 1.2 included with the source code
415
416 #21633: Missing copyright/license header in some documentation.
417
418 #21628: find -perm /000 matches all files rather than none, since
419 findutils-4.3.3.  The Texinfo documentation is now consistent with the
420 manual page on this point.
421
422 #21270: Formatting fixes to the xargs.1 manual page, including making
423 options bold instead of italic and making OPTIONS a section header
424 rather than a subsection.
425
426 * Major changes in release 4.3.10, 2007-11-13
427
428 ** Bug Fixes
429
430 #21568: findutils gnulib code does not match the date in
431 import-gnulib.config.  We now check out the gnulib code via
432 git-cvs-pserver.
433
434 * Major changes in release 4.3.9, 2007-11-11
435
436 ** Licensing
437
438 Findutils version 4.3.9 is released under version 3 of the GNU General
439 Public License.
440
441 ** Bug Fixes
442
443 #20834: Avoid segmentation violation for -execdir when $PATH is
444 unset.  Assume that the PATH is safe in this situation.
445
446 #20310: configure uses hosts's support status for "sort -z" when
447 generating the updatedb script for use on the target.  This is
448 inappropriate when cross-compiling, so avoid doing that.
449
450 #20263: Compilation fix for DEC Alpha OSF/1 cc, which forbids the
451 ordering comparison of function pointers.
452
453 #20139: find -[acm]time -N (wrongly) includes files from N days ago,
454 as well as (correctly) from less than N days ago.
455
456 #20273: When xargs is successful without consuming all of stdin (for
457 example, with the -E option), and stdin is seekable, xargs now
458 correctly restores the file position, even on platforms where exit()
459 does not follow the POSIX rules of doing likewise.  Likewise for find
460 (for example, with the -ok action).
461
462 #20547: The version information printed by find, xargs, locate,
463 updatedb, frcode and code now complies with the GNU Project's coding
464 standards.
465
466 #20662: Avoid memory leak in find -name and other places affected by
467 gnulib dirname module.  The leak had been present since 4.3.1.
468
469 #20751: Avoid memory corruption in find -ls that has been present
470 since 4.3.1.
471
472 #20871: Assertion failure introduced in 4.3.3, when oldfind is invoked
473 in a directory where the parent directory lacks search permission.
474
475 ** Enhancements
476
477 #20594: Allow fine-tuning of the default argument size used by xargs
478 and find at ./configure time.
479
480 #20688: The warning printed by -name or -iname when the pattern to
481 match contains a slash can now be silenced by -nowarn.  This warning
482 was originally introduced unconditionally in 4.2.21.
483
484 Translation of locate --limit problems is improved.
485
486 POSIX will standardise -path, so the documentation no longer claims
487 that -wholename is the 'canonical' test, and -ipath no longer
488 generates a warning.
489
490 ** Documentation Fixes
491
492 Point out more explicitly that the subsecond timestamp support
493 introduced by findutils-4.3.3 introduces a change in the format of
494 several fields.
495
496 Also explain that when reporting a bug, you should check the most
497 recent findutils release first.
498
499 Introduced doc/find-maint.texi, a maintenance manual for findutils.
500
501 Added an extra worked example for find (copying a subset of files).
502
503 The locate command's manual page now has a HISTORY section.
504
505 #20951: Very bad/unclear/confusing documentation of security checks in
506 find -execdir
507
508 #20865: Better documentation on the fact that -delete implies -depth
509 and that -delete interacts badly with -prune.
510
511 #20552: Fixed typos, formatting and section ordering issues in the
512 find manual page.
513
514 #20529: removed spurious 'o' in description of "xargs -a" in
515 doc/find.texi.
516
517 #20232: The --max-database-age option of locate was added in release
518 4.3.3, but this file (NEWS) did not previously mention this fact.
519
520 ** Translations
521
522 Updated Dutch translation.
523
524
525 * Major changes in release 4.3.8, 2007-06-12
526
527 ** Bug Fixes
528
529 #20157: Avoid segfault in locate when run as root.  This is caused by
530 a buffer overrun, but at this time no exploit mechanism is known.
531
532 * Major changes in release 4.3.7, 2007-06-09
533
534 ** Functional changes
535
536 Locate can now read old-format locate databases generated on machines
537 with a different byte order.  It does this by guessing the byte order,
538 so the result is not completely reliable.  If you need to share
539 databases between machines of different architectures, you should use
540 the LOCATE02 format (which has other advantages, as explained in the
541 documentation).
542
543 ** Security Fixes
544
545 #20014: Findutils-4.3.7 includes a patch for a potential security
546 problem in locate.  When locate read an old-format database, it read
547 file names into a fixed-length buffer allocated on the heap without
548 checking for overflow.  Although overflowing a heap buffer is often
549 somewhat safer than overflowing a buffer on the stack, this bug still
550 has potential security implications.
551
552 This bug also affected the following previous findutils releases:
553
554  - All releases prior to 4.2.31
555  - Findutils 4.3.0 to 4.3.6.
556
557 This bug has been assigned CVE number CVE-2007-2452.
558
559 ** Bug Fixes
560
561 #20128: Fix compilation error of find/tree.c on AIX with GCC.
562
563 #20005: Tests -mtime -n and -mtime +n incorrectly treated like -mtime n.
564
565 #19983: include_next causes compilation failure in findutils 4.3.6 on
566 non-GCC compilers
567
568 #19981: Don't call setgroups if the function isn't available.  This
569 fixes Savannah bug# 19981.
570
571 #19980: Don't use the functions putw() or getw() since these are not
572 in current POSIX.  Use the gnulib version of wcwidth() where the
573 system does not provide it.
574
575 #19979: Compilation errors on BeOS
576
577 #19970: Cannot cast from pointer to bool using gnulib's <stdbool.h>
578
579 #19967: Use of __attribute((__noreturn__)) makes compilation fail with
580 some non-GCC compilers
581
582 #19966: find should link against -lm for modf() and fabs()
583
584 #19965: Compilation failure on OSF/1 4.0; non-declaration of uintmax_t
585
586 #19948: Assertion failure O_NOFOLLOW != 0 on IRIX 6.5
587
588 #19871: Typos in find.1
589
590 #19596: Fixed this bug again, this time in the Texinfo manual (the
591 discussion should compare %b with %s/512, not %s/1024).
592
593 #19416: _FORTIFY_SOURCE warn_unused_result warnings
594
595 * Major changes in release 4.3.6, 2007-05-21
596
597 ** Bug Fixes
598
599 #19948: Fixed an assertion failure on IRIX 6.5 (O_NOFOLLOW is defined
600 to 0 there).
601
602 #19923: Fixed an array overrun in groups[] array of 'locate' when run by
603 or as root.  This bug appears not to be exploitable.  If locate is not
604 installed setuid, the bug is not exploitable.  For setuid
605 installations, it is concievable that there could be an information
606 leak if the user uses the -d option or the -e option, though the
607 maintainer has been unable to provoke this on an x86 system.
608
609 #19871: Spurious .R directives in manpage produced error messages from
610 GNU troff.  This is now fixed (they are corrected to .B).
611
612 #19416: The result of I/O operations in print-related actions is now
613 checked, and failures are reported.  Any failure will cause find's
614 exit status to be nonzero.   The predicate itself will continue to
615 return true.
616
617 ** Compilation Fixes
618
619 A variety of changes were made to allow compilation to succeed on
620 non-GNU systems.
621
622 #19983: Now compiles on DEC C V5.9-005 on Digital UNIX V4.0 (or at
623 least, should).
624
625 #19970: Compile correctly on C89 systems where the "_Bool" type is not
626 provided, taking into account the limitations of the gnulib
627 replacement for stdbool.h.
628
629 #19967: Build successfully with C compilers that don't support the GCC
630  construct __attribute__((__noreturn__)).
631
632 #19966: Findutils should now build on systems which have the modf()
633 and fabs() functions in the maths library, -lm.  This includes some
634 versions of HP-UX and Solaris.
635
636 #19965: Fixed a compilation failure on OSF/1 4.0 (no definition of the
637 type uintmax_t).
638
639
640 * Major changes in release 4.3.5, 2007-05-05
641
642 ** Functional changes
643
644 Updatedb can now support he generation of file name databases which
645 are compatible with slocate.  For some time, GNU locate has been able
646 to read these.
647
648 The /proc filesystem is excluded from the locate database (by
649 default; change PRUNEPATHS to modify this behaviour).
650
651 ** Bug Fixes
652
653 #19806: The -samefile predicate might get fooled by inode reuse.  We
654 now hold open a file descriptor on the reference file to prevent this.
655
656 #19768: Better detection of corrupted old-style locate databases
657 (e.g. if the database is too short to include a complete bigram
658 table).
659
660 #19766: The frcode and code programs now detect write errors more
661 reliably.
662
663 #19371: Fix compilation failure on systems which #define open to
664 open64 (and similarly with the close system call).  This fixes
665 Savannah bug #19371, affecting AIX 5.3.
666
667 #19658: When cross-compiling, "make clean" no longer deletes the
668 generated file doc/regexprops.texi, because there is no way to
669 regenerate it.
670
671 #19391: When xargs knows that the system's actual exec limit is larger
672 than the compiled-in ARG_MAX, use the system's limit without
673 generating an assertion failure.
674
675 #18203: A duplicate report of bug #17478.
676
677 #17478: Error messages from find can garble the console.
678
679 #16378: Assertion failure if stat() returns 00000 as the mode
680 of a file.  This apparently can happen occasionally with broken NFS
681 servers.
682
683 #11668: FreeBSD extensions for time specification are now
684 implemented.  In fact, these were included in findutils-4.3.3.  The
685 change was listed as a functional change (whcih it is) and this bug
686 report was not mentioned.
687
688 ** Documentation Fixes
689
690 The locatedb.5 manpage now documents the (default) LOCATE02 format
691 more clearly, and also documents the slocate database format.
692
693 The maximum and default values applying to the -s option of xargs are
694 now documented more clearly in the manual page.
695
696 * Major changes in release 4.3.4, 2007-04-21
697
698 ** Bug Fixes
699
700 #19634: Test suite now passes (again) if "." is on your $PATH.
701
702 #19619: Findutils builds once again on Cygwin.
703
704 #19617: Nonexistent start points are (once again) diagnosed in
705 ftsfind.  This bug affected only findutils-4.3.3.
706
707 #19616: Fix leaf optimisation and loop detection (which were
708 unreliable in findutils 4.3.3).  This bug affected only
709 findutils-4.3.3.
710
711 #19615: find --version no longer claims to be using FTS_CWDFD when it
712 isn't.  This bug affected only findutils-4.3.3.
713
714 #19613: "find -L . -type f" no longer causes an assertion failure when
715 it encounters a symbolic link loop.  This bug affected only
716 findutils-4.3.3.
717
718 #19605: Issue an error message (and later return nonzero exit status)
719  if a symbolic link loop was encountered during directory traversal.
720
721 #19484: bigram.c and code.c fail if the first pathname recorded begins
722 with a space
723
724 #19483: Inconsistent option highlighting in updatedb manpage
725
726 #18414: Tests for "find -readable" are skipped for the superuser, as
727  on some systems (e.g. Cygwin with an Administrative user) users can
728  read mode-000 files.
729
730 ** Translations
731
732 Findutils 4.3.4 includes a translation for the Ukranian language.
733
734
735 * Major changes in release 4.3.3, 2007-04-15
736
737 Fiundutils-4.3.3 was released on 2007-04-15.
738
739 ** Bug Fixes
740
741 #19596: Correct the comparison in the find manpage between %b and %s
742 (the divisor is 512 not 1024).
743
744 #18714: In the POSIX locale, vertical tabs and form feeds are not
745 field separators.
746
747 #18713: Quoted but empty arguments which occur last on an xargs input
748 line are no longer ignored, but instead produce an empty argument.
749
750 #18554: Documented the construct  -exec sh -c 'foo "$@" bar' {} +
751
752 #18466: we now avoid this bug by limiting "-execdir ...+"
753 to just one argument for the time being.  There is a performance
754 penalty for doing this.  We hope to make a better fix in a later
755 release.
756
757 #18384: excess bracket in xargs --help
758
759 #18320: Zero bytes in input should give warning
760
761 #17437: Corrected the handling of X in symbolic permissions (such
762 as-u+w,a+X).  This change actually occurred in findutils-4.3.2, but
763 the NEWS file for that release didn't mention it.
764
765 #17396: find -mtime -atime -ctime does not support fractional part
766 (see "Functional changes" below)
767
768 #14748: find -perm /zzz gives wrong result when zzz evaluates to an
769  all-zero mask
770
771 #14535: correctly support case-folding in locate (that is, "locate
772 -i") for multibyte character environments such as UTF-8.  Previously,
773 if your search string contained a character which was outside the
774 single-byte-encoding range for UTF-8 for example, then the
775 case-folding behaviour failed to work and only exact matches would be
776 returned.
777
778
779
780 ** Functional changes
781
782 The -printf action (and similar related actions) now support %S,
783 which is a measurement of the sparseness of a file.
784
785 The test "-perm /000" now matches all files instead of no files.  For
786 over a year find has been issuing warning messages indicating that
787 this change will happen.  We now issue a warning indicating that the
788 change has already happened (in 4.3.x only, there is no plan to make
789 this change in the 4.2.x series).
790
791 The tests -newer, -anewer, -cnewer, -mtime, -atime, -ctime, -amin,
792 -cmin, -mmin and -used now support sub-second timestamps, including
793 the ability to specify times with non-integer arguments.
794
795 The -printf format specifiers also support sub-second timestamps:
796   atime   ctime  mtime
797   %a      %c     %t
798   %AS     %CS    %TS
799   %AT     %CT    %TT
800   %A+     %C+    %T+
801   %AX     %CX    %TX
802
803
804 The new test -newerXY supports comparison between status times for
805 files.  One of the status times for a file being considered (denoted
806 X) is checked against a reference time (denoted Y) for the file whose
807 name id the argument.  X and Y can be:
808
809    a    Access time
810    B    Birth time (st_birthtime, currently unsupported)
811    c    Change time
812    m    Modification time
813    t    Valid only for the reference time; instead of comparison
814         against a file status time, the argument is a time string.
815         Not yet supported.
816
817 For example, -newermm is equivalent to -newer, and -neweram is true if
818 the file being considered was accessed more recently than the
819 reference file was modified.  The -newerXY test supports subsecond
820 timestamps where these are available.  The X=B variant is not yet
821 implemented.
822
823 If you configure the source code and then run the tests with "make
824 check", the test suite fails rather than defaulting to testing the
825 system binaries.
826
827 A new option, --max-database-age, has been added to locate.
828
829
830 * Major changes in release 4.3.2, 2006-11-25
831
832 ** Bug Fixes
833
834 #18222: find -printf '%H %P' once again prints the right result if
835 more than one start point was given on the command line.
836
837 #17782: find -execdir now correctly puts the prefix "./" before the
838 expansion of "{}" rather than at the start of the argument it appears
839 in.  Please note that if you use the -exec or -execdir actions with a
840 shell, then you may be vulnerable to shell code injection attacks, so
841 don't do that.  It's not a security defect in find - you should not be
842 passing untrusted data (such as file names chosen by other people) to
843 the shell.
844
845 #17490: find  -regex generated a segfault in findutils-4.3.1, but this
846  is fixed in findutils-4.3.2.
847
848 #17477: find -printf '%' (that is, where the format has a trailing %)
849 now generates an error message.
850
851 #17372: The fts-based find executable (the default configuration uses
852 fts) is now much faster when -maxdepth is used on filesystems with
853 high fanouts.
854
855 #15531: The -prune action now behaves correctly when applied to a file.
856
857 ** Functional changes
858
859 The slocate database format is now supported.  Preliminary changes
860 intended to eventually allow setuid operation of locate have also been
861 made.  For the moment, please don't install GNU locate as a
862 set-user-ID program (except for testing purposes; if you do so, please
863 make sure that untrusted users cannot execute the set-user-ID locate
864 program).
865
866 Use of an slocate database which was built with a nonzero security
867 mode (at the moment, GNU updatedb will not do this) forces locate's
868 "-e" option to be turned on, which has an effect on the "-S" option
869 which is probably surprising for most users.
870
871
872 ** Documentation Fixes
873
874 The global effect of options (other than -daystart and -follow) is now
875 explained more clearly in the manual page.   Savannah bug #15360.
876
877
878 * Major changes in release 4.3.1, 2006-08-06
879
880 ** Bug Fixes
881
882 Find now follows POSIX rules for determining where directories end and
883 expressions start.  This means that "find \(1 \!2 \, \)" now searches
884 in the four named directories, rather than trying to parse an
885 expression. (Savannah bug #15235).
886
887 You now get a more helpful error message when you use command lines
888 which have missing expressions, such as
889       find . ( )
890       find . !
891       find . -a
892       find . \( -not \)
893       find . \( -true -a
894
895 Savannah bug #15800: If find finds more subdirectories within a parent
896 directory than it previously expected to based on the link count of
897 the parent, the resulting error message now gives the correct
898 directory name (previously an error message was issued but it
899 specified the wrong directory).
900
901 Savannah bug #16738: "find .... -exec ... {} +" now works if you have
902 a large environment and many files must be passed to the -exec
903 action.  The same problem affected the -execdir action, though since
904 the number of files in a given directory will normally be smaller, the
905 problem was worse for -exec.
906
907 Savannah bug #16579: Updatedb now works if it is running as a user
908 whose login shell is not actually a shell.
909
910 There have also been a number of documentation improvements (includng
911 Savannah bug #16269).
912
913 ** Functional changes
914
915 For find, debug output can now be enabled at runtime with the -D
916 option.  This causes the printing of various sorts of information
917 about find's internal state and progress.
918
919 The find option -nowarn cannot itself produce a warning (this used to
920 happen with commands like "find . -name quux -nowarn -print").
921
922 ** Performance Enhancements
923
924 Find now has a rudimentary cost-based optimiser.  It has an idea of
925 the basic cost of each test (i.e. that -name is very cheap while -size
926 is more expensive).  It re-orders tests bearing in mind the cost of
927 each test and its likely success.  Predicates with side effects (for
928 example -delete or -exec) are not reordered.  The optimiser is not
929 yet enabled by default, but the new option -O controls the query
930 optimisation level.  To see this in action, try
931   find -D opt -O3 . -type f -o -type c -o -size 555 -name Z
932 and compare the optimised query with:
933   find -D opt -O3 . -size 555 -o -type c -o -type f -name Z
934 and
935   find -D opt     . -size 555 -o -type c -o -type f -name Z
936
937 Over time, as optimisations are proven to be robust and correct, they
938 will be moved to lower optimisation levels.  Some optimisations have
939 always been performed by find (for example -name is always done early
940 if possible).
941
942 ** Translations
943
944 Findutils 4.3.1 includes updated translations for the following
945 languages:
946  Vietnamese, Belarusian, Catalan, Danish, German, Greek, Esperanto,
947  Spanish, Estonian, Finnish, French, Irish, Galician, Croatian, Hungarian,
948  Indonesian, Italian, Japanese, Korean, Luganda, Malay, Dutch, Polish,
949  Portuguese, Brazilian Portuguese, Romanian, Russian, Kinyarwanda,
950  Slovak, Slovenian, Serbian, Swedish, Turkish, Chinese (simplified),
951  Chinese (traditional), Bulgarian
952
953 * Major changes in release 4.3.0, 2005-12-12
954
955 The 4.3.x release series are currently 'development' releases.  Please
956 test it, but think carefully before installing it in a production
957 system.  New features in findutils-4.3.x are under development; they
958 may change or go away.
959
960 All changes up to and including findutils-4.2.27 are included in this
961 release.  In addition the following changes are new in this release:
962
963 ** Functional Changes
964
965 By default, find now uses the fts() function to search the file
966 system.  The use of fts greatly increases find's ability to search
967 extremely deep directory hierarchites.
968
969 You can tell that the version of find you are using uses FTS, because
970 the output of "find --version" will include the word "FTS".
971
972 Currently two binaries for 'find' are built.  The configure option
973 --without-fts can be used to select whether 'find' uses fts:
974
975                                   With fts      Without fts
976 default configuration             find          oldfind
977 configure --with-fts              find          oldfind
978 configure --without-fts           ftsfind       find
979
980 New tests, -readable, -writable, -executable.  These check that a file
981 can be read, written or executed respectively.
982
983 * Major changes in release 4.2.27, 2005-12-06
984
985 ** Warnings of Future Changes
986
987 The test -perm /000 currently matches no files, but for greater
988 consistency with -perm -000, this will be changed to match all files;
989 this change will probably be made in early 2006.  Meanwhile, a warning
990 message is given if you do this.
991
992 ** Bug Fixes
993
994 If xargs is invoked with many short arguments on PPC systems running
995 the Linux kernel, we no longer get an "argument list too long" error
996 from the operating system.
997
998 Fixed a bug in the test suite which caused it to spuriously fail on
999 systems where ARG_MAX is different to the value used by the Linux
1000 kernel on 32-bit x86-architecture systems.
1001
1002 On systems running the Linux kernel, "find -printf %F" no longer
1003 produces the wrong answer for files on filesystems that have been
1004 remounted elsewhere using "mount --bind". (Savannah bug #14921).
1005
1006 ** Documentation Changes
1007
1008 Following some extensive and detailed review comments from Aaron
1009 Hawley, the material in the manual pages and the Texinfo manual are
1010 now synchronised.
1011
1012 The %M format specifier of "find -printf" is now documented, although
1013 it has existed since release 4.2.5.
1014
1015 The 'find' manual page now correctly documents the fact that -regex
1016 defaults to using Emacs-style regular expressions (though this can be
1017 changed).
1018
1019 * Major changes in release 4.2.26, 2005-11-19
1020
1021 ** Public Service Announcements
1022
1023 I'd like to point out a second time that the interpretation of '-perm
1024 +mode' has changed to be more POSIX-compliant.  If you want the old
1025 behaviour of the GNU extension you should use '-perm /mode'.  See the
1026 NEWS entry for findutils version 4.2.21 for details.
1027
1028 ** Functional Changes
1029
1030 The xargs command now supports a new option (--delimiter) which allows
1031 input items to be separated by characters other than null and
1032 whitespace.  This resolves Savannah support request sr #102914.
1033
1034 Sometimes find needs to read the /etc/mtab file (or perform the
1035 equivalent operation on systems not using /etc/mtab).  If this
1036 information is needed but not available, find now exits with an error
1037 message non-zero status.  If the information is not needed, find will
1038 not spuriously fail.
1039
1040 A new xargs option --delimiter allows the input delimiter to be
1041 changed (previously \0 was the only choice unless you use the -L
1042 option, which changes other semantics too).
1043
1044 ** Bug Fixes
1045
1046 If the environment size is too large to allow xargs to operate
1047 normally, 'xargs --help' still works (now).
1048
1049 If the input to xargs is a large number of very short options (for
1050 example, one character each), earlier versions of xargs would fail
1051 with 'Argument list too long'.  However, since this is precisely the
1052 problem that xargs was invented to solve, this is a bug.  Hence on
1053 those systems we now correctly use a shorter command line.  This
1054 problem particularly affected 64-bit Linux systems because of the
1055 larger size of pointers, although 32-bit Linux systems were also
1056 affected (albeit for longer command lines).  In theory the same
1057 problem could affect 'find -exec {} +', but that's much less likely
1058 (even so, the bug is fixed there too).
1059
1060 Bugfix for an unusual failure mode (Savannah bug #14842) where an
1061 attempt to allocate more space for directory contents succeeds but is
1062 incorrectly diagnosed as a failure.  The likelihood of you
1063 experiencing this depends on your architecture, operating system and
1064 resource limits.  This failure has been observed in a directory
1065 containing 35396 entries.
1066
1067 ** Documentation Changes
1068
1069 The EXAMPLES section of the find manual page now correctly describes
1070 the symbolic and octal modes for the -perm test.
1071
1072 The documentation and "--help" usage information for the -L, -l, -I
1073 and -i options have been clarified (but the behaviour has not changed).
1074
1075 The documentation now explains more clearly what happens when you use
1076 "-L -type l".
1077
1078 * Major changes in release 4.2.25, 2005-09-03
1079
1080 ** Bug Fixes
1081
1082 find -perm /440 (which should succeed if a file is readable by its
1083 owner or group) now works.  Previously there was a bug which caused
1084 this to be treated as "find -perm 440".
1085
1086 Some files in the xargs test suite have been renamed to avoid problems
1087 on operating systems whoch cannot distinguish filenames on the basis
1088 of upper/lower case distinctions.
1089
1090 The software now builds on Cygwin, including the generated file
1091 regexprops.texi.
1092
1093 Findutils should now build once again on systems supporting AFS, but
1094 this support has not recently been fully tested.  Findutils should
1095 also (once again) build on Cygwin.
1096
1097 ** Other Changes
1098
1099 The test suite for find is now much more extensive.
1100
1101 * Major changes in release 4.2.24, 2005-07-29
1102
1103 ** Documentation Changes
1104
1105 The manual now includes a "Worked Examples" section which talks about
1106 the various ways in which findutils can be used to perform common
1107 tasks, and why some of these alternatives are better than others.
1108
1109 The -I option of xargs (which is required by the POSIX standard) is
1110 now documented.
1111
1112 We now document the fact that find ensures that commands run by -ok
1113 and -okdir don't steal find's input.  Find does this by redirecting
1114 the command's standard input from stdin.
1115
1116 Many documentation readability enhancements and proofreading fixes
1117 were contributed by Aaron Hawley.
1118
1119 ** Functional Changes
1120
1121 *** Functional changes in locate
1122
1123 The "--regex" option of locate now assumes the regular expression to
1124 be in the same syntax as is used in GNU Emacs, though this can be
1125 changed with the new option --regextype.  This is a change from the
1126 existing behaviour (which was to use POSIX Basic Regular Expressions).
1127 Since this feature is releatively new anyway, I though it was more
1128 useful to have compatibility between regular expression handling in
1129 find and locate than to maintain the short-lived previous behaviour of
1130 locate.
1131
1132 The locate program now also supports a "--regextype" long option which
1133 controls which regular expression syntax is understood by locate.
1134 This is a long option and has no single-letter 'short option'
1135 equivalent.
1136
1137 *** Functional changes in find
1138
1139 The regular expression syntax understood by "find" can be changed with
1140 the -regextype option; this option is positional, meaning that you can
1141 have several tests, each using a distinct syntax (this is not
1142 recommended practice however).
1143
1144 The default regular expression syntax is substantially the same as
1145 that recognised by GNU Emacs, except for the fact that "." will match
1146 a newline.
1147
1148 The leaf optimisation can be disabled with the configure option
1149 "--disable-leaf-optimisation", which is equivalent to specifying
1150 "-noleaf" on all find command lines.  This is useful for systems
1151 having filesystems which do not provide traditional Unix behaviour for
1152 the link count on directories (for example Cygwin and the Solaris 9
1153 HSFS implementation).
1154
1155 ** Bug Fixes
1156
1157 *** Bug Fixes for find
1158
1159 The -iregex test now works once again on systems that lack
1160 re_search() (that is, systems on which findutils needs to use the
1161 gnulib version of this function).
1162
1163 find -regex now once again uses GNU Emacs-compatible regular
1164 expressions.
1165
1166 If invoked with stderr closed, the -fprint and -fprintf actions now no
1167 longer cause error messages to be sent into the output file.
1168
1169 If the link count of a directory is less that two, the leaf
1170 optimisation is now disabled for that directory.  This should allow
1171 searching of non-Unix filesystems to be more reliable on systems that
1172 don't take the trouble to make their filesystems look like traditional
1173 Unix filesystems.   Some filesystems don't even take the trouble to
1174 have a link count of less than two and for these, -noleaf is still
1175 required unless --disable-leaf-optimisation was used at configure time.
1176
1177 The "%Y" directive for the -printf action now no longer changes find's
1178 idea of the mode of the file, so this means among other things that
1179 "-printf %Y %y" now works properly.  This is Savannah bug #13973.
1180
1181 * Major changes in release 4.2.23, 2005-06-19
1182
1183 ** Documentation Changes
1184
1185 The -L and -I options of xargs are currently incompatible (but should
1186 not be).
1187
1188 Improved the documentation for -execdir and -okdir.
1189
1190 ** Functional Changes to updatedb
1191
1192 File names ending in "/" which are specified as an argument to
1193 --prunepaths (or in $PRUNEPATHS) don't work, so we now issue an error
1194 message if the user tries to do that.  The obvious exception of course
1195 is "/" which does work and is not rejected.
1196
1197
1198 * Major changes in release 4.2.22, 2005-06-12
1199
1200 ** Security Fixes
1201
1202 If a directory entry searched with "find -L" is a symbolic link to
1203 ".", we no longer loop indefinitely.  This problem affected find
1204 versions 4.2.19, 4.2.20 and 4.2.21.  This problem allows users to make
1205 "find" loop indefinitely.  This is in effect a denial of service and
1206 could be used to prevent updates to the locate database or to defeat
1207 file security checks based on find.   However, it should be noted that
1208 you should not use "find -L" in security-sensitive scenarios.
1209
1210 ** Other Bug Fixes
1211
1212 None in this release.
1213
1214 ** Functional Changes to locate
1215
1216 A locate database can now be supplied on stdin, using '-' as a element
1217 of the database-path. If more than one database-path element is '-',
1218 later instances are ignored.
1219
1220 A new option to locate, '--all' ('-A') causes matches to be limited to
1221 entries which match all given patterns, not entries which match
1222 one or more patterns.
1223
1224 ** Documentation Changes
1225
1226 Some typos in the manual pages have been fixed.  Various parts of the
1227 manual now point out that it is good practice to quote the argument of
1228 "-name".  The manpage now has a "NON-BUGS" section which explains some
1229 symptoms that look like bugs but aren't.  The explanations of the "%k"
1230 and "%b" directives to "find -printf" have been imrpoved.
1231
1232
1233 * Major changes in release 4.2.21, 2005-06-07
1234 ** Functional Changes to find
1235
1236 The GNU extension "find ... -perm +MODE" has been withdrawn because it
1237 is incompatible with POSIX in obscure cases like "find ... -perm ++r".
1238 Use the new syntax "find ... -perm /MODE" instead.  Old usages will
1239 still continue to work, so long as they don't conflict with POSIX.
1240
1241 If the output is going to a terminal, the -print, -fprint, -printf and
1242 -fprintf actions now quote "unusual" characters to prevent unwanted
1243 effects on the terminal.  See "Unusual Characters in File Names" for
1244 further details.  There is no change to the behaviour when the output
1245 is not going to a terminal.   The locate program does the same thing,
1246 unless the -0 option is in effect (in which case the filenames are
1247 printed as-is).
1248
1249 ** Functional Changes to locate
1250
1251 The locate command will now read each locate database at most once.
1252 This means that if you are using multiple databases and are searching
1253 for more than one name, the results will now be printed in a different
1254 order (and if you specified a small limit with --limit, you may get a
1255 different set of results).
1256
1257 A new option '--print' for locate causes it to print the matching
1258 results even if the '--count' or '--statistics' option is in effect.
1259
1260 ** Bug Fixes
1261 find /blah/blah/blah -depth -empty now works once again.
1262
1263 The -regex and -iregex tests of find now correctly accept POSIX Basic
1264 Regular Expressions.  (Savannah bug #12999)
1265
1266 The updatedb program now works on systems where "su" does not support
1267 the "-s" option, for example Solaris.
1268
1269 * Major changes in release 4.2.20, 2005-03-17
1270 ** Internationalization and Localization
1271 Updated Vietnamese and Dutch translations.
1272
1273 ** Bug Fixes
1274 Minor bugfix affecting only those who compile from the CVS repository,
1275 as opposed to those who compile from the source releases.
1276
1277 * Major changes in release 4.2.19, 2005-03-07
1278 ** Bug Fixes
1279
1280 find should now no longer hang on systems which lack the O_NOFOLLOW
1281 flag to open(2) and which are clients of an unresponsive NFS server
1282 (Savannah bug #12044).
1283
1284 We now avoid inappropriately failing for "find -L foo" or "find -H
1285 foo" if foo is a symbolic link (Savannah bug #12181).  Previously we
1286 used to fail with the error message "Too many levels of symbolic
1287 links".
1288
1289 "find . -false -exec foo {} +" no longer runs an extra instance of foo
1290 when find exits (Savannah bug #12230).
1291
1292 If the chdir() safety check fails but we can no longer get back to
1293 where we started, exit with an explanatory (fatal) error message.
1294 This does not happen on GNU/Linux and FreeBSD because the safety check
1295 is not needed (the security problem the safety check protects against
1296 is prevented in a cleaner way on those systems).
1297
1298 "make distclean" no longer deletes regex.c (which "make all" needs).
1299
1300 **  Functionality Changes
1301 "find -printf "%h\n" will now print "." for files in the current directory.
1302 Previously it printed nothing (but there was a bug in the %h
1303 implementation anyway).  This fixes Savannah bug #12085.
1304
1305 Should now build (again) on non-C99-compliant systems.
1306
1307 ** Documentation enhancements
1308 Fixed some typos and clarified wording in "Working with automounters".
1309
1310 ** Internationalization and Localization
1311 New Vietnamese message translation.
1312 \f
1313 * Major changes in release 4.2.18, 2005-02-16
1314 ** Bug Fixes
1315 *** "find -depth" was missing out non-leaf directories when they contain
1316     non-directories.  This affected findutils releases 4.2.15,
1317     4.2.16 and 4.2.17, but the bug is now fixed.
1318 *** Find no longer hangs on systems which are clients of unresponsive
1319     NFS servers.
1320 **  Documentation improvements
1321 *** Improvements and corrections to the find.1 manpage, including corrections to the descriptions of -H and -L.
1322 \f
1323 * Major changes in release 4.2.17, 2005-02-08
1324 ** Bug Fixes
1325 *** bug #11861  undefined symbol "basename" on IRIX 5.3
1326 *** bug #11865  xargs -i regression  (as compared to findutils-4.2.12)
1327 *** bug #11866  Typo in pred_okdir renders it useless (affecting 4.2.16 only)
1328 *** patch #3723 fix recent process_top_path change (for -execdir on /)
1329 *** Fixing bug #11866 and applying patch #3723 made -execdir work much better.
1330 *** find bar/baz/ugh now works again if baz is a symbolic link (broken
1331     in 4.2.15).
1332 \f
1333 * Major changes in release 4.2.16, 2005-02-05
1334 **  Functionality Changes
1335 *** Updated the message catalogues for the translated messages.
1336 *** The subfs filesystem is now treated the same as the autofs
1337     filesystem is.
1338 *** New translations:  Belarusian, Catalan, Greek, Esperanto,
1339     Finnish, Irish, Croatian, Hungarian, Japanese, Luganda,
1340     Malay, Romanian, Slovenian, Serbian, Chinese (simplified).
1341
1342 **  Bug Fixes
1343 *** The -execdir action now works correctly for files named on the
1344     command line.
1345 \f
1346 * Major changes in release 4.2.15, 2005-01-29
1347 **  Functionality Changes
1348 *** locate now supports matching regular expression (--regex).
1349 *** --enable-d_type-optimization (introduced in findutils 4.2.13) is now turned on by default.
1350 \f
1351 * Major changes in release 4.2.14, 2005-01-25
1352 **  Functionality Changes
1353 *** New options -L, -P, -H for locate.  The work in the same was as the same options for find.
1354 **  Bug Fixes
1355 *** Don't include the "findutils/find/testsuite/find.gnu" subdirectory in the
1356     distributed tar file more than once.
1357 *** Should now build on Solaris once again.
1358 *** -xtype and -printf %Y now work correctly for symbolic links once again
1359 **  Documentation improvements
1360 *** All options for "locate" are now documented
1361 \f
1362 * Major changes in release 4.2.13, 2005-01-23
1363 **  Performance Enhancements
1364 *** On Linux and some other systems, a large performance improvement,
1365     because we can eliminate many of the calls to lstat() (in extreme
1366     cases, 99% of them).  Limited testing shows a 2x speedup on NFS
1367     filesystems.  Other systems which can make use of this enhancement
1368     include Mac OS X and *BSD.
1369 \f
1370 * Major changes in release 4.2.12, 2005-01-22
1371 **  Functionality Changes
1372 *** find is now POSIX-compliant, as far as I know.
1373 *** -exec ... {} + now works.
1374 *** New actions -execdir and -okdir which are like -exec and -ok but more secure.
1375 *** "locate -w" is now a synonym for "locate --wholepath".
1376 *** An empty path entry in the locate database path (for example "::" in
1377     $LOCATE_PATH or in the argument to "locate -d") is taken to mean
1378     the default database, whose name is hard-coded in locate.
1379 **  Bug Fixes
1380 *** If find or xargs cannot write to stdout, for example because
1381     output is redirected to a file and the disk is full, the
1382     relevant program will return a non-zero exit status.
1383 \f
1384 * Major changes in release 4.2.11, 2004-12-12
1385 **  Bug Fixes
1386 *** Compilation fix for systems without EOVERFLOW.
1387 *** More helpful error message if you make a mistake with (, ), -o or -a.
1388 **  Functionality Changes
1389 *** If you have unclosed parentheses on the find command line,
1390     or any of a number of similar problems, find will now produce
1391     a more helpful error message.
1392 *** locate -b is now a synonym for locate --basename
1393 *** locate now supports a --statistics (or -S) option, which prints some
1394     statistics about the locate databases.
1395 *** Implemented the -samefile option.
1396 **  Documentation improvements
1397 *** New chapter in the manual, "Security Considerations".
1398 *** Better documentation for -prune (Mainly thanks to   Stepan Kasal)
1399 **  Bug Fixes
1400 *** locate's options -i and -w now work with the -e option (previously a bug
1401     prevented this).
1402 \f
1403 * Major changes in release 4.2.10, 2004-12-06
1404 **  Bug Fixes
1405 *** Portability fix for fstype.c: should now compile on UNICOS, and possibly
1406     also produce useful results on BeOS and Dolphin, perhaps other
1407     systems too.
1408 \f
1409 * Major changes in release 4.2.9, 2004-12-05
1410 **  Functionality Changes
1411 *** xargs no longer treats a line containing only an underscore as a logical end-of-file.   To obtain the behaviour that was previously the default, use "-E_".
1412 *** xargs now supports the POSIX options -E, -I and -L.   These are synonyms
1413     for the existing options -e, -i and -l, but the latter three are
1414     now deprecated.
1415 **  Bug Fixes
1416 *** xargs -n NUM now invokes a command as soon as it has NUM arguments.
1417     Previously, it waited until NUM+1 items had been read, and then
1418     invoked the command with NUM arguments, saving the remaining one
1419     for next time.
1420 *** If "find -L" discovers a symbolic link loop, an error message is issued.
1421 *** If you specify a directory on the find command line, but -prune
1422     is applied to it, find will no longer chdir() into it anyway.
1423 **  Documentation improvements
1424 *** The precise interpretation of the arguments to the -atime, -ctime
1425     and similar tests in find has been documented more clearly.
1426 \f
1427 * Major changes in release 4.2.8, 2004-11-24
1428 *** Bugfix to the findutils 4.2.7 automount handling on Solaris.  This
1429     worked to some extent in findutils-4.2.7, but is much improved in
1430     findutils-4.2.8.
1431 \f
1432 * Major changes in release 4.2.7, 2004-11-21
1433 **  Functionality Changes
1434 *** xargs can now read a list of arguments from a named file, allowing
1435     the invoked program to use the same stdin as xargs started with
1436     (for example ``xargs --arg-file=todo emacs'').
1437 **  Documentation improvements
1438 *** The Texinfo manual now has an extra chapter, "Error Messages".  Most
1439     error messages are self-explanatory, but some of the ones which
1440     are not are explained in this chapter.
1441 **  Bug Fixes
1442 *** Avoid trying to link against -lsun on UNICOS, which doesn't need it or
1443     have it.
1444 *** Bugfix to the findutils 4.2.6 automount handling (which hadn't been enabled
1445     on Solaris).
1446 *** Reenabled internationalisation support (which had been accidentally
1447     disabled in findutils-4.2.5).
1448 \f
1449 * Major changes in release 4.2.6, 2004-11-21
1450 **  Bug Fixes
1451 *** find now copes rather better when a directory appears to change just as
1452     it is about to start examining it, which happens with automount.
1453     This is because automount mounts filesystems as you change
1454     directory into them.  This should resolve Savannah bugs #3998,
1455     #9043.
1456 \f
1457 * Major changes in release 4.2.5, 2004-11-11
1458 **  Functionality Changes
1459 *** The POSIX options -H and -L are supported.  These control whether or not
1460     find will follow symbolic links.
1461 *** The BSD option -P is also now supported (though in any case
1462     it is the default).
1463 **  Documentation improvements
1464 ***  Better documentation for "xargs -i".
1465 **  Bug Fixes
1466 *** "make install" now respects DESTDIR when generating localstatedir.
1467     (this is only relevant if you are installing to some location
1468     other than the one that you indictaed when you ran "configure").
1469 *** Compatible with automake versions 1.8 and 1.9.
1470 *** Build problems on UNICOS now fixed, though the linker will still generate
1471     warnings because we try to link with the nonexistent library
1472     "-lsun".  Edit $(LIBS) to work around this problem.
1473 \f
1474 * Major changes in release 4.2.4, 2004-11-08
1475 **  Functionality Changes
1476 *** If your system sort command has a working "-z" option, updatedb will
1477     now correctly handle newline characters in filenames (as will
1478     locate).
1479 *** xargs now uses 128Kb of command line by default (less if the system
1480     doesn't support that much).
1481 *** If you specify a 'find' option after non-option, a warning message
1482     is now issued.  Options should be specified immediately after the
1483     list of paths to search.  These warnings are enabled if you
1484     specify the -warn option, or if stdin is a tty.  They are diabled
1485     by the use of the -nowarn option.
1486 *** Like find, the locate program now supports an option --null (short form -0)
1487     which changes the result separator from newline to NULL.
1488 *** Locate supports the option -c (long form --count) which suppresses normal
1489     output but prints on stdout the number of results produced (like
1490     grep -c).
1491 *** Locate supports the option -l (long form --limit) which limits the
1492     number of results.  This is useful if you only want to find out if
1493     there are copies of a certain file on the system, but don't want
1494     to wait for the entire locate database to be searched.
1495 *** Locate now has an option --basename which forces the specified pattern to
1496     be matched against the basename of the entries in the locate
1497     database, rather than the whole name.  The default behaviour
1498     (matching against the whole name of the file including all the
1499     parent directory names) corresponds to the option --wholename.
1500 *** updatedb has a new option, --findoptions, that can be used to
1501     pass extra options through to the find command that it uses.
1502 **  Bug Fixes
1503 *** "find -printf '%H\n'" now works (rather than segfaulting) on
1504     systems that have non-writable string constants.
1505 *** Better POSIX compliance for the -s option to xargs (out of range
1506     values should just result in bounding to the correct range, not an
1507     error, so now we just print a warning message and adjust the
1508     value).
1509 *** Corrected section numbers of manual page cross-references
1510 \f
1511 * Major changes in release 4.2.3, 2004-10-30
1512 **  Functionality Changes
1513 *** Added new action -delete which deletes things that find matches.
1514 *** Added new action -quit which causes find to exit immediately.
1515 *** A new format directive '%D' for "find -printf" prints the device number.
1516 *** The -ls predicate no longer truncates user or group names.
1517 *** Added new option "-d" which is a synonym for "-depth" for compatibility
1518     with Mac OS, OpenBSD and FreeBSD.  This option is already
1519     deprecated since the POSIX standard specifies "-depth".
1520 *** Added two new format specifiers to the -printf action; these are
1521     %y and %Y.  They indicate the type of the file as a single letter;
1522     these are the same latters as are used by the "-type" test.
1523 *** If a parent directory changes during the execution of find,
1524     the error message we issue identifies the nature of the change
1525     (for example the previous and current inode numbers of the
1526     directory we've just returned out of).
1527 ** Other Changes
1528 *** Non-functional code changes to silence compiler warnings.
1529 \f
1530 * Major changes in release 4.2.2, 2004-10-24
1531 **  Documentation improvements
1532 *** "find ... -exec {}+" is not yet supported.
1533 ** Bug Fixes
1534 *** Fixed compilation problems on Solaris, RedHat EL AS 2.1, Irix, AIX
1535 *** Work around possible compiler bug on HP-UX 11.23 for ia64
1536 *** The built-in internationalisation support now works again.
1537 ** Other Changes
1538 *** We now import the gnulib source in the way it is intended to be used,
1539     which means among other things that we only have one config.h file
1540     now.
1541 *** Functions which findutils requires but which are not present in
1542     gnulib are now defined in "libfind.a".  This is in the lib
1543     directory, while gnulib is in the gnulib subdirectory.
1544 *** Fixed a typo in the address of the FSF in many of the file headers.
1545 \f
1546 * Major changes in release 4.2.1, 2004-10-17
1547 ** Bug Fixes
1548 *** 'find -name \*bar now matches .foobar, because the POSIX standard
1549      requires it, as explained at
1550      http://standards.ieee.org/reading/ieee/interp/1003-2-92_int/pasc-1003.2-126.html
1551 \f
1552 * Major changes in release 4.2.1, 2004-10-17
1553 ** Bug Fixes
1554 *** find -iname now works correctly on systems that have an fnmatch() function
1555     that does not support FNM_CASEFOLD
1556 *** updatedb now uses signal names for "trap" instead of numbers,
1557     as per bug #9465 (see http://www.opengroup.org/onlinepubs/009695399/utilities/trap.html)
1558 *** Better support for systems lacking intmax_t
1559 ** Other Changes
1560 **** findutils now uses a newer version of gnulib (dated 2004-10-17).
1561 \f
1562 * Major changes in release 4.2.0, 2003-06-14
1563 ** Functionality Changes
1564 *** xargs now works better when the environment variables are very extensive.
1565     The xargs command used to run into difficulties if the environment
1566     data contained more than 20480 bytes.
1567 *** New options -wholename and -iwholename
1568     As per the GNU Projecvt coding standard, These are preferred over
1569     the -path and -ipath options.  Using -ipath now generates a warning,
1570     though -path does not (since HPUX also offers -path).
1571 *** The environment variable FIND_BLOCK_SIZE is now ignored.
1572 *** New option "-ignore_readdir_race"
1573     silences an error messages which would otherwise occur if a file is removed
1574     after find has read it from the directory using readdir(), but before
1575     find stats the file.  There is also an option
1576     -noignore_readdir_race which has the opposite effect.
1577 **  Documentation improvements
1578 *** The -size option of find is now documented in more detail
1579 *** POSIX compliance and GNU extensions
1580     The find manual page also now includes a section
1581     which describes the relationship between the features of GNU
1582     find and the POSIX standard.  Some other small improvements
1583     to the find and xargs manual pages have been made.
1584 *** The argument to the -fprintf directive is now better documented.
1585     The escape code '\0' for the `-printf' predicate of find is now
1586     documented, and the documentation for the %k and %b specifiers
1587     has been improved.
1588 *** xargs -i is now more clearly documented.
1589 ** Bug Fixes
1590 *** locate 'pa*d' will now find /etc/passwd (if it exists, of course)
1591 *** xargs standard input is not inherited by child processes
1592     If the command invoked by xargs reads from its standard input,
1593     it now gets nothing, as opposed to stealing data from the
1594     list of files that xargs is trying to read.
1595 *** Better support for 64-bit systems.
1596 *** The command "xargs -i -n1" now works as one might expect,
1597     I think this is a strange thing to want to do.
1598 *** Arguments to find -mtime that are too large are now diagnosed
1599     Previously, this just used to cause find just to do the wrong thing.
1600 *** updatedb is now somewhat more robust
1601     The updatedb shell script now does not generate an empty
1602     database if it fails.
1603 *** Sanity-check on some data read from locatedb
1604     Locate now detects some types of file corruption in the
1605     locate database.
1606 *** The %k format specifier for -fprintf now works
1607     This was broken in 4.1.20.
1608 \f
1609 * Major changes in release 4.1.20, 2003-06-14:
1610 ** New maintainer, James Youngman <jay@gnu.org>
1611 ** As far as I know, this is the first release after 4.1.7, but I've left
1612    a gap just in case.
1613 ** We now use an "imported" version of gnulib, rather than including
1614    a copy of the gnulib code in our CVS repository.   There are no
1615    differences in the build instructions, though (unless you are
1616    building directly from CVS, in which case please read the file
1617    README-CVS).
1618 ** There are no (deliberate) functional changes in version 4.1.20.
1619 \f
1620 * Major changes in release 4.1.7, 2001-05-20:
1621 fix problem so that default "-print" is added when "-prune" is used.
1622 security fixes related to directories changing while find is executing.
1623 \f
1624 * Major changes in release 4.1.6, 2000-10-10:
1625 correct bug in prune.
1626 added --ignore-case option for locate
1627
1628 * Major changes in release 4.1.5, 2000-04-12:
1629 Add support for large files
1630
1631 * Major changes in release 4.1.4, 2000-02-26:
1632 bug fixes, more up-to-date languages.
1633
1634 * Major changes in release 4.1.3, 2000-01-27:
1635 added internationalization and localization.
1636
1637 * Major changes in release 4.1.2, 2000-01-18:
1638 None.
1639
1640 * Major changes in release 4.1.1, 1999-08-8:
1641 attempt at successful compilation on many platforms after years of neglect
1642  "--existing" option added to locate "--prunefs" option added to updatedb
1643
1644 * Major changes in release 4.1, 1994-11-3:
1645
1646 ** Distribution renamed to findutils.
1647 ** updatedb is now a user command, installed in $exec_prefix/bin
1648   instead of $exec_prefix/libexec.
1649 ** A few problems in Makefiles and testsuite corrected.
1650 \f
1651 * Major changes in release 4.0, 1994-11-2:
1652
1653 ** Documentation:
1654 *** Texinfo manual.
1655 *** Man page for updatedb.
1656 *** Man page for the locate database formats.
1657
1658 ** find:
1659 *** Takes less CPU time on long paths, because it uses chdir to descend
1660    trees, so it does fewer inode lookups.
1661 *** Does not get trapped in symbolic link loops when -follow is given.
1662 *** Supports "-fstype afs" if you have /afs and /usr/afsws/include
1663    and you configure using the --with-afs option.
1664 *** New action -fls FILE; like -ls but writes to FILE.
1665
1666 ** locate:
1667 *** Supports a new database format, which is 8-bit clean and
1668    allows machines with different byte orderings and integer sizes to
1669    share the databases.  The new locate can also detect and read the
1670    old database format automatically.  The new databases are typically
1671    30% or more larger than the old ones (due to allowing all 8 bits in
1672    file names).  Search times are approximately the same, or faster on
1673    some systems.
1674 *** Warns if a file name database is more than 8 days old.
1675
1676 ** updatedb:
1677 *** Takes command-line options.
1678
1679 ** xargs:
1680 *** Performance improved 10-20%.
1681 *** The EOF string is not used when -0 is given.
1682 *** Now has a test suite.  Some minor bugs fixed as a result.
1683 \f
1684 * Major changes in release 3.8, 1993-03-29:
1685
1686 ** case insensitive versions of -lname, -name, -path, -regex:
1687   -ilname, -iname, -ipath, -iregex
1688 ** %F directive for -printf, -fprintf to print file system type
1689 \f
1690 * Major changes in release 3.7:
1691
1692 ** locate can search multiple databases
1693 ** locate has an option to specify the database path
1694 ** updatedb no longer goes into an infinite loop with some versions of tail
1695 \f
1696 * No NEWS was kept for earlier releases.  Known release dates include:
1697 ** release 3.2, 1991-08-28
1698 ** release 3.1, 1991-08-21
1699 ** release 3.0, 1991-08-21
1700 ** release 2.2, 1991-04-05
1701 ** release 2.1, 1991-01-01
1702 ** release 2.0, 1990-11-20
1703 ** release 1.2, 1990-07-03
1704 ** release 1.1, 1990-06-24
1705 ** release 1.0, 1990-06-22
1706 ** beginning of findutils history, 1987-02-21
1707
1708                         --//--
1709 This is used by Emacs' spell checker ispell.el:
1710
1711 LocalWords: ansi knr strftime xargs updatedb sh fnmatch hin strcpy
1712 LocalWords: lib getstr getline frcode bigram texi depcomp automake
1713 LocalWords: strncasecmp strcasecmp LIBOBJS FUNC prunefs allout libexec
1714 LocalWords: testsuite Texinfo chdir inode fstype afs fls ls EOF lname
1715 LocalWords: regex ilname iname ipath iregex printf fprintf
1716
1717 Copyright (C) 1996, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 2007,
1718 2008, 2009, 2010 Free Software Foundation, Inc.
1719
1720 Permission is granted to copy, distribute and/or modify this document
1721 under the terms of the GNU Free Documentation License, Version 1.3 or
1722 any later version published by the Free Software Foundation; with no
1723 Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
1724 Texts.  A copy of the license is included in the ``GNU Free
1725 Documentation License'' file as part of this distribution.