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