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