1GNU findutils NEWS - User visible changes.      -*- outline -*- (allout)
2
3* Noteworthy changes in release 4.8.0 (2020-01-09) [stable]
4
5** Changes in xargs
6
7'xargs -t' no longer outputs a trailing blank to stderr after the last argument
8of each constructed command line to be executed.  [#57291]
9
10xargs now warns when more than one of the conflicting options --max-lines (-L,
11-l), --replace (-i/-I) and --max-args (-n) are specified on the command line.
12[#52137]
13
14** Bug Fixes
15
16find no longer crashes when an XFS filesystem is heavily changed during the run.
17Discussed at: <https://lists.gnu.org/r/bug-gnulib/2020-04/msg00068.html>
18
19find -used works again.  This predicate was not working properly since adding
20the support for sub-second timestamp resolution for various predicates in
21FINDUTILS_4_3_3-1 back in 2007.
22Discussed at: <https://lists.gnu.org/r/bug-findutils/2019-11/msg00010.html>
23
24** Improvements
25
26'find -D exec' now diagnoses all -exec, -execdir, -ok and -okdir runs including
27the call arguments and the exit code of the launched process. [#59083]
28
29** Documentation Changes
30
31The documentation of 'find -printf %Ak' has been improved: it now refers to the
32strftime(3) documentation for a complete list of supported conversion
33specifiers, and documents the 'F' conversion specifier ('yyyy-mm-dd').
34
35The man pages (find.1, locate.1, locatedb.5, updatedb.1, and xargs.1) now
36consistently end with the sections "REPORTING BUGS", "COPYRIGHT" and "SEE ALSO",
37with the latter referring to the online page on the GNU web server.
38
39The "EXAMPLES" section in the find.1 man page now shows the examples in a better
40structure and uses consistent formatting.
41
42Various man page fixes - syntax issues and typos.
43[#59745, #59330, #59012, #58193, #57807, #57775]
44
45Other documentation changes:
46
47#58654: doc: clarify that 'find -perm +MODE' is unrelated to umask
48
49#58458: doc: improve section 'Hard links', especially fix the description
50        regarding 'find -L -samefile FILE'.
51
52#58205: find.1: clarify double dash '--' option
53
54#58149: 'xargs --help' now mentions that --replace (-I, -i) splits the input
55        at newline characters.
56
57#57025: doc: enhance description of tests accepting numeric arguments in find.1
58        [see also #49640].
59
60#54730: Add additional valuable example of find -quit
61
62#48135: Fix testsuite error on Hurd and BSD related to ln
63
64#35253: Clarify descriptions of -printf %f, %h.
65
66** Changes to the build process
67
68The configure option --without-fts has been removed.  The attempt to use
69it stopped configure with an error message since 4.5.18 (2015) anyway.
70
71
72* Major changes in release 4.7.0, 2019-08-29
73
74** Changes to locate / updatedb
75
76Support for generating old-format databases (with updatedb
77--old-format or updatedb --dbformat=old) has been removed.  The old
78database format was deprecated in 2007 (and updatedb has warned about
79this since that time).  The locate program will will read old-format
80databases, though this support also will be removed.
81
82The updatedb script now operates in the C locale only.  This means
83that character encoding issues are now not likely to cause sort to
84fail.  It also honours the TMPDIR environment variable if that was
85set, and no longer sorts file names case-insensitively.
86
87The (unspecified) order in which filenames are stored in the locate
88database is now different to previous versions.  However, you should
89not rely on locate's output appearing in any particular order in any
90case.
91
92** Improvements
93
94All utilities now only show the full usage text when requested via
95the --help option.  Previously, when the user passed invalid options
96or arguments, the user's attention to the corresponding error
97diagnostic was distracted by that lengthy text.
98
99find now accepts multiple file type arguments to the -type and -xtype
100options separated by comma ','.  For example, to search for symbolic
101links and directories simply provide the shorter '-type l,d' instead
102of the - yet more portable - '( -type l -o -type d )'.
103
104find now diagnoses failures returned by readdir().  This bug was inherent
105in the use of FTS.
106
107find now exits in more cases immediately after the error diagnostic, i.e.,
108without the following usage text, to make the former more eye-catching.
109
110find now outputs a better hint in case the user passed an unquoted shell-
111glob pattern to options like -name, i.e., when the offending argument is
112an existing file.
113
114find now supports the debug option '-D all' to include all of the other
115debug options at once.
116
117xargs now supports the -o, --open-tty option to reopen stdin as /dev/tty
118in the child process before executing the command; useful to run an
119interactive application.  Added for compatibility with BSD.
120
121xargs now supports the GNU_FINDUTILS_FD_LEAK_CHECK environment
122variable to enable/disable fd leak check.
123
124'xargs -t' (--verbose) now properly quotes each part of the command to the
125executed if needed when printing it to stderr; likewise -p (--interactive).
126
127** Documentation Changes
128
129Prefer https:// over http:// links where possible, e.g. for '*.gnu.org' servers.
130
131Both find.1 and the find texinfo manual now consistently document all of the
132'N', 'L' and '?' possibilities in '-printf %Y' output when the determination of
133the type of a symlink target fails.
134
135find.1 now correctly states the -prune has no effect when the -depth option is
136given.  Before, it wrongly stated that -prune would return false in that case.
137
138Some minor documentation improvements are listed in "Bug Fixes" below.
139
140** Bug Fixes
141
142#56820: find: improve diagnostic when a global option like -maxdepth is
143        specified after another argument like a test, thus hopefully avoiding
144        translation issues (at least French, German).
145
146#56142: doc: fix bug #56142 by specifying which actions inhibit the
147        default -print.
148
149#55272: find: improve diagnostic when -name or -iname is used with a pattern
150        containing a directory separator ('/'), suggesting to use -wholename
151        or -iwholename respectively.
152
153#54859: doc: fix typo in 'xargs -l' examples in texinfo manual.
154        Change from 'xargs -1' (minus one) to 'xargs -l' (minus El) in 3 places.
155
156#54838: doc: fix the examples of the -perm option in the texinfo documentation.
157        The example '-perm -g+w,o+w' was misplaced.
158        Bug present since FINDUTILS_4_2_27-1.
159
160#54262: 'find -printf "%Y"' now correctly outputs 'N' for broken symlinks
161        (ENOENT or ENOTDIR).  Previously, it output 'l' in such a case.
162        Bug introduced while attempting to fix #29460 in version v4.5.8.
163
164#54171: 'find -depth' now outputs the name of unreadable directories.
165        Previously, FTS-based find missed to output those entries.
166        Bug present since the FTS implementation in FINDUTILS_4_3_0-1.
167
168#52981: find: the '-delete' action no longer complains about disappeared files
169        when the '-ignore_readdir_race' option is given, too.  That action will
170        also returns true in such a case now.
171
172#52220: 'find -D' without any further argument no longer crashes.
173        Bug present since the implementation of -D in FINDUTILS_4_3_1-1.
174
175#51304: doc: use correct IEC unit prefixes in the documentation of 'find -size'.
176        find(1) uses binary-based units for the suffixes 'k', 'M', and 'G' of
177        the argument of the '-size' option: 1024, 1024*1024 and 1024^3.
178        Therefore, the documentation should use the correct IEC prefixes
179        kibibyte, mebibyte and gibibyte respectively (or their abbreviations
180        'KiB', 'MiB' and 'GiB').
181
182#50758: doc: fix the description of the -perm examples matching the permission
183        mode "022" in find's texinfo manual: the match is for the file's group
184        and 'other' mode bits instead of for user and group.
185        Bug introduced when adding the -perm examples in FINDUTILS-4.2.11.
186
187#50326: find no longer leaks memory for a recently added member in gnulib's
188        mount list structure.
189
190#50259: find -printf '%h' now outputs the correct path for arguments with one or
191        more trailing slashes.  Previously, it would e.g. output "foo" instead
192        of "." when "foo/" was passed; likewise, it would output "/user/xxx/"
193        instead of "/user" when "/user/xxx//" was passed.
194        Bug introduced in FINDUTILS-4.2.19.
195
196#48180: find -noop (an internal option not intended to be exposed to the user)
197        no longer crashes.  Bug introduced in FINDUTILS-4.3.1.
198
199#48030: find -exec + does not pass all arguments for certain specific filename
200        lengths.  After the internal (usually 128k) buffer is full and find(1)
201        executed the given command with these arguments, it would miss to run
202        the command yet another time if only one other file argument has to be
203        processed.  Bug introduced in FINDUTILS-4.2.12.
204
205#46784: frcode drops last char if no final newline
206
207** Changes to the build process
208
209The configure option --enable-id-cache has been removed.  It has been
210a no-op since findnutils-4.5.15.
211
212The configure option --enable-debug has been removed.  Debugging in
213find is now controlled by its -D option only.
214
215The configure option --enable-silent-rules is the default now.
216Use --disable-silent-rules or "make V=1" to get verbose build output.
217
218"make dist" no longer builds .tar.gz files.
219xz is portable enough and in wide-enough use that distributing
220only .tar.xz files is enough.
221
222Maintainer builds from the Git repository now derive the version string from
223the version control system instead of using a fixed string (changed after each
224release manually).  As a result, the inter-release builds can now be
225distinguished: e.g. "4.6.0.152-fe9c" is the 152th commit after the tag "v4.6.0"
226and has the Git short hash "fe9c".  Builds from an unclean tree are marked with
227the suffix "-dirty".
228
229The translation files in the PO directory are no longer version controlled;
230instead bootstrap auto-updates them from "translationproject.org" during a
231maintainer build.
232
233A shell-style test framework borrowed from GNU coreutils has been added.
234This allows better tests with more control over stdin, stdout, stderr,
235signals, preparatory steps, cleanup, return code verification, root-only
236tests, etc.
237
238
239* Major changes in release 4.6.0, 2015-12-28
240
241** Stable Release
242
243This is the first stable release since findutils-4.4.2.  The entries
244below in this file detail the changes that have occurred since release
2454.3.13 (which is the common ancestor of this release and
246findutils-4.4.0).  This release includes all the bug fixes
247incorporated into the 4.4.x release series, since those bug fixes were
248also applied to the 4.5.x release series.
249
250** Summary of Changes
251
252The most significant changes since the 4.4.2 release are:
253
2541. Some backward-incompatible changes have been made to find:
255  - egrep regular expressions now work like GNU grep -E
256  - Minor changes to the way nanoseconds fields are printed
257  - find -perm +mode is now fully POSIX compliant (if you want the old
258    behaviour use -perm /mode).
259  - find -perm +numeric_mode is not supported any more. This syntax is
260    unspecified by POSIX. The prior functionality continues to be
261    available with -perm /numeric_mode. For more details see Savannah
262    bug #38474.
263
2642. Some backward-incompatible changes have been made to xargs:
265  - if the child exits with status 126 or 127, xargs exits with status
266    123.
267
2683. There are also a large number of bugfixes, performance enhancements
269   and documentation improvements, as detailed below.
270
2714. The "oldfind" binary is no longer installed.
272
273** Translations
274
275Updated the Danish translation.
276
277* Major changes in release 4.5.19, 2015-12-28
278
279** Bug Fixes:
280
281Applied patch #8688: Spelling fixes.
282
283* Major changes in release 4.5.18, 2015-12-27
284
285** Changes to find
286
287Only the ftsfind binary will be installed, as "find".  Installing
288oldfind, under any name, is no longer supported.  The configure option
289--with-fts is still allowed, but trying to use it to enable the
290installation of oldfind (for example by using --with-fts=no) results
291in configure stopping with an error message.
292
293** Translations
294
295Updated the Slovenian translation.
296
297* Major changes in release 4.5.17, 2015-12-24
298
299** Future Changes to Release Signing Keys
300
301Future findutils releases will be signed with a new GPG key, though
302this release will be signed with the existing key.  Here are the old
303and new key fingerprints:
304
305pub   1024R/64A95EE5 1996-04-04
306      Key fingerprint = 0C 1C D7 CA 66 33 D2 E9  14 E0 5F 16 D5 24 60 E9
307uid                  James Youngman <jay@gnu.org>
308uid                  James Youngman <JYoungman@vggas.com>
309
310pub   4096R/C5DDACB9 2015-12-24
311      Key fingerprint = 0CF4 E8D8 7159 3224 8428  32B8 88DD 9E08 C5DD ACB9
312uid                  James Youngman <james@youngman.org>
313uid                  James Youngman <jay@gnu.org>
314sub   4096R/771CE15D 2015-12-24
315
316** Functional changes to find
317When the POSIXLY_CORRECT environment variable is set, a warning is no
318longer issued when '/' is found in the argument to -name.  Use of
319POSIXLY_CORRECT also turns off warnings about use of the deprecated
320option -d  and the use of global options in surprising positions.
321
322** Documentation Changes
323The EXPRESSION section of the find manpage is now organised somewhat
324more clearly.  The -regextype option is now correctly documented as
325being positional.
326
327** Bug Fixes:
328When the -a option of xargs is used, xargs no longer leaks a file
329descriptor (fixing a bug reported by Kyle Sallee).
330
331** Translations
332
333Updated the Brazilian Portuguese and Serbian translations.
334
335* Major changes in release 4.5.16, 2015-12-23
336
337** Functional Changes to find
338Using -regextype egrep now has the same effect as -regextype
339posix-egrep.  This is the result of a change to gnulib to bring it
340into line with GNU grep (see https://debbugs.gnu.org/20974#22).
341
342** Translations
343Updated translations: Estonian, Swedish, Polish, Vietnamese, Ukranian,
344Norwegian Bokmaal, Czech, Russian, French, Hungarian.
345
346** Bug Fixes:
347#46715: testsuite error with perl 5.22, gnulib outdated
348
349#40146: gnulib revision doesn't support musl libc
350
351* Major changes in release 4.5.15, 2015-12-18
352
353** Bug Fixes
354#45780: inode column is badly aligned when running 'find <dir> -ls'
355
356#45585: unclear description of -newerXY in manual page.
357
358#45505: give a more explicit error message when the argument to -regex
359        is not a valid regular expression.
360
361#45090: oldfind incorrectly omits test/..test (or any file whose name
362        begins with ..).
363
364#45065: find incorrectly prints a leading zero on the fractional part
365        of ctime timestamps
366
367#45064: Use of [[ ... ]] in /bin/sh script is incorrect
368
369#45062: Enabling CACHE_IDS causes segfaults (this bug affects many
370        historic releases, probably since release 3.0 in 1991).  You
371        would not have been affected by this problem unless you used
372        the option --enable-id-cache when invoking confgure.
373
374#42903: checklists.py now supports Python 3.
375
376#40805: The locatedb manual page uses now troff symbols where
377        appropriate.
378
379** Translations
380
381Updated the German translation.
382
383* Major changes in release 4.5.14, 2014-07-19
384
385** Bug Fixes
386
387#42793: "Failed to write output" with -ls (this bug affected only
388        release 4.5.13).
389
390* Major changes in release 4.5.13, 2014-07-16
391
392** Documentation Changes
393
394Some minor documentation improvements are listed in "Bug Fixes" below.
395
396** Bug Fixes
397
398#40339: Fix leaked directory handle when listing mounted file
399        systems.
400
401#40094: The xargs --help output has a small number of cosmetic
402        improvements.
403
404#39197: Small fix to find's manual page to remove an unwanted
405        backslash, which made the troff incompatible with Eric
406        Raymond's doclifter software.
407
408#39162: -printf reads beyond arguments terminated by \
409
410#35753: Check the success/failure of material I/O operations where
411        these are important to the use of the output (i.e. check the
412        output for "find -ok" but not debugging output).
413
414#31005: The find manual page and Texinfo manual now more clearly state
415        that -exec ... + always returns true.
416
417
418** Translations
419
420Updated translations: Estonian, Polish, Ukranian.
421
422
423* Major changes in release 4.5.12, 2013-09-22
424
425** Functional Changes to find
426
427The GNU extension "find ... -perm /MODE" is no longer disabled when
428the POSIXLY_CORRECT environment variable is set.
429
430The obsolete GNU extension "find ... -perm +MODE", which was withdrawn
431in release 4.2.21 in 2005 due to compatibility problems, has been
432completely removed.  Use "find ... -perm /MODE" instead.
433
434** Documentation Changes
435
436If you use -type or -xtype with a type letter corresponding to a file
437type which is not supported by the system on which find was compiled,
438find will now give a clearer error message (though the functionality
439is unchanged).  Type letters are affected are D, l and p (for Solaris
440Doors, symbolic links and named pipes respectively).
441
442The output of xargs --help has been slightly changed for greater
443clarity.
444
445The documentation for xargs now warns about parallel processes (xargs
446-P) sharing stdout.
447
448The documentation for find -execdir now describes correctly that the
449command will be executed in the same directory as the file we were
450considering at the time.  The documentation previously (and
451incorrectly) stated that the original working directory of find would
452be used.
453
454** Bug Fixes
455
456Some bugs in 4.5.11 were fixed without adding them to the bug
457database, though they are in the ChangeLog:
458
459*** Use of [[ ... ]] in find/testsuite/sv-bug-32043.sh
460
461*** Don't delete header files in "lib/" for "make clean".
462
463*** xargs: wait for process before prompting in interactive mode (-p)
464
465These following fixed bugs are recorded at
466https://savannah.gnu.org/bugs/?group=findutils:
467
468#40088: potential buffer overflow in -execdir and -okdir
469
470#39324: exits without error on OOM
471
472#38583: errno-buffer read failed in xargs_do_exec
473
474#38474: Unintended (?) behaviour change of -perm +mode predicate
475
476#36652: Better document that -0/-d turns off the effect of -E.
477
478#34976: find -execdir leaks file descriptors for the working directory
479
480
481* Major changes in release 4.5.11, 2013-02-02
482
483** Documentation Changes
484
485The Texinfo manual and the find manual pafe now explain why two find
486binaries (either 'find' and 'oldfind', or 'find' and 'ftsfind') are
487installed.  A manual page for either ftsfind or oldfind is also
488installed, whichever is appropriate.
489
490** Bug Fixes
491
492#34079: Apply gnulib ftw memory fix
493
494#33384: If rm/chmod etc. are not in /bin or /usr/bin, updatedb fails
495
496#18227: find -ls does not display device major/minor numbers.
497
498#29698: Correct and clarify documentation of xargs -d option
499
500#32887: Present xargs options alphabetically like in GNU cp(1) etc
501
502#14386: updatedb relies on mktemp, which is not portable.
503
504#32043: find -name [ doesn't obey posix
505
506#37926: The -inum predicate previously gave wrong results in oldfind
507        (ftsfind, the default find binary, was unaffected).
508
509** Functional Changes to xargs
510
511If no utility is specified, xargs now calls "echo" (and searches on
512$PATH to find it) rather than "/bin/echo".  This may give rise to
513subtle behaviour differences for some users.   To avoid unexpected
514surprises, just explicitly specify the utility you would like to run.
515For example use "xargs /bin/echo < foo" rather than "xargs < foo".
516
517A new option is provided, --process-slot-var.  If you set this, xargs
518will set the indicated environment variable in each child.  The values
519are re-used, but no executing child process will have the same value
520as another executing child process.  This wishlist item was Savannah
521bug #29512.
522
523** Functional Changes to find
524
525For find -printf, the format specifiers %{, %[ and %( are all now
526reserved for future use.  Previously these would print {, [ and (
527respectively, but in any case those characters can just be printed
528literally like this: find -printf "{[(".  Code changes intended to
529explain that these are reserved went into findutils-4.5.5, but this
530code had, before now, had no effect.
531
532When expanding "-printf '%F'", find reads /etc/mtab.  We now take the
533last match found in this file, rather than the first, to better deal
534with implementations which have duplicate entries (for example
535/proc/mounts on systems running the Linux kernel).
536
537Both oldfind and ftsfind now use less heap memory when processing
538directories containing very many files.  However, oldfind now uses one
539file descriptor per recursive subdirectory level, which will further
540limit the depth of directory trees it can search.  If you need find to
541be able to search deep directory trees, use ftsfind (this is, by
542default the binary built and installed as 'find').
543
544The behaviour of the "awk", "posix-awk" and "gnu-awk" regular
545expression types selected by the -regextype option have slightly
546changed, to bring them into line with the behaviour of the GNU C
547library.  For "awk", character classes (such as [[:digit:]]) are now
548supported.  For "gnu-awk" and "posix-awk", intervals are supported and
549invalid interval specifcations are treated as literals (for example
550'a{1' is treated as 'a\{1').
551
552
553* Major changes in release 4.5.10, 2011-05-11
554
555** Documentation Changes
556
557The manual now includes a small number of references to further
558reading on security.
559
560** Bug Fixes
561
562#30608: Automagic dependency on selinux.  The configure script now
563provides a --without-selinux option.
564
565#29949: find -execdir does not change working directory
566
567#31359: test-strstr unit test fails on alpha.
568
569#30777: find -exec echo TURNIP{} \+ is accepted but TURNIP is eaten
570
571#30180: error message from incorrect -size option is off
572
573#29828: test suite deadlock on FreeBSD.
574
575** Translations
576
577Updated translations: Finnish, Italian, Danish, Slovenian, German,
578Estonian, French, Japanese, Danish.
579
580* Major changes in release 4.5.9, 2010-04-29
581
582** Bug Fixes
583
584#29593: Make import-gnulib.sh work under a POSIX shell.
585
586#29511: fails to build on kfreebsd-*
587
588#27563: -L breaks -execdir
589
590#19593: -execdir .... {} + has suboptimal performance (see below)
591
592** Translations
593
594Updated translations: Chinese (simplified).
595
596** Performance changes
597
598The find program will once again build argument lists longer than 1
599with "-execdir ...+".  The upper limit of 1 argument for execdir was
600introduced as a workaround in findutils-4.3.4.   The limit is now
601removed, but find still does not issue the maximum possible number of
602arguments, since an exec will occur each time find encounters a
603subdirectory (if at least one argument is pending).
604
605** Functional enhancements to xargs
606
607You can now increase the parallelism of xargs in mid-run by sending
608it SIGUSR1, and decrease the parallelism with SIGUSR2.
609
610* Major changes in release 4.5.8, 2010-04-07
611
612** Bug Fixes
613
614#29460: -printf %Y fails in $CWD-dependent way
615
616#27974: Use gnulib's xreadlinkat support
617
618#29435: fd_is_cloexec does not work on Fedora buildhosts
619
620#27221: symlink_loop check broken by FTS_CWDFD
621
622#27213: avoid failed assertions for non-executable directories.
623
624** Translations
625
626Updated Vietnamese, Czech, Dutch, Polish, Russian translations.
627
628* Major changes in release 4.5.7, 2010-04-03
629
630** Performance changes
631
632If you use the -fstype FOO predicate and specify a filsystem type FOO
633which is not known (e.g. present in /etc/mtab) at the time find
634starts, that predicate is now equivalent to -false.  This substitution
635currently occurs at optimisation level 2 and above.
636
637** Translations
638
639Copyright headers in the translation files have been updated.  Some
640additional messages have been marked for translation.  However, there
641have not been any changes to translation text.  The main purpose of
642this release is to provide a base for updated translations.
643
644* Major changes in release 4.5.6b, 2010-03-30
645
646This is a replacement release for 4.5.6, which is not available by FTP
647since it contains Makefiles which are vulnerable to CVE-2009-4029.
648
649* Major changes in release 4.5.6, 2010-03-30
650
651** Functional Enhancements to find
652
653patch #4848: Patch - Support for SELinux
654
655** Bug Fixes
656
657#29089: SELinux --context and %Z options
658
659#28872: Mistake in "#safer" example in "Problems with -exec and
660        filenames" section of the Texinfo manual.
661
662#28824: Corrected error message for "-ctime x".
663        Likewise for -gid, -inum, -links, -mmin, -cmin, -amin,
664        -uid, -used, -atime, -mtime, -ctime.
665
666#27975: Infinite loop for -exec [..] {} +.
667
668#27846: Assertion failure in xargs.c on AIX.
669
670#27375: Open file descriptors leak into child processes.
671
672#27017: find -D opt / -fstype ext3 -print , -quit coredumps
673
674#27328: segfault if the initial exec for "find -exec" fails.
675
676#27017: find -D opt / -fstype ext3 -print , -quit coredumps.
677
678#26868: compilation error in pred.c on Solaris x86_64
679
680#24873: Duplicate fprint option corrupts output
681
682#23920: warn about un-matchable -path arguments ending in /.
683
684#19120: Patch to fix single quotes in man page find(1)
685
686** Documentation Changes
687
688#26327: xargs man page is vague about the number of times command is executed.
689
690* Major changes in release 4.5.5, 2009-07-06
691
692xargs now handles the case where the system's actual exec limits are
693smaller than the value of ARG_MAX at compile time.  Very few platforms
694normally have this property, but it is possible to configure some Unix
695systems this way.
696
697** Bug Fixes
698
699#25359: files/testsuite/find.gnu/posix-h.exp tests fail
700
701#26587: Fix a typo in -execdir documentation (it says -exec by mistake
702in the text).
703
704#26537: find -prune now makes sure it has valid stat() information.
705
706#22708: Exit status 126 and 127 from the utility invoked from xargs
707now makes xargs return 123, meaning that exit status values 126 and
708127 now unambigously mean that the utility could not be run or could
709not be found, respectively.
710
711** Documentation Changes
712
713The -wholename option to find is no longer preferred over -ipath.
714
715
716* Major changes in release 4.5.4, 2009-03-10
717
718** Performance changes
719
720The ftsfind executable (which is built by default as "find") now calls
721fts() in such a way that it avoids calling stat() on directory
722entries, if it doesn't need the information.  This can produce a
723significant speedup on filesystems which don't populate the d_type
724element of struct dirent, for example reiserfs.  Anecdotal evidence
725suggests this can speed updatedb up from about 30 minutes to 3-4
726minutes.
727
728The ftsfind executable also now avoids calling stat() functions to
729discover the inode number of a file, if we already read this
730information from the directory.  This does provide a speed-up, but
731only for a restricted set of commands such as "find . -inum 4001".
732This fix is listed below as bug #24342.
733
734** Bug Fixes
735
736#25764: remove duplicate entry for 'proc' in updatedb's $PRUNEFS.
737
738#25359: find -H wrongly behaves like -L sometimes; this bug affects
739only filesystems which populate d_type and affects -type and -printf
740%y.   This does not affect the default behaviour of find or find -P.
741
742#25144: Misleading error message when argument to find -user is an
743unknown user or is missing.
744
745#25154: Allow compilation with C compilers that don't allow
746declarations to follow statements.
747
748#24342: -inum predicate shoud use dirent.d_ino instead of stat.st_ino
749(this is a performance bug).
750
751** Translations
752
753Updated translations for Bulgarian, German, Irish, Hungarian,
754Lithuanian, Dutch, Polish, Slovenian, Swedish, Turkish, Ukranian,
755Vietnamese.
756
757** Documentation Changes
758
759The file README-CVS has been renamed to README-hacking and improved.
760
761* Major changes in release 4.5.3, 2008-12-07
762
763** Bug Fixes
764
765#24283: find-4.5.2 -printf %TY causes NULL pointer dereference
766
767** Performance changes
768
769Changes to gnulib's fts code should provide performance improvements
770in find when processing very large directories (for example
771directories containing significantly more than 10000 filenames).
772Performance imporvements may only exist for some find command lines
773(performance testing was done for the fts implementation itself but
774we haven't done the analogous performance tests in find).
775
776File type information is also passed back from fts to find, saving
777calls to the stat system call for find command lines which don't need
778the stat information.  This provides a performance improvement for
779common cases like "find . -type d".
780
781* Major changes in release 4.5.2, 2008-09-07
782
783** Bug Fixes
784
785#24169: find would segfault if the -newerXY test was not followed by
786any argument.
787
788#23996: integer overflow on some platforms when parsing "-used 3".
789
790** Documentation Enhancements
791
792#23070: Corrected manpage description of find -perm /000 (the change
793was already made but the manpage indicated the change would happen
794"soon").
795
796** Translations
797
798Updated translation: French, Indonesian.
799New translation: Czech.
800
801* Major changes in release 4.5.1, 2008-06-21
802
803** Bug Fixes
804
805#22662: find -printf %AX appends nanoseconds in the right place now.
806
807#23663: crash in some locales for -printf %AX (this problem seems to
808have affected only the CVS code, and not any public releases).
809
810** Translations
811
812New translation: Lithuanian.
813
814Updated translations: Chinese (simplified).
815
816** Documentation Enhancements
817
818Added a worked example describing how to find the shallowest instances
819of a given directory name (or names) in a directory hierarchy.
820
821* Major changes in release 4.5.0, 2008-05-21
822
823** Functional Enhancements to find
824
825If the POSIXLY_CORRECT environment variable is set, the system's
826definition of "yes" and "no" responses are used to interpret the
827response to questions from -ok and -okdir.  The default is still to
828use information from the findutils message translations.
829
830** Enhancements
831
832If xargs find that exec fails because the argument size limit it
833calculated is larger than the system's actual maximum, it now adapts
834by passing fewer arguments (as opposed to failing).
835
836** Performance changes
837
838The default optimisation level for find is now -O2 instead of -O0,
839meaning that a number of additional optimisations are performed by
840default.   Current optimisations at each level are:
841
8420:      Perform -name, -path, -iname, -ipath before other checks.
8431:      Expressions containing only cost-free tests are evaluated
844        before expressions which contain more costly tests.
8452:      Bring forward all tests that need to know the type of a file
846        but don't need to stat it.
8473:      All tests are ordered by their estimated cost.
848
849Cost here is simply an estimate of how time consuming the I/O
850operations needed to make a test are.
851
852** Bug Fixes
853
854
855#22662: nanoseconds wrongly appended after "PM" for find -printf %AX
856in locale en_US.UTF-8.
857
858#15472: Error messages that print ino_t values are no longer truncated
859on platforms with 64-bit ino_t.
860
861On some systems without support for a boolean type (for example some
862versions of the AIX C compiler), find's regular expression
863implementation fails to support case-insensitive regular expression
864matching, causing -iregex to behave like -regex.  This is now fixed.
865
866** Documentation Changes
867
868#20873: Indicate that * matches / and leading dot in filenames for
869"find -path".
870
871Both the Texinfo manual and the find manual page now include a more
872precise description of how your locale configuration affects the
873interpretation of regular expressions and how your response to prompts
874from the -ok action are interpreted.
875
876* Major changes in release 4.3.13, 2008-02-14
877
878** Bug Fixes
879
880#22057: Actually rename the old locate database to the new one
881atomically, instead of just claiming the rename is atomic in a
882comment.
883
884#22056: -Xtime tests are off by one second (e.g. rm -f x; touch x;
885find x -mtime 0 should print x).
886
887#21960: xargs should collect the exit status of child processes even if
888the total count of unreaped children has not yet reached the maximum
889allowed.
890
891** Documentation Fixes
892
893Documented various useful techniques with invoking "sh -c" from
894xargs in the Texinfo documentation.
895
896** Translations
897
898Updated the German, Irish, Dutch, Polish and Vietnamese translations.
899
900
901* Major changes in release 4.3.12, 2007-12-19
902
903** Bug Fixes
904
905#15384: Find misbehaves when parent directory is not readable.
906
907** Documentation Fixes
908
909More examples in the xargs manual page, including a portable analogue
910for BSD's "xargs -o".
911
912** Translations
913
914Updated translations: Polish, Dutch, Portuguese, Swedish, Vietnamese.
915
916
917* Major changes in release 4.3.11, 2007-12-02
918
919** Functional changes
920
921When the POSIXLY_CORRECT environment variable is set, "find -perm
922+a+w" is rejected as invalid.  Some other similar mode strings
923starting with '+' which are not valid in POSIX are also rejected.
924
925The -prune action now always evaluates as true (this is also a
926bugfix).
927
928
929** Bug Fixes
930
931#21568: Switch to checking the gnulib code out with native git, not
932CVS.  This affects mainly those who check findutils code out of CVS.
933This is not the first time this bug has been fixed (the previous fix
934used "cvs update -D", which git-cvspserver silently does not
935support).
936
937#21039: Setting the POSIXLY_CORRECT environment variable now turns off
938warnings by default, because POSIX requires that only diagnostic
939messages (and -ok prompts) are printed on STDERR, and diagnostic
940messages must also result in a nonzero exit status.
941
942#20970: Trailing slash on directory arguments breaks -name.  "find
943foo/ -name foo" now correctly matches foo and printf foo/.  See POSIX
944interp http://www.opengroup.org/austin/interps/uploads/40/14959/AI-186.txt
945
946#20865: Using both -delete and -prune without explicitly using -depth
947is now an error.  Traditionally, -delete has always turned -depth on
948anyway, so this is not a functional change.   However, using -depth
949(implicitly or explicitly) makes -prune a no-op.  This change is
950intended to avoid nasty surprises for people who test with
951"-print" and then change it to "-delete" when they are happy.
952
953#20803: POSIX requires that -prune always returns true.  Previously it
954returned false when -depth was in effect and true otherwise.
955
956#20802: If -delete fails, find's exit status will now be non-zero.
957However, find still skips trying to delete ".".
958
959** Documentation Fixes
960#21635: Some of the documentation files had missing copying
961conditions.   The missing files now have copying headers, and these
962are compatible with each other (GNU FDL 1.2).
963
964#21634: No copy of FDL 1.2 included with the source code
965
966#21633: Missing copyright/license header in some documentation.
967
968#21628: find -perm /000 matches all files rather than none, since
969findutils-4.3.3.  The Texinfo documentation is now consistent with the
970manual page on this point.
971
972#21270: Formatting fixes to the xargs.1 manual page, including making
973options bold instead of italic and making OPTIONS a section header
974rather than a subsection.
975
976* Major changes in release 4.3.10, 2007-11-13
977
978** Bug Fixes
979
980#21568: findutils gnulib code does not match the date in
981import-gnulib.config.  We now check out the gnulib code via
982git-cvs-pserver.
983
984* Major changes in release 4.3.9, 2007-11-11
985
986** Licensing
987
988Findutils version 4.3.9 is released under version 3 of the GNU General
989Public License.
990
991** Bug Fixes
992
993#20834: Avoid segmentation violation for -execdir when $PATH is
994unset.  Assume that the PATH is safe in this situation.
995
996#20310: configure uses hosts's support status for "sort -z" when
997generating the updatedb script for use on the target.  This is
998inappropriate when cross-compiling, so avoid doing that.
999
1000#20263: Compilation fix for DEC Alpha OSF/1 cc, which forbids the
1001ordering comparison of function pointers.
1002
1003#20139: find -[acm]time -N (wrongly) includes files from N days ago,
1004as well as (correctly) from less than N days ago.
1005
1006#20273: When xargs is successful without consuming all of stdin (for
1007example, with the -E option), and stdin is seekable, xargs now
1008correctly restores the file position, even on platforms where exit()
1009does not follow the POSIX rules of doing likewise.  Likewise for find
1010(for example, with the -ok action).
1011
1012#20547: The version information printed by find, xargs, locate,
1013updatedb, frcode and code now complies with the GNU Project's coding
1014standards.
1015
1016#20662: Avoid memory leak in find -name and other places affected by
1017gnulib dirname module.  The leak had been present since 4.3.1.
1018
1019#20751: Avoid memory corruption in find -ls that has been present
1020since 4.3.1.
1021
1022#20871: Assertion failure introduced in 4.3.3, when oldfind is invoked
1023in a directory where the parent directory lacks search permission.
1024
1025** Enhancements
1026
1027#20594: Allow fine-tuning of the default argument size used by xargs
1028and find at ./configure time.
1029
1030#20688: The warning printed by -name or -iname when the pattern to
1031match contains a slash can now be silenced by -nowarn.  This warning
1032was originally introduced unconditionally in 4.2.21.
1033
1034Translation of locate --limit problems is improved.
1035
1036POSIX will standardise -path, so the documentation no longer claims
1037that -wholename is the 'canonical' test, and -ipath no longer
1038generates a warning.
1039
1040** Documentation Fixes
1041
1042Point out more explicitly that the subsecond timestamp support
1043introduced by findutils-4.3.3 introduces a change in the format of
1044several fields.
1045
1046Also explain that when reporting a bug, you should check the most
1047recent findutils release first.
1048
1049Introduced doc/find-maint.texi, a maintenance manual for findutils.
1050
1051Added an extra worked example for find (copying a subset of files).
1052
1053The locate command's manual page now has a HISTORY section.
1054
1055#20951: Very bad/unclear/confusing documentation of security checks in
1056find -execdir
1057
1058#20865: Better documentation on the fact that -delete implies -depth
1059and that -delete interacts badly with -prune.
1060
1061#20552: Fixed typos, formatting and section ordering issues in the
1062find manual page.
1063
1064#20529: removed spurious 'o' in description of "xargs -a" in
1065doc/find.texi.
1066
1067#20232: The --max-database-age option of locate was added in release
10684.3.3, but this file (NEWS) did not previously mention this fact.
1069
1070** Translations
1071
1072Updated Dutch translation.
1073
1074
1075* Major changes in release 4.3.8, 2007-06-12
1076
1077** Bug Fixes
1078
1079#20157: Avoid segfault in locate when run as root.  This is caused by
1080a buffer overrun, but at this time no exploit mechanism is known.
1081
1082* Major changes in release 4.3.7, 2007-06-09
1083
1084** Functional changes
1085
1086Locate can now read old-format locate databases generated on machines
1087with a different byte order.  It does this by guessing the byte order,
1088so the result is not completely reliable.  If you need to share
1089databases between machines of different architectures, you should use
1090the LOCATE02 format (which has other advantages, as explained in the
1091documentation).
1092
1093** Security Fixes
1094
1095#20014: Findutils-4.3.7 includes a patch for a potential security
1096problem in locate.  When locate read an old-format database, it read
1097file names into a fixed-length buffer allocated on the heap without
1098checking for overflow.  Although overflowing a heap buffer is often
1099somewhat safer than overflowing a buffer on the stack, this bug still
1100has potential security implications.
1101
1102This bug also affected the following previous findutils releases:
1103
1104 - All releases prior to 4.2.31
1105 - Findutils 4.3.0 to 4.3.6.
1106
1107This bug has been assigned CVE number CVE-2007-2452.
1108
1109** Bug Fixes
1110
1111#20128: Fix compilation error of find/tree.c on AIX with GCC.
1112
1113#20005: Tests -mtime -n and -mtime +n incorrectly treated like -mtime n.
1114
1115#19983: include_next causes compilation failure in findutils 4.3.6 on
1116non-GCC compilers
1117
1118#19981: Don't call setgroups if the function isn't available.  This
1119fixes Savannah bug# 19981.
1120
1121#19980: Don't use the functions putw() or getw() since these are not
1122in current POSIX.  Use the gnulib version of wcwidth() where the
1123system does not provide it.
1124
1125#19979: Compilation errors on BeOS
1126
1127#19970: Cannot cast from pointer to bool using gnulib's <stdbool.h>
1128
1129#19967: Use of __attribute((__noreturn__)) makes compilation fail with
1130some non-GCC compilers
1131
1132#19966: find should link against -lm for modf() and fabs()
1133
1134#19965: Compilation failure on OSF/1 4.0; non-declaration of uintmax_t
1135
1136#19948: Assertion failure O_NOFOLLOW != 0 on IRIX 6.5
1137
1138#19871: Typos in find.1
1139
1140#19596: Fixed this bug again, this time in the Texinfo manual (the
1141discussion should compare %b with %s/512, not %s/1024).
1142
1143#19416: _FORTIFY_SOURCE warn_unused_result warnings
1144
1145* Major changes in release 4.3.6, 2007-05-21
1146
1147** Bug Fixes
1148
1149#19948: Fixed an assertion failure on IRIX 6.5 (O_NOFOLLOW is defined
1150to 0 there).
1151
1152#19923: Fixed an array overrun in groups[] array of 'locate' when run by
1153or as root.  This bug appears not to be exploitable.  If locate is not
1154installed setuid, the bug is not exploitable.  For setuid
1155installations, it is concievable that there could be an information
1156leak if the user uses the -d option or the -e option, though the
1157maintainer has been unable to provoke this on an x86 system.
1158
1159#19871: Spurious .R directives in manpage produced error messages from
1160GNU troff.  This is now fixed (they are corrected to .B).
1161
1162#19416: The result of I/O operations in print-related actions is now
1163checked, and failures are reported.  Any failure will cause find's
1164exit status to be nonzero.   The predicate itself will continue to
1165return true.
1166
1167** Compilation Fixes
1168
1169A variety of changes were made to allow compilation to succeed on
1170non-GNU systems.
1171
1172#19983: Now compiles on DEC C V5.9-005 on Digital UNIX V4.0 (or at
1173least, should).
1174
1175#19970: Compile correctly on C89 systems where the "_Bool" type is not
1176provided, taking into account the limitations of the gnulib
1177replacement for stdbool.h.
1178
1179#19967: Build successfully with C compilers that don't support the GCC
1180 construct __attribute__((__noreturn__)).
1181
1182#19966: Findutils should now build on systems which have the modf()
1183and fabs() functions in the maths library, -lm.  This includes some
1184versions of HP-UX and Solaris.
1185
1186#19965: Fixed a compilation failure on OSF/1 4.0 (no definition of the
1187type uintmax_t).
1188
1189
1190* Major changes in release 4.3.5, 2007-05-05
1191
1192** Functional changes
1193
1194Updatedb can now support he generation of file name databases which
1195are compatible with slocate.  For some time, GNU locate has been able
1196to read these.
1197
1198The /proc filesystem is excluded from the locate database (by
1199default; change PRUNEPATHS to modify this behaviour).
1200
1201** Bug Fixes
1202
1203#19806: The -samefile predicate might get fooled by inode reuse.  We
1204now hold open a file descriptor on the reference file to prevent this.
1205
1206#19768: Better detection of corrupted old-style locate databases
1207(e.g. if the database is too short to include a complete bigram
1208table).
1209
1210#19766: The frcode and code programs now detect write errors more
1211reliably.
1212
1213#19371: Fix compilation failure on systems which #define open to
1214open64 (and similarly with the close system call).  This fixes
1215Savannah bug #19371, affecting AIX 5.3.
1216
1217#19658: When cross-compiling, "make clean" no longer deletes the
1218generated file doc/regexprops.texi, because there is no way to
1219regenerate it.
1220
1221#19391: When xargs knows that the system's actual exec limit is larger
1222than the compiled-in ARG_MAX, use the system's limit without
1223generating an assertion failure.
1224
1225#18203: A duplicate report of bug #17478.
1226
1227#17478: Error messages from find can garble the console.
1228
1229#16378: Assertion failure if stat() returns 00000 as the mode
1230of a file.  This apparently can happen occasionally with broken NFS
1231servers.
1232
1233#11668: FreeBSD extensions for time specification are now
1234implemented.  In fact, these were included in findutils-4.3.3.  The
1235change was listed as a functional change (whcih it is) and this bug
1236report was not mentioned.
1237
1238** Documentation Fixes
1239
1240The locatedb.5 manpage now documents the (default) LOCATE02 format
1241more clearly, and also documents the slocate database format.
1242
1243The maximum and default values applying to the -s option of xargs are
1244now documented more clearly in the manual page.
1245
1246* Major changes in release 4.3.4, 2007-04-21
1247
1248** Bug Fixes
1249
1250#19634: Test suite now passes (again) if "." is on your $PATH.
1251
1252#19619: Findutils builds once again on Cygwin.
1253
1254#19617: Nonexistent start points are (once again) diagnosed in
1255ftsfind.  This bug affected only findutils-4.3.3.
1256
1257#19616: Fix leaf optimisation and loop detection (which were
1258unreliable in findutils 4.3.3).  This bug affected only
1259findutils-4.3.3.
1260
1261#19615: find --version no longer claims to be using FTS_CWDFD when it
1262isn't.  This bug affected only findutils-4.3.3.
1263
1264#19613: "find -L . -type f" no longer causes an assertion failure when
1265it encounters a symbolic link loop.  This bug affected only
1266findutils-4.3.3.
1267
1268#19605: Issue an error message (and later return nonzero exit status)
1269 if a symbolic link loop was encountered during directory traversal.
1270
1271#19484: bigram.c and code.c fail if the first pathname recorded begins
1272with a space
1273
1274#19483: Inconsistent option highlighting in updatedb manpage
1275
1276#18414: Tests for "find -readable" are skipped for the superuser, as
1277 on some systems (e.g. Cygwin with an Administrative user) users can
1278 read mode-000 files.
1279
1280** Translations
1281
1282Findutils 4.3.4 includes a translation for the Ukrainian language.
1283
1284
1285* Major changes in release 4.3.3, 2007-04-15
1286
1287Fiundutils-4.3.3 was released on 2007-04-15.
1288
1289** Bug Fixes
1290
1291#19596: Correct the comparison in the find manpage between %b and %s
1292(the divisor is 512 not 1024).
1293
1294#18714: In the POSIX locale, vertical tabs and form feeds are not
1295field separators.
1296
1297#18713: Quoted but empty arguments which occur last on an xargs input
1298line are no longer ignored, but instead produce an empty argument.
1299
1300#18554: Documented the construct  -exec sh -c 'foo "$@" bar' {} +
1301
1302#18466: we now avoid this bug by limiting "-execdir ...+"
1303to just one argument for the time being.  There is a performance
1304penalty for doing this.  We hope to make a better fix in a later
1305release.
1306
1307#18384: excess bracket in xargs --help
1308
1309#18320: Zero bytes in input should give warning
1310
1311#17437: Corrected the handling of X in symbolic permissions (such
1312as-u+w,a+X).  This change actually occurred in findutils-4.3.2, but
1313the NEWS file for that release didn't mention it.
1314
1315#17396: find -mtime -atime -ctime does not support fractional part
1316(see "Functional changes" below)
1317
1318#14748: find -perm /zzz gives wrong result when zzz evaluates to an
1319 all-zero mask
1320
1321#14535: correctly support case-folding in locate (that is, "locate
1322-i") for multibyte character environments such as UTF-8.  Previously,
1323if your search string contained a character which was outside the
1324single-byte-encoding range for UTF-8 for example, then the
1325case-folding behaviour failed to work and only exact matches would be
1326returned.
1327
1328
1329
1330** Functional changes
1331
1332The -printf action (and similar related actions) now support %S,
1333which is a measurement of the sparseness of a file.
1334
1335The test "-perm /000" now matches all files instead of no files.  For
1336over a year find has been issuing warning messages indicating that
1337this change will happen.  We now issue a warning indicating that the
1338change has already happened (in 4.3.x only, there is no plan to make
1339this change in the 4.2.x series).
1340
1341The tests -newer, -anewer, -cnewer, -mtime, -atime, -ctime, -amin,
1342-cmin, -mmin and -used now support sub-second timestamps, including
1343the ability to specify times with non-integer arguments.
1344
1345The -printf format specifiers also support sub-second timestamps:
1346  atime   ctime  mtime
1347  %a      %c     %t
1348  %AS     %CS    %TS
1349  %AT     %CT    %TT
1350  %A+     %C+    %T+
1351  %AX     %CX    %TX
1352
1353
1354The new test -newerXY supports comparison between status times for
1355files.  One of the status times for a file being considered (denoted
1356X) is checked against a reference time (denoted Y) for the file whose
1357name id the argument.  X and Y can be:
1358
1359   a    Access time
1360   B    Birth time (st_birthtime, currently unsupported)
1361   c    Change time
1362   m    Modification time
1363   t    Valid only for the reference time; instead of comparison
1364        against a file status time, the argument is a time string.
1365        Not yet supported.
1366
1367For example, -newermm is equivalent to -newer, and -neweram is true if
1368the file being considered was accessed more recently than the
1369reference file was modified.  The -newerXY test supports subsecond
1370timestamps where these are available.  The X=B variant is not yet
1371implemented.
1372
1373If you configure the source code and then run the tests with "make
1374check", the test suite fails rather than defaulting to testing the
1375system binaries.
1376
1377A new option, --max-database-age, has been added to locate.
1378
1379
1380* Major changes in release 4.3.2, 2006-11-25
1381
1382** Bug Fixes
1383
1384#18222: find -printf '%H %P' once again prints the right result if
1385more than one start point was given on the command line.
1386
1387#17782: find -execdir now correctly puts the prefix "./" before the
1388expansion of "{}" rather than at the start of the argument it appears
1389in.  Please note that if you use the -exec or -execdir actions with a
1390shell, then you may be vulnerable to shell code injection attacks, so
1391don't do that.  It's not a security defect in find - you should not be
1392passing untrusted data (such as file names chosen by other people) to
1393the shell.
1394
1395#17490: find  -regex generated a segfault in findutils-4.3.1, but this
1396 is fixed in findutils-4.3.2.
1397
1398#17477: find -printf '%' (that is, where the format has a trailing %)
1399now generates an error message.
1400
1401#17372: The fts-based find executable (the default configuration uses
1402fts) is now much faster when -maxdepth is used on filesystems with
1403high fanouts.
1404
1405#15531: The -prune action now behaves correctly when applied to a file.
1406
1407** Functional changes
1408
1409The slocate database format is now supported.  Preliminary changes
1410intended to eventually allow setuid operation of locate have also been
1411made.  For the moment, please don't install GNU locate as a
1412set-user-ID program (except for testing purposes; if you do so, please
1413make sure that untrusted users cannot execute the set-user-ID locate
1414program).
1415
1416Use of an slocate database which was built with a nonzero security
1417mode (at the moment, GNU updatedb will not do this) forces locate's
1418"-e" option to be turned on, which has an effect on the "-S" option
1419which is probably surprising for most users.
1420
1421
1422** Documentation Fixes
1423
1424The global effect of options (other than -daystart and -follow) is now
1425explained more clearly in the manual page.   Savannah bug #15360.
1426
1427
1428* Major changes in release 4.3.1, 2006-08-06
1429
1430** Bug Fixes
1431
1432Find now follows POSIX rules for determining where directories end and
1433expressions start.  This means that "find \(1 \!2 \, \)" now searches
1434in the four named directories, rather than trying to parse an
1435expression. (Savannah bug #15235).
1436
1437You now get a more helpful error message when you use command lines
1438which have missing expressions, such as
1439      find . ( )
1440      find . !
1441      find . -a
1442      find . \( -not \)
1443      find . \( -true -a
1444
1445Savannah bug #15800: If find finds more subdirectories within a parent
1446directory than it previously expected to based on the link count of
1447the parent, the resulting error message now gives the correct
1448directory name (previously an error message was issued but it
1449specified the wrong directory).
1450
1451Savannah bug #16738: "find .... -exec ... {} +" now works if you have
1452a large environment and many files must be passed to the -exec
1453action.  The same problem affected the -execdir action, though since
1454the number of files in a given directory will normally be smaller, the
1455problem was worse for -exec.
1456
1457Savannah bug #16579: Updatedb now works if it is running as a user
1458whose login shell is not actually a shell.
1459
1460There have also been a number of documentation improvements (includng
1461Savannah bug #16269).
1462
1463** Functional changes
1464
1465For find, debug output can now be enabled at runtime with the -D
1466option.  This causes the printing of various sorts of information
1467about find's internal state and progress.
1468
1469The find option -nowarn cannot itself produce a warning (this used to
1470happen with commands like "find . -name quux -nowarn -print").
1471
1472** Performance Enhancements
1473
1474Find now has a rudimentary cost-based optimiser.  It has an idea of
1475the basic cost of each test (i.e. that -name is very cheap while -size
1476is more expensive).  It re-orders tests bearing in mind the cost of
1477each test and its likely success.  Predicates with side effects (for
1478example -delete or -exec) are not reordered.  The optimiser is not
1479yet enabled by default, but the new option -O controls the query
1480optimisation level.  To see this in action, try
1481  find -D opt -O3 . -type f -o -type c -o -size 555 -name Z
1482and compare the optimised query with:
1483  find -D opt -O3 . -size 555 -o -type c -o -type f -name Z
1484and
1485  find -D opt     . -size 555 -o -type c -o -type f -name Z
1486
1487Over time, as optimisations are proven to be robust and correct, they
1488will be moved to lower optimisation levels.  Some optimisations have
1489always been performed by find (for example -name is always done early
1490if possible).
1491
1492** Translations
1493
1494Findutils 4.3.1 includes updated translations for the following
1495languages:
1496 Vietnamese, Belarusian, Catalan, Danish, German, Greek, Esperanto,
1497 Spanish, Estonian, Finnish, French, Irish, Galician, Croatian, Hungarian,
1498 Indonesian, Italian, Japanese, Korean, Luganda, Malay, Dutch, Polish,
1499 Portuguese, Brazilian Portuguese, Romanian, Russian, Kinyarwanda,
1500 Slovak, Slovenian, Serbian, Swedish, Turkish, Chinese (simplified),
1501 Chinese (traditional), Bulgarian
1502
1503* Major changes in release 4.3.0, 2005-12-12
1504
1505The 4.3.x release series are currently 'development' releases.  Please
1506test it, but think carefully before installing it in a production
1507system.  New features in findutils-4.3.x are under development; they
1508may change or go away.
1509
1510All changes up to and including findutils-4.2.27 are included in this
1511release.  In addition the following changes are new in this release:
1512
1513** Functional Changes
1514
1515By default, find now uses the fts() function to search the file
1516system.  The use of fts greatly increases find's ability to search
1517extremely deep directory hierarchites.
1518
1519You can tell that the version of find you are using uses FTS, because
1520the output of "find --version" will include the word "FTS".
1521
1522Currently two binaries for 'find' are built.  The configure option
1523--without-fts can be used to select whether 'find' uses fts:
1524
1525                                  With fts      Without fts
1526default configuration             find          oldfind
1527configure --with-fts              find          oldfind
1528configure --without-fts           ftsfind       find
1529
1530New tests, -readable, -writable, -executable.  These check that a file
1531can be read, written or executed respectively.
1532
1533* Major changes in release 4.2.27, 2005-12-06
1534
1535** Warnings of Future Changes
1536
1537The test -perm /000 currently matches no files, but for greater
1538consistency with -perm -000, this will be changed to match all files;
1539this change will probably be made in early 2006.  Meanwhile, a warning
1540message is given if you do this.
1541
1542** Bug Fixes
1543
1544If xargs is invoked with many short arguments on PPC systems running
1545the Linux kernel, we no longer get an "argument list too long" error
1546from the operating system.
1547
1548Fixed a bug in the test suite which caused it to spuriously fail on
1549systems where ARG_MAX is different to the value used by the Linux
1550kernel on 32-bit x86-architecture systems.
1551
1552On systems running the Linux kernel, "find -printf %F" no longer
1553produces the wrong answer for files on filesystems that have been
1554remounted elsewhere using "mount --bind". (Savannah bug #14921).
1555
1556** Documentation Changes
1557
1558Following some extensive and detailed review comments from Aaron
1559Hawley, the material in the manual pages and the Texinfo manual are
1560now synchronised.
1561
1562The %M format specifier of "find -printf" is now documented, although
1563it has existed since release 4.2.5.
1564
1565The 'find' manual page now correctly documents the fact that -regex
1566defaults to using Emacs-style regular expressions (though this can be
1567changed).
1568
1569* Major changes in release 4.2.26, 2005-11-19
1570
1571** Public Service Announcements
1572
1573I'd like to point out a second time that the interpretation of '-perm
1574+mode' has changed to be more POSIX-compliant.  If you want the old
1575behaviour of the GNU extension you should use '-perm /mode'.  See the
1576NEWS entry for findutils version 4.2.21 for details.
1577
1578** Functional Changes
1579
1580The xargs command now supports a new option (--delimiter) which allows
1581input items to be separated by characters other than null and
1582whitespace.  This resolves Savannah support request sr #102914.
1583
1584Sometimes find needs to read the /etc/mtab file (or perform the
1585equivalent operation on systems not using /etc/mtab).  If this
1586information is needed but not available, find now exits with an error
1587message non-zero status.  If the information is not needed, find will
1588not spuriously fail.
1589
1590A new xargs option --delimiter allows the input delimiter to be
1591changed (previously \0 was the only choice unless you use the -L
1592option, which changes other semantics too).
1593
1594** Bug Fixes
1595
1596If the environment size is too large to allow xargs to operate
1597normally, 'xargs --help' still works (now).
1598
1599If the input to xargs is a large number of very short options (for
1600example, one character each), earlier versions of xargs would fail
1601with 'Argument list too long'.  However, since this is precisely the
1602problem that xargs was invented to solve, this is a bug.  Hence on
1603those systems we now correctly use a shorter command line.  This
1604problem particularly affected 64-bit Linux systems because of the
1605larger size of pointers, although 32-bit Linux systems were also
1606affected (albeit for longer command lines).  In theory the same
1607problem could affect 'find -exec {} +', but that's much less likely
1608(even so, the bug is fixed there too).
1609
1610Bugfix for an unusual failure mode (Savannah bug #14842) where an
1611attempt to allocate more space for directory contents succeeds but is
1612incorrectly diagnosed as a failure.  The likelihood of you
1613experiencing this depends on your architecture, operating system and
1614resource limits.  This failure has been observed in a directory
1615containing 35396 entries.
1616
1617** Documentation Changes
1618
1619The EXAMPLES section of the find manual page now correctly describes
1620the symbolic and octal modes for the -perm test.
1621
1622The documentation and "--help" usage information for the -L, -l, -I
1623and -i options have been clarified (but the behaviour has not changed).
1624
1625The documentation now explains more clearly what happens when you use
1626"-L -type l".
1627
1628* Major changes in release 4.2.25, 2005-09-03
1629
1630** Bug Fixes
1631
1632find -perm /440 (which should succeed if a file is readable by its
1633owner or group) now works.  Previously there was a bug which caused
1634this to be treated as "find -perm 440".
1635
1636Some files in the xargs test suite have been renamed to avoid problems
1637on operating systems whoch cannot distinguish filenames on the basis
1638of upper/lower case distinctions.
1639
1640The software now builds on Cygwin, including the generated file
1641regexprops.texi.
1642
1643Findutils should now build once again on systems supporting AFS, but
1644this support has not recently been fully tested.  Findutils should
1645also (once again) build on Cygwin.
1646
1647** Other Changes
1648
1649The test suite for find is now much more extensive.
1650
1651* Major changes in release 4.2.24, 2005-07-29
1652
1653** Documentation Changes
1654
1655The manual now includes a "Worked Examples" section which talks about
1656the various ways in which findutils can be used to perform common
1657tasks, and why some of these alternatives are better than others.
1658
1659The -I option of xargs (which is required by the POSIX standard) is
1660now documented.
1661
1662We now document the fact that find ensures that commands run by -ok
1663and -okdir don't steal find's input.  Find does this by redirecting
1664the command's standard input from stdin.
1665
1666Many documentation readability enhancements and proofreading fixes
1667were contributed by Aaron Hawley.
1668
1669** Functional Changes
1670
1671*** Functional changes in locate
1672
1673The "--regex" option of locate now assumes the regular expression to
1674be in the same syntax as is used in GNU Emacs, though this can be
1675changed with the new option --regextype.  This is a change from the
1676existing behaviour (which was to use POSIX Basic Regular Expressions).
1677Since this feature is releatively new anyway, I though it was more
1678useful to have compatibility between regular expression handling in
1679find and locate than to maintain the short-lived previous behaviour of
1680locate.
1681
1682The locate program now also supports a "--regextype" long option which
1683controls which regular expression syntax is understood by locate.
1684This is a long option and has no single-letter 'short option'
1685equivalent.
1686
1687*** Functional changes in find
1688
1689The regular expression syntax understood by "find" can be changed with
1690the -regextype option; this option is positional, meaning that you can
1691have several tests, each using a distinct syntax (this is not
1692recommended practice however).
1693
1694The default regular expression syntax is substantially the same as
1695that recognised by GNU Emacs, except for the fact that "." will match
1696a newline.
1697
1698The leaf optimisation can be disabled with the configure option
1699"--disable-leaf-optimisation", which is equivalent to specifying
1700"-noleaf" on all find command lines.  This is useful for systems
1701having filesystems which do not provide traditional Unix behaviour for
1702the link count on directories (for example Cygwin and the Solaris 9
1703HSFS implementation).
1704
1705** Bug Fixes
1706
1707*** Bug Fixes for find
1708
1709The -iregex test now works once again on systems that lack
1710re_search() (that is, systems on which findutils needs to use the
1711gnulib version of this function).
1712
1713find -regex now once again uses GNU Emacs-compatible regular
1714expressions.
1715
1716If invoked with stderr closed, the -fprint and -fprintf actions now no
1717longer cause error messages to be sent into the output file.
1718
1719If the link count of a directory is less that two, the leaf
1720optimisation is now disabled for that directory.  This should allow
1721searching of non-Unix filesystems to be more reliable on systems that
1722don't take the trouble to make their filesystems look like traditional
1723Unix filesystems.   Some filesystems don't even take the trouble to
1724have a link count of less than two and for these, -noleaf is still
1725required unless --disable-leaf-optimisation was used at configure time.
1726
1727The "%Y" directive for the -printf action now no longer changes find's
1728idea of the mode of the file, so this means among other things that
1729"-printf %Y %y" now works properly.  This is Savannah bug #13973.
1730
1731* Major changes in release 4.2.23, 2005-06-19
1732
1733** Documentation Changes
1734
1735The -L and -I options of xargs are currently incompatible (but should
1736not be).
1737
1738Improved the documentation for -execdir and -okdir.
1739
1740** Functional Changes to updatedb
1741
1742File names ending in "/" which are specified as an argument to
1743--prunepaths (or in $PRUNEPATHS) don't work, so we now issue an error
1744message if the user tries to do that.  The obvious exception of course
1745is "/" which does work and is not rejected.
1746
1747
1748* Major changes in release 4.2.22, 2005-06-12
1749
1750** Security Fixes
1751
1752If a directory entry searched with "find -L" is a symbolic link to
1753".", we no longer loop indefinitely.  This problem affected find
1754versions 4.2.19, 4.2.20 and 4.2.21.  This problem allows users to make
1755"find" loop indefinitely.  This is in effect a denial of service and
1756could be used to prevent updates to the locate database or to defeat
1757file security checks based on find.   However, it should be noted that
1758you should not use "find -L" in security-sensitive scenarios.
1759
1760** Other Bug Fixes
1761
1762None in this release.
1763
1764** Functional Changes to locate
1765
1766A locate database can now be supplied on stdin, using '-' as a element
1767of the database-path. If more than one database-path element is '-',
1768later instances are ignored.
1769
1770A new option to locate, '--all' ('-A') causes matches to be limited to
1771entries which match all given patterns, not entries which match
1772one or more patterns.
1773
1774** Documentation Changes
1775
1776Some typos in the manual pages have been fixed.  Various parts of the
1777manual now point out that it is good practice to quote the argument of
1778"-name".  The manpage now has a "NON-BUGS" section which explains some
1779symptoms that look like bugs but aren't.  The explanations of the "%k"
1780and "%b" directives to "find -printf" have been imrpoved.
1781
1782
1783* Major changes in release 4.2.21, 2005-06-07
1784** Functional Changes to find
1785
1786The GNU extension "find ... -perm +MODE" has been withdrawn because it
1787is incompatible with POSIX in obscure cases like "find ... -perm ++r".
1788Use the new syntax "find ... -perm /MODE" instead.  Old usages will
1789still continue to work, so long as they don't conflict with POSIX.
1790
1791If the output is going to a terminal, the -print, -fprint, -printf and
1792-fprintf actions now quote "unusual" characters to prevent unwanted
1793effects on the terminal.  See "Unusual Characters in File Names" for
1794further details.  There is no change to the behaviour when the output
1795is not going to a terminal.   The locate program does the same thing,
1796unless the -0 option is in effect (in which case the filenames are
1797printed as-is).
1798
1799** Functional Changes to locate
1800
1801The locate command will now read each locate database at most once.
1802This means that if you are using multiple databases and are searching
1803for more than one name, the results will now be printed in a different
1804order (and if you specified a small limit with --limit, you may get a
1805different set of results).
1806
1807A new option '--print' for locate causes it to print the matching
1808results even if the '--count' or '--statistics' option is in effect.
1809
1810** Bug Fixes
1811find /blah/blah/blah -depth -empty now works once again.
1812
1813The -regex and -iregex tests of find now correctly accept POSIX Basic
1814Regular Expressions.  (Savannah bug #12999)
1815
1816The updatedb program now works on systems where "su" does not support
1817the "-s" option, for example Solaris.
1818
1819* Major changes in release 4.2.20, 2005-03-17
1820** Internationalization and Localization
1821Updated Vietnamese and Dutch translations.
1822
1823** Bug Fixes
1824Minor bugfix affecting only those who compile from the CVS repository,
1825as opposed to those who compile from the source releases.
1826
1827* Major changes in release 4.2.19, 2005-03-07
1828** Bug Fixes
1829
1830find should now no longer hang on systems which lack the O_NOFOLLOW
1831flag to open(2) and which are clients of an unresponsive NFS server
1832(Savannah bug #12044).
1833
1834We now avoid inappropriately failing for "find -L foo" or "find -H
1835foo" if foo is a symbolic link (Savannah bug #12181).  Previously we
1836used to fail with the error message "Too many levels of symbolic
1837links".
1838
1839"find . -false -exec foo {} +" no longer runs an extra instance of foo
1840when find exits (Savannah bug #12230).
1841
1842If the chdir() safety check fails but we can no longer get back to
1843where we started, exit with an explanatory (fatal) error message.
1844This does not happen on GNU/Linux and FreeBSD because the safety check
1845is not needed (the security problem the safety check protects against
1846is prevented in a cleaner way on those systems).
1847
1848"make distclean" no longer deletes regex.c (which "make all" needs).
1849
1850**  Functionality Changes
1851"find -printf "%h\n" will now print "." for files in the current directory.
1852Previously it printed nothing (but there was a bug in the %h
1853implementation anyway).  This fixes Savannah bug #12085.
1854
1855Should now build (again) on non-C99-compliant systems.
1856
1857** Documentation enhancements
1858Fixed some typos and clarified wording in "Working with automounters".
1859
1860** Internationalization and Localization
1861New Vietnamese message translation.
1862
1863* Major changes in release 4.2.18, 2005-02-16
1864** Bug Fixes
1865*** "find -depth" was missing out non-leaf directories when they contain
1866    non-directories.  This affected findutils releases 4.2.15,
1867    4.2.16 and 4.2.17, but the bug is now fixed.
1868*** Find no longer hangs on systems which are clients of unresponsive
1869    NFS servers.
1870**  Documentation improvements
1871*** Improvements and corrections to the find.1 manpage, including corrections to the descriptions of -H and -L.
1872
1873* Major changes in release 4.2.17, 2005-02-08
1874** Bug Fixes
1875*** bug #11861  undefined symbol "basename" on IRIX 5.3
1876*** bug #11865  xargs -i regression  (as compared to findutils-4.2.12)
1877*** bug #11866  Typo in pred_okdir renders it useless (affecting 4.2.16 only)
1878*** patch #3723 fix recent process_top_path change (for -execdir on /)
1879*** Fixing bug #11866 and applying patch #3723 made -execdir work much better.
1880*** find bar/baz/ugh now works again if baz is a symbolic link (broken
1881    in 4.2.15).
1882
1883* Major changes in release 4.2.16, 2005-02-05
1884**  Functionality Changes
1885*** Updated the message catalogues for the translated messages.
1886*** The subfs filesystem is now treated the same as the autofs
1887    filesystem is.
1888*** New translations:  Belarusian, Catalan, Greek, Esperanto,
1889    Finnish, Irish, Croatian, Hungarian, Japanese, Luganda,
1890    Malay, Romanian, Slovenian, Serbian, Chinese (simplified).
1891
1892**  Bug Fixes
1893*** The -execdir action now works correctly for files named on the
1894    command line.
1895
1896* Major changes in release 4.2.15, 2005-01-29
1897**  Functionality Changes
1898*** locate now supports matching regular expression (--regex).
1899*** --enable-d_type-optimization (introduced in findutils 4.2.13) is now turned on by default.
1900
1901* Major changes in release 4.2.14, 2005-01-25
1902**  Functionality Changes
1903*** New options -L, -P, -H for locate.  The work in the same was as the same options for find.
1904**  Bug Fixes
1905*** Don't include the "findutils/find/testsuite/find.gnu" subdirectory in the
1906    distributed tar file more than once.
1907*** Should now build on Solaris once again.
1908*** -xtype and -printf %Y now work correctly for symbolic links once again
1909**  Documentation improvements
1910*** All options for "locate" are now documented
1911
1912* Major changes in release 4.2.13, 2005-01-23
1913**  Performance Enhancements
1914*** On Linux and some other systems, a large performance improvement,
1915    because we can eliminate many of the calls to lstat() (in extreme
1916    cases, 99% of them).  Limited testing shows a 2x speedup on NFS
1917    filesystems.  Other systems which can make use of this enhancement
1918    include Mac OS X and *BSD.
1919
1920* Major changes in release 4.2.12, 2005-01-22
1921**  Functionality Changes
1922*** find is now POSIX-compliant, as far as I know.
1923*** -exec ... {} + now works.
1924*** New actions -execdir and -okdir which are like -exec and -ok but more secure.
1925*** "locate -w" is now a synonym for "locate --wholepath".
1926*** An empty path entry in the locate database path (for example "::" in
1927    $LOCATE_PATH or in the argument to "locate -d") is taken to mean
1928    the default database, whose name is hard-coded in locate.
1929**  Bug Fixes
1930*** If find or xargs cannot write to stdout, for example because
1931    output is redirected to a file and the disk is full, the
1932    relevant program will return a non-zero exit status.
1933
1934* Major changes in release 4.2.11, 2004-12-12
1935**  Bug Fixes
1936*** Compilation fix for systems without EOVERFLOW.
1937*** More helpful error message if you make a mistake with (, ), -o or -a.
1938**  Functionality Changes
1939*** If you have unclosed parentheses on the find command line,
1940    or any of a number of similar problems, find will now produce
1941    a more helpful error message.
1942*** locate -b is now a synonym for locate --basename
1943*** locate now supports a --statistics (or -S) option, which prints some
1944    statistics about the locate databases.
1945*** Implemented the -samefile option.
1946**  Documentation improvements
1947*** New chapter in the manual, "Security Considerations".
1948*** Better documentation for -prune (Mainly thanks to   Stepan Kasal)
1949**  Bug Fixes
1950*** locate's options -i and -w now work with the -e option (previously a bug
1951    prevented this).
1952
1953* Major changes in release 4.2.10, 2004-12-06
1954**  Bug Fixes
1955*** Portability fix for fstype.c: should now compile on UNICOS, and possibly
1956    also produce useful results on BeOS and Dolphin, perhaps other
1957    systems too.
1958
1959* Major changes in release 4.2.9, 2004-12-05
1960**  Functionality Changes
1961*** 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_".
1962*** xargs now supports the POSIX options -E, -I and -L.   These are synonyms
1963    for the existing options -e, -i and -l, but the latter three are
1964    now deprecated.
1965**  Bug Fixes
1966*** xargs -n NUM now invokes a command as soon as it has NUM arguments.
1967    Previously, it waited until NUM+1 items had been read, and then
1968    invoked the command with NUM arguments, saving the remaining one
1969    for next time.
1970*** If "find -L" discovers a symbolic link loop, an error message is issued.
1971*** If you specify a directory on the find command line, but -prune
1972    is applied to it, find will no longer chdir() into it anyway.
1973**  Documentation improvements
1974*** The precise interpretation of the arguments to the -atime, -ctime
1975    and similar tests in find has been documented more clearly.
1976
1977* Major changes in release 4.2.8, 2004-11-24
1978*** Bugfix to the findutils 4.2.7 automount handling on Solaris.  This
1979    worked to some extent in findutils-4.2.7, but is much improved in
1980    findutils-4.2.8.
1981
1982* Major changes in release 4.2.7, 2004-11-21
1983**  Functionality Changes
1984*** xargs can now read a list of arguments from a named file, allowing
1985    the invoked program to use the same stdin as xargs started with
1986    (for example ``xargs --arg-file=todo emacs'').
1987**  Documentation improvements
1988*** The Texinfo manual now has an extra chapter, "Error Messages".  Most
1989    error messages are self-explanatory, but some of the ones which
1990    are not are explained in this chapter.
1991**  Bug Fixes
1992*** Avoid trying to link against -lsun on UNICOS, which doesn't need it or
1993    have it.
1994*** Bugfix to the findutils 4.2.6 automount handling (which hadn't been enabled
1995    on Solaris).
1996*** Reenabled internationalisation support (which had been accidentally
1997    disabled in findutils-4.2.5).
1998
1999* Major changes in release 4.2.6, 2004-11-21
2000**  Bug Fixes
2001*** find now copes rather better when a directory appears to change just as
2002    it is about to start examining it, which happens with automount.
2003    This is because automount mounts filesystems as you change
2004    directory into them.  This should resolve Savannah bugs #3998,
2005    #9043.
2006
2007* Major changes in release 4.2.5, 2004-11-11
2008**  Functionality Changes
2009*** The POSIX options -H and -L are supported.  These control whether or not
2010    find will follow symbolic links.
2011*** The BSD option -P is also now supported (though in any case
2012    it is the default).
2013**  Documentation improvements
2014***  Better documentation for "xargs -i".
2015**  Bug Fixes
2016*** "make install" now respects DESTDIR when generating localstatedir.
2017    (this is only relevant if you are installing to some location
2018    other than the one that you indictaed when you ran "configure").
2019*** Compatible with automake versions 1.8 and 1.9.
2020*** Build problems on UNICOS now fixed, though the linker will still generate
2021    warnings because we try to link with the nonexistent library
2022    "-lsun".  Edit $(LIBS) to work around this problem.
2023
2024* Major changes in release 4.2.4, 2004-11-08
2025**  Functionality Changes
2026*** If your system sort command has a working "-z" option, updatedb will
2027    now correctly handle newline characters in filenames (as will
2028    locate).
2029*** xargs now uses 128Kb of command line by default (less if the system
2030    doesn't support that much).
2031*** If you specify a 'find' option after non-option, a warning message
2032    is now issued.  Options should be specified immediately after the
2033    list of paths to search.  These warnings are enabled if you
2034    specify the -warn option, or if stdin is a tty.  They are diabled
2035    by the use of the -nowarn option.
2036*** Like find, the locate program now supports an option --null (short form -0)
2037    which changes the result separator from newline to NULL.
2038*** Locate supports the option -c (long form --count) which suppresses normal
2039    output but prints on stdout the number of results produced (like
2040    grep -c).
2041*** Locate supports the option -l (long form --limit) which limits the
2042    number of results.  This is useful if you only want to find out if
2043    there are copies of a certain file on the system, but don't want
2044    to wait for the entire locate database to be searched.
2045*** Locate now has an option --basename which forces the specified pattern to
2046    be matched against the basename of the entries in the locate
2047    database, rather than the whole name.  The default behaviour
2048    (matching against the whole name of the file including all the
2049    parent directory names) corresponds to the option --wholename.
2050*** updatedb has a new option, --findoptions, that can be used to
2051    pass extra options through to the find command that it uses.
2052**  Bug Fixes
2053*** "find -printf '%H\n'" now works (rather than segfaulting) on
2054    systems that have non-writable string constants.
2055*** Better POSIX compliance for the -s option to xargs (out of range
2056    values should just result in bounding to the correct range, not an
2057    error, so now we just print a warning message and adjust the
2058    value).
2059*** Corrected section numbers of manual page cross-references
2060
2061* Major changes in release 4.2.3, 2004-10-30
2062**  Functionality Changes
2063*** Added new action -delete which deletes things that find matches.
2064*** Added new action -quit which causes find to exit immediately.
2065*** A new format directive '%D' for "find -printf" prints the device number.
2066*** The -ls predicate no longer truncates user or group names.
2067*** Added new option "-d" which is a synonym for "-depth" for compatibility
2068    with Mac OS, OpenBSD and FreeBSD.  This option is already
2069    deprecated since the POSIX standard specifies "-depth".
2070*** Added two new format specifiers to the -printf action; these are
2071    %y and %Y.  They indicate the type of the file as a single letter;
2072    these are the same latters as are used by the "-type" test.
2073*** If a parent directory changes during the execution of find,
2074    the error message we issue identifies the nature of the change
2075    (for example the previous and current inode numbers of the
2076    directory we've just returned out of).
2077** Other Changes
2078*** Non-functional code changes to silence compiler warnings.
2079
2080* Major changes in release 4.2.2, 2004-10-24
2081**  Documentation improvements
2082*** "find ... -exec {}+" is not yet supported.
2083** Bug Fixes
2084*** Fixed compilation problems on Solaris, RedHat EL AS 2.1, Irix, AIX
2085*** Work around possible compiler bug on HP-UX 11.23 for ia64
2086*** The built-in internationalisation support now works again.
2087** Other Changes
2088*** We now import the gnulib source in the way it is intended to be used,
2089    which means among other things that we only have one config.h file
2090    now.
2091*** Functions which findutils requires but which are not present in
2092    gnulib are now defined in "libfind.a".  This is in the lib
2093    directory, while gnulib is in the gnulib subdirectory.
2094*** Fixed a typo in the address of the FSF in many of the file headers.
2095
2096* Major changes in release 4.2.1, 2004-10-17
2097** Bug Fixes
2098*** 'find -name \*bar now matches .foobar, because the POSIX standard
2099     requires it, as explained at
2100     https://standards.ieee.org/reading/ieee/interp/1003-2-92_int/pasc-1003.2-126.html
2101
2102* Major changes in release 4.2.1, 2004-10-17
2103** Bug Fixes
2104*** find -iname now works correctly on systems that have an fnmatch() function
2105    that does not support FNM_CASEFOLD
2106*** updatedb now uses signal names for "trap" instead of numbers,
2107    as per bug #9465 (see https://www.opengroup.org/onlinepubs/009695399/utilities/trap.html)
2108*** Better support for systems lacking intmax_t
2109** Other Changes
2110**** findutils now uses a newer version of gnulib (dated 2004-10-17).
2111
2112* Major changes in release 4.2.0, 2003-06-14
2113** Functionality Changes
2114*** xargs now works better when the environment variables are very extensive.
2115    The xargs command used to run into difficulties if the environment
2116    data contained more than 20480 bytes.
2117*** New options -wholename and -iwholename
2118    As per the GNU Projecvt coding standard, These are preferred over
2119    the -path and -ipath options.  Using -ipath now generates a warning,
2120    though -path does not (since HPUX also offers -path).
2121*** The environment variable FIND_BLOCK_SIZE is now ignored.
2122*** New option "-ignore_readdir_race"
2123    silences an error messages which would otherwise occur if a file is removed
2124    after find has read it from the directory using readdir(), but before
2125    find stats the file.  There is also an option
2126    -noignore_readdir_race which has the opposite effect.
2127**  Documentation improvements
2128*** The -size option of find is now documented in more detail
2129*** POSIX compliance and GNU extensions
2130    The find manual page also now includes a section
2131    which describes the relationship between the features of GNU
2132    find and the POSIX standard.  Some other small improvements
2133    to the find and xargs manual pages have been made.
2134*** The argument to the -fprintf directive is now better documented.
2135    The escape code '\0' for the `-printf' predicate of find is now
2136    documented, and the documentation for the %k and %b specifiers
2137    has been improved.
2138*** xargs -i is now more clearly documented.
2139** Bug Fixes
2140*** locate 'pa*d' will now find /etc/passwd (if it exists, of course)
2141*** xargs standard input is not inherited by child processes
2142    If the command invoked by xargs reads from its standard input,
2143    it now gets nothing, as opposed to stealing data from the
2144    list of files that xargs is trying to read.
2145*** Better support for 64-bit systems.
2146*** The command "xargs -i -n1" now works as one might expect,
2147    I think this is a strange thing to want to do.
2148*** Arguments to find -mtime that are too large are now diagnosed
2149    Previously, this just used to cause find just to do the wrong thing.
2150*** updatedb is now somewhat more robust
2151    The updatedb shell script now does not generate an empty
2152    database if it fails.
2153*** Sanity-check on some data read from locatedb
2154    Locate now detects some types of file corruption in the
2155    locate database.
2156*** The %k format specifier for -fprintf now works
2157    This was broken in 4.1.20.
2158
2159* Major changes in release 4.1.20, 2003-06-14:
2160** New maintainer, James Youngman <jay@gnu.org>
2161** As far as I know, this is the first release after 4.1.7, but I've left
2162   a gap just in case.
2163** We now use an "imported" version of gnulib, rather than including
2164   a copy of the gnulib code in our CVS repository.   There are no
2165   differences in the build instructions, though (unless you are
2166   building directly from CVS, in which case please read the file
2167   README-CVS).
2168** There are no (deliberate) functional changes in version 4.1.20.
2169
2170* Major changes in release 4.1.7, 2001-05-20:
2171fix problem so that default "-print" is added when "-prune" is used.
2172security fixes related to directories changing while find is executing.
2173
2174* Major changes in release 4.1.6, 2000-10-10:
2175correct bug in prune.
2176added --ignore-case option for locate
2177
2178* Major changes in release 4.1.5, 2000-04-12:
2179Add support for large files
2180
2181* Major changes in release 4.1.4, 2000-02-26:
2182bug fixes, more up-to-date languages.
2183
2184* Major changes in release 4.1.3, 2000-01-27:
2185added internationalization and localization.
2186
2187* Major changes in release 4.1.2, 2000-01-18:
2188None.
2189
2190* Major changes in release 4.1.1, 1999-08-8:
2191attempt at successful compilation on many platforms after years of neglect
2192 "--existing" option added to locate "--prunefs" option added to updatedb
2193
2194* Major changes in release 4.1, 1994-11-3:
2195
2196** Distribution renamed to findutils.
2197** updatedb is now a user command, installed in $exec_prefix/bin
2198  instead of $exec_prefix/libexec.
2199** A few problems in Makefiles and testsuite corrected.
2200
2201* Major changes in release 4.0, 1994-11-2:
2202
2203** Documentation:
2204*** Texinfo manual.
2205*** Man page for updatedb.
2206*** Man page for the locate database formats.
2207
2208** find:
2209*** Takes less CPU time on long paths, because it uses chdir to descend
2210   trees, so it does fewer inode lookups.
2211*** Does not get trapped in symbolic link loops when -follow is given.
2212*** Supports "-fstype afs" if you have /afs and /usr/afsws/include
2213   and you configure using the --with-afs option.
2214*** New action -fls FILE; like -ls but writes to FILE.
2215
2216** locate:
2217*** Supports a new database format, which is 8-bit clean and
2218   allows machines with different byte orderings and integer sizes to
2219   share the databases.  The new locate can also detect and read the
2220   old database format automatically.  The new databases are typically
2221   30% or more larger than the old ones (due to allowing all 8 bits in
2222   file names).  Search times are approximately the same, or faster on
2223   some systems.
2224*** Warns if a file name database is more than 8 days old.
2225
2226** updatedb:
2227*** Takes command-line options.
2228
2229** xargs:
2230*** Performance improved 10-20%.
2231*** The EOF string is not used when -0 is given.
2232*** Now has a test suite.  Some minor bugs fixed as a result.
2233
2234* Major changes in release 3.8, 1993-03-29:
2235
2236** case insensitive versions of -lname, -name, -path, -regex:
2237  -ilname, -iname, -ipath, -iregex
2238** %F directive for -printf, -fprintf to print file system type
2239
2240* Major changes in release 3.7:
2241
2242** locate can search multiple databases
2243** locate has an option to specify the database path
2244** updatedb no longer goes into an infinite loop with some versions of tail
2245
2246* No NEWS was kept for earlier releases.  Known release dates include:
2247** release 3.2, 1991-08-28
2248** release 3.1, 1991-08-21
2249** release 3.0, 1991-08-21
2250** release 2.2, 1991-04-05
2251** release 2.1, 1991-01-01
2252** release 2.0, 1990-11-20
2253** release 1.2, 1990-07-03
2254** release 1.1, 1990-06-24
2255** release 1.0, 1990-06-22
2256** beginning of findutils history, 1987-02-21
2257
2258                        --//--
2259This is used by Emacs' spell checker ispell.el:
2260
2261LocalWords: ansi knr strftime xargs updatedb sh fnmatch hin strcpy
2262LocalWords: lib getstr getline frcode bigram texi depcomp automake
2263LocalWords: strncasecmp strcasecmp LIBOBJS FUNC prunefs allout libexec
2264LocalWords: testsuite Texinfo chdir inode fstype afs fls ls EOF lname
2265LocalWords: regex ilname iname ipath iregex printf fprintf
2266
2267Copyright (C) 1996-2021 Free Software Foundation, Inc.
2268
2269Permission is granted to copy, distribute and/or modify this document
2270under the terms of the GNU Free Documentation License, Version 1.3 or
2271any later version published by the Free Software Foundation; with no
2272Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
2273A copy of the license is included in the ``GNU Free Documentation
2274License'' file as part of this distribution.
2275