...for consistency with existing practice in findutils man pages.
* xargs/xargs.1: Set "find" (the command) and "-print0" in bold, not roman.
Discussed at:
https://lists.gnu.org/r/bug-findutils/2025-11/msg00094.html
Copyright-paperwork-exempt: Yes
Warnings from `groff -C -ww -man` in the forthcoming groff 1.24:
troff:xargs/xargs.1:295: warning: an escaped '~' is not portable to AT&T troff
troff:xargs/xargs.1:296: warning: an escaped '~' is not portable to AT&T troff
troff:xargs/xargs.1:296: warning: an escaped '~' is not portable to AT&T troff
troff:xargs/xargs.1:298: warning: an escaped '~' is not portable to AT&T troff
groff_man_style(1):
Portability
...
\~ Adjustable non‐breaking space. Use this escape sequence
to prevent a break inside a short phrase or between a
numerical quantity and its corresponding unit(s).
Before starting the motor,
set the output speed to\~1.
There are 1,024\~bytes in 1\~KiB.
CSTR\~#8 documents the B\~language.
\~ is a GNU extension also supported by Heirloom Doctools
troff 050915 (September 2005), mandoc 1.9.14
(2009‐11‐16), neatroff (commit 1c6ab0f6e, 2016‐09‐13),
and Plan 9 from User Space troff (commit 93f8143600,
2022‐08‐12), but not by DWB or Solaris 10 troffs.
* xargs/xargs.1:
Define a string to indirect use of `\~` escape sequence. On formatters
that don't support groff extensions, use the AT&T troff `\ `
(backslash-space) escape sequence, which isn't quite as good because it
is a space that is not only unbreakable, but unadjustable--which,
however, doesn't matter when formatting man pages with adjustment
disabled, as some implementations do (and which groff makes
configurable).
Discussed at:
https://lists.gnu.org/r/bug-findutils/2025-11/msg00094.html
Copyright-paperwork-exempt: Yes
These instances represent hyphen-minus characters, so should be spelled
in man(7) source as `\-`.
* locate/locatedb.5: Do the above.
Discussed at:
https://lists.gnu.org/r/bug-findutils/2025-11/msg00094.html
Copyright-paperwork-exempt: Yes
...not roman, and protect them from hyphenation.
GNU troff, Heirloom Doctools troff, and mandoc all support use of the
`\%` hyphenation control escape sequence at the _beginning_ of a word
suppress its hyphenation. Other troffs do not. Indirect this
application of the escape sequence through a string, interpolating
nothing on formatters that don't advertise GNU compatibility via the
`.g` register. (This means that literals can hyphenate undesirably on
DWB, Solaris, and Plan 9 troffs.)
GNU troff, Heirloom Doctools troff, and mandoc all also support the GNU
`\:` extension to mark break points that should not produce hyphens.
Apply the same technique to avoid undesired formatting of a ':'
character on DWB, Solaris, and Plan 9 troffs.
* find/find.1: Do the above.
Discussed at:
https://lists.gnu.org/r/bug-findutils/2025-11/msg00094.html
Copyright-paperwork-exempt: Yes
The `\(lq` and `\(rq` and special character escape sequences are not
universally portable.
Traditionally, AT&T troff did not bother to identify these special
characters at all; it was apparently felt that adjacently setting
directional single quotes sufficed. You can discern this fact in
materials typeset by AT&T troff by observing what one might call
generous kerning of these glyphs when used as "double" quotes.
However, someone at the Berkeley CSRG had a brainwave, and for 4BSD in
1980, added strings named `lq` and `rq` to the man(7) package so that
man pages could access double quotes by whatever means the underlying
implementation had for realizing them. This excellent idea made it into
Unix System V (1988/9), so that every surviving troff implementation
known to me, including DWB and Solaris 10, supports them--save one. The
exception is Plan 9. Fortunately, the Plan 9 from User Space
("plan9port") project accepted a patch from me on 10 October to add
support there as well.[1]
Like the \*" string, \*(lq and \*(rq should not be used in quoted macro
arguments if one desires portability to AT&T troff-descended formatters
(other than Heirloom Doctools troff); if the implementation defines
these strings such that their interpolations contain `"`, undesired
output is the likely result.
[1] https://github.com/9fans/plan9port/pull/735
* find/find.1: Do the above.
Discussed at:
https://lists.gnu.org/r/bug-findutils/2025-11/msg00094.html
Copyright-paperwork-exempt: Yes
The `\(en` special character escape sequence is not universally
portable. Indirect it through a string definition.
* find/find.1:
* locate/locate.1:
* locate/locatedb.5:
* locate/updatedb.1:
* xargs/xargs.1: Do the above.
Discussed at:
https://lists.gnu.org/r/bug-findutils/2025-11/msg00094.html
Copyright-paperwork-exempt: Yes
An em dash is the more orthographically correct dash for a couple of
contexts where the page had been using an en dash (which denotes a
range), and its special character escape sequence is universally
portable to boot.
* find/find.1: \Replace "(en" by "\(em".
Discussed at:
https://lists.gnu.org/r/bug-findutils/2025-11/msg00094.html
Copyright-paperwork-exempt: Yes
When using ` as the Unix shell's command output substitution operator,
use the portable *roff `\(ga` special character escape sequence to
ensure that we really format a grave accent rather than a typographer's
single quotation mark (‘).
* find/find.1: Do the above.
Discussed at:
https://lists.gnu.org/r/bug-findutils/2025-11/msg00094.html
Copyright-paperwork-exempt: Yes
The `\(dq` special character escape sequence is not universally
portable. Indirect it through a string definition. (GNU Bash also uses
this technique.[1])
Unfortunately, `"` is one of the worst-behaved and least-accessible
characters in AT&T troff; a pleasant Dr. Jekyll when used on text lines,
its Mr. Hyde persona erupts when used in macro calls, and is wholly
unpredictable to non-experts when appearing in request arguments.[2]
_Some_ AT&T troffs offer `\(dq` on _some_ output devices. AT&T troff
also has no mechanism for a document to define its own special character
escape sequences. GNU troff offers `\(dq` on all output devices.
[1] a8a1c2fac0/doc/bash.1 (L26)
[2] "For the (neutral) double quote, you have recourse to an obscure
syntactical feature of AT&T troff. Because a double quote can begin
a macro argument, the formatter keeps track of whether the current
argument was started thus, and doesn’t require a space after the
double quote that ends it. In the argument list to a macro, a
double quote that isn’t preceded by a space doesn’t start a macro
argument. If not preceded by a double quote that began an argument,
this double quote becomes part of the argument. Furthermore, within
a quoted argument, a pair of adjacent double quotes becomes a
literal double quote."
https://www.gnu.org/software/groff/manual/groff.html.node/Calling-Macros.html
* find/find.1: Do the above.
Discussed at:
https://lists.gnu.org/r/bug-findutils/2025-11/msg00094.html
Copyright-paperwork-exempt: Yes
* find/find.1:
- Use paragraphing macros to put vertical space above and below the
tables (where not already present) so that they looks more like
typographical "displays".[1]
- Simplify "XY" table definition (see groff's tbl(1) man page). This
simpler definition has the same result (and is more adaptable in the
event the text of the table is revised).
- Put horizontal rule below column headings in table that uses them.
- Use thin space escape sequences `\|` between the dots of an ellipsis;
the effect is visible only on typesetting devices.[2] I left the
dummy character escape sequence `\&` trailing it intact, but observe
for the edification of nit-pickers that it has no effect in this
context.[3]
[1] man(7) implementations are historically inconsistent with respect to
whether a `TS` macro call should put any vertical space on the
output, and compositional practices on the part of man page authors
have thus been, to quote Ingo Schwarze, "wildly inconsistent".
https://savannah.gnu.org/bugs/?62841
[2] groff_man_style(7):
Examples of ellipsis usage are shown above, in subsection
“Synopsis macros”. The idiomatic roff ellipsis is three dots
(periods) with thin space escape sequences \| internally
separating them.
[3] tbl(1):
Ordinarily, a table entry is typeset rigidly. It is not filled,
broken, hyphenated, adjusted, or populated with supplemental inter‐
sentence space.
Discussed at:
https://lists.gnu.org/r/bug-findutils/2025-11/msg00094.html
Copyright-paperwork-exempt: Yes
The man(7) macro package from AT&T troff and most of its descendants,
including those in DWB, Plan 9, and Solaris troffs, support at most six
arguments to any macro call.
* find/find.1: Quote all multi-word arguments to these macros, not just those
in excess of six arguments, as a reminder of defensive practice to document
maintainers.
Before and after on Plan 9 from User Space troff:
$ diff -b -U0 find-plan9port-[12].txt
--- find-plan9port-1.txt 2025-11-18 20:20:08.388887375 -0600
+++ find-plan9port-2.txt 2025-11-18 20:20:14.712881949 -0600
@@ -2068 +2068 @@
- Safer `find -print0 | xargs -0`
+ Safer `find -print0 | xargs -0` approach
@@ -2129 +2129,2 @@
- Traversing the filesystem just once en
+ Traversing the filesystem just once en for 2 different actions
Discussed at:
https://lists.gnu.org/r/bug-findutils/2025-11/msg00094.html
Copyright-paperwork-exempt: Yes
* locate/locate.1 (HISTORY):
- Use paragraphing macro to put vertical space above the table so that
it looks more like a typographical "display".[1]
- Set table cells that overset the line on AT&T nroff (where the line
length is 65n) using text blocks.
- Issue `na` request in these text blocks to prevent the cell contents
from adjusting in the event the formatter/package/user has configured
man pages to employ adjustment by default. (Practices vary; it's a
long story.[2])
- Remove spaces around the configured tbl(1) tab character of `|`. This
certainly does make the table uglier in source form. Unfortunately,
AT&T tbl(1) takes those spaces deadly seriously and they impact the
computed cell (and therefore column) widths. GNU tbl has for decades
supported a "nospaces" region option to address precisely this
problem; unfortunately it is not portable to DWB 3.3, Plan 9, or
Solaris 10 troffs, and I suspect not to _any_ surviving System V
troff.
Fixes warning from tbl(1) in groff 1.23.0:
locate/locate.1:289: warning: table wider than line length minus indentation
[1] man(7) implementations are historically inconsistent with respect to
whether a `TS` macro call should put any vertical space on the
output, and compositional practices on the part of man page authors
have thus been, to quote Ingo Schwarze, "wildly inconsistent".
https://savannah.gnu.org/bugs/?62841
[2] "Some people do hate adjustment of nroff output, though, which is
why I added a feature to groff man(7) to support disabling it.
The history of this practice is inconsistent. Seventh Edition Unix
(1979) disabled adjustment of man pages when rendering in nroff
mode,[3] and BSD retained that disablement until death. SunOS
commented it as early as SunOS 2.0 (1985), thus restoring adjustment
in nroff mode, and retained that all the way through Solaris 10
(2005). When James Clark wrote groff starting in about 1989, his
man(7) implementation closely emulated SunOS. With the Solaris 11
release in 2010, Oracle discarded its AT&T-descended troff in favor
of the then-current groff release. [That's not quite true--see
below.] They're still on groff 1.22.2 (2013) today, and so they've
been adjusting their man pages in nroff mode for at least 40 years,
as has groff for about 35[]. I don't know what other System V
Unices did."
https://lists.gnu.org/archive/html/groff/2025-05/msg00001.html
(I made an incorrect claim in the foregoing; Solaris 11 still has
its AT&T troff around, but its man page rendering is now performed
by [an old version of] groff.)
Discussed at:
https://lists.gnu.org/r/bug-findutils/2025-11/msg00094.html
Copyright-paperwork-exempt: Yes
* find/find.1:
* locate/locate.1: Use unbreakable spaces between options and their
arguments, potentially improving legibility.
The existing synopses are short enough that they don't break in such a
way as to promote confusion even on old-fashioned AT&T troffs that use a
line length of 65n in nroff mode (vs. groff man(7)'s historical 78n and
present-day 80n). Thus this change merely makes the synopses robust to
future changes.
Discussed at:
https://lists.gnu.org/r/bug-findutils/2025-11/msg00094.html
Copyright-paperwork-exempt: Yes
* find/find.1:
* locate/locate.1: Use `HP` hanging paragraph macro to indent
non-initial lines of synopsis. Temporarily disable adjustment.
An alternative approach would be to use groff man(7)'s `SY` and `YS`
extension macros; each man page would then need to define local versions
for portability to DWB 3.3, Plan 9, and Solaris 10 troffs.
Discussed at:
https://lists.gnu.org/r/bug-findutils/2025-11/msg00094.html
Copyright-paperwork-exempt: Yes
* find/find.1:
* locate/locate.1: Place thin space escape sequences between ellipsis
dots for more pleasant output when typesetting.
Discussed at:
https://lists.gnu.org/r/bug-findutils/2025-11/msg00094.html
Copyright-paperwork-exempt: Yes
* find/find.1:
* locate/locate.1:
* locate/updatedb.1:
* xargs/xargs.1: Favor man(7) font alternation macros over *roff font
escape sequences. When typesetting with groff(1), the macros
automatically apply italic corrections.
* locate/locate.1: Protect long option name literals from hyphenation.
GNU troff, Heirloom Doctools troff, and mandoc all support use of the
`\%` hyphenation control escape sequence at the _beginning_ of a word
suppress its hyphenation. Other troffs do not. Indirect this
application of the escape sequence through a string, interpolating
nothing on formatters that don't advertise GNU compatibility via the
`.g` register. (This means that literals can hyphenate undesirably on
DWB, Solaris, and Plan 9 troffs.)
Discussed at:
https://lists.gnu.org/r/bug-findutils/2025-11/msg00094.html
Copyright-paperwork-exempt: Yes
Before and after, using DWB 3.3 troff (Plan 9 and Solaris 10 troffs are
similar):
$ diff -U0 find.1.dwb-[12].txt|head -n 19
--- find.1.dwb-1.txt 2025-10-13 10:09:17.024054824 -0500
+++ find.1.dwb-2.txt 2025-10-13 10:09:24.764012282 -0500
@@ -2039 +2039 @@
- [bu]
+ o Find files named core in or below the directory /tmp and
@@ -2054 +2053,0 @@
- Find files named core in or below the directory /tmp and
@@ -2064,2 +2063 @@
- [bu]
- Find files named core in or below the directory /tmp and
+ o Find files named core in or below the directory /tmp and
@@ -2080,2 +2078 @@
- [bu]
- Given that another program proggy pre-filters and cre-
+ o Given that another program proggy pre-filters and cre-
@@ -2097,2 +2094 @@
- [bu]
- Run file on every file in or below the current direc-
+ o Run file on every file in or below the current direc-
Further changes in the diff appear because the document now paginates
differently with these troffs. That's because a one-en-wide mark 'o'
(the ASCII representation of a bullet) fits within the 4n space allotted
by the document's `IP` calls, whereas "[bu]" does not.
Fixes warnings from "nroff -C -ww -man" in the forthcoming groff 1.24:
troff:./find/find.1:2260: warning: an escaped '[' is not portable to AT&T troff
troff:./find/find.1:2277: warning: an escaped '[' is not portable to AT&T troff
troff:./find/find.1:2305: warning: an escaped '[' is not portable to AT&T troff
troff:./find/find.1:2326: warning: an escaped '[' is not portable to AT&T troff
troff:./find/find.1:2349: warning: an escaped '[' is not portable to AT&T troff
troff:./find/find.1:2372: warning: an escaped '[' is not portable to AT&T troff
troff:./find/find.1:2392: warning: an escaped '[' is not portable to AT&T troff
troff:./find/find.1:2402: warning: an escaped '[' is not portable to AT&T troff
troff:./find/find.1:2415: warning: an escaped '[' is not portable to AT&T troff
troff:./find/find.1:2431: warning: an escaped '[' is not portable to AT&T troff
troff:./find/find.1:2442: warning: an escaped '[' is not portable to AT&T troff
troff:./find/find.1:2459: warning: an escaped '[' is not portable to AT&T troff
troff:./find/find.1:2471: warning: an escaped '[' is not portable to AT&T troff
troff:./find/find.1:2498: warning: an escaped '[' is not portable to AT&T troff
troff:./find/find.1:2542: warning: an escaped '[' is not portable to AT&T troff
troff:./find/find.1:2597: warning: an escaped '[' is not portable to AT&T troff
troff:./find/find.1:2618: warning: an escaped '[' is not portable to AT&T troff
troff:./find/find.1:2630: warning: an escaped '[' is not portable to AT&T troff
* find/find.1: Replace '\[bu]' by '\(bu'.
Discussed at:
https://lists.gnu.org/r/bug-findutils/2025-11/msg00094.html
Copyright-paperwork-exempt: Yes
* find/find.1:
* xargs/xargs.1: Replace blank lines with empty requests or paragraphing
macro calls as seems to be intended.
* find/find.1: Delete blank lines preceding paragraphing or sectioning
macros that serve only to put excess vertical space in the output.
* locate/locatedb.5: Replace blank lines with a dummy character
producing a blank output line as _might_ be intended.
groff_man_style(7):
? The empty request (.), which does nothing, vertically spaces the
input file for readability by the document maintainer. Do not
put blank (empty) lines in a man page source document. Some
man(1) programs ?squeeze? multiple blank output lines into one.
Fixes style warnings from `groff -rCHECKSTYLE=3 -man`:
an.tmac:/.../share/man/man1/find.1:87: style: blank line in input
...
an.tmac:/.../share/man/man1/xargs.1:231: style: blank line in input
...
an.tmac:/.../share/man/man5/locatedb.5:118: style: blank line in input
...
Discussed at:
https://lists.gnu.org/r/bug-findutils/2025-11/msg00094.html
Copyright-paperwork-exempt: Yes
Style warning from `groff -rCHECKSTYLE=3 -man`:
an.tmac:/.../share/man/man1/find.1:9: style: 1 leading space(s) on input line
* find/find.1 (SYNOPSIS): Make an intended empty request work that way.
Discussed at:
https://lists.gnu.org/r/bug-findutils/2025-11/msg00094.html
Copyright-paperwork-exempt: Yes
Style warnings from `groff -rCHECKSTYLE=3 -man`.
an.tmac:/.../share/man/man1/locate.1:1: style: .TH missing third argument; \
consider document modification date in ISO 8601 format (YYYY-MM-DD)
an.tmac:/.../share/man/man1/locate.1:1: style: .TH missing fourth argument; \
consider package/project name and version (e.g., "groff 1.23.0")
...and similar.
groff_man_style(7):
.TH identifier section [footer‐middle [footer‐inside [header‐
middle]]]
...
By convention, footer‐middle is the date of the most recent
modification to the man page source document, and footer‐
inside is the name and version or release of the project
providing it.
* find/find.1:
* locate/locate.1:
* locate/locatedb.5:
* locate/updatedb.1:
* xargs/xargs.1: Add appropriate third and fourth arguments to `TH` macro calls.
To determine the revision date to include in the page, I used the Git
"AuthorDate" of the last commit consituting anything but a "bump" to the
copyright notice.
Discussed at:
https://lists.gnu.org/r/bug-findutils/2025-11/msg00094.html
Copyright-paperwork-exempt: Yes
Plan 9 and Solaris tbl, like Seventh Edition Unix tbl, do not support
the 'x' column modifier. This extension appeared in DWB tbl by version
3.3 and early in GNU troff development (both circa 1990). I suspect,
but do not know, that other System V Unix tbl programs don't support it
either.
These old tbl programs are brutal when they encounter an unsupported
column modifier--they abort the preprocessor altogether ("tbl quits")
without attempting recovery.[1] Because tbl works as a filter, like
eqn, pic, soelim, or more familiar Unix tools (cat, sed, nl), this means
that tbl truncated the entire remainder of the input at that point. GNU
tbl is more robust, and discards input only until the next `.TE` token.
Due to this rudeness it's impossible to portably use 'x' without
rewriting the page text, and I know of no good way to parameterize a
table format. (tbl(1) doesn't have variables or anything like a macro
preprocessor. *roff strings are no use because tbl is a _pre_processor
for troff.)
To portably use 'x' requires a man page to test the underlying
implementation and potentially rewrite the page prior to installing it.
See a recent patch of mine to ncurses (merged in its 20251115 release)
for an approach potentially adaptable to findutils.
https://lists.gnu.org/archive/html/bug-ncurses/2025-11/msg00035.html
[1] I've proposed a merge request to Plan 9 from User Space to make its
tbl less intolerant. Even if accepted, that won't help anyone who
uses other "legacy" troffs.
https://github.com/9fans/plan9port/pull/739
* find/find.1 (Functional Changes): Drop 'x' table modifier.
Discussed at:
https://lists.gnu.org/r/bug-findutils/2025-11/msg00094.html
Copyright-paperwork-exempt: Yes
Add some more tests exercising bind mounts on the same device which
should not be affected by -mount or -xdev, and tests with a loopback
file system and a bind mount from there.
* tests/find/mount-vs-xdev-bind.sh: Add test.
* tests/find/mount-vs-xdev-other-fs.sh: Likewise.
* tests/local.mk (all_root_tests): Reference them.
* NEWS (Changes in find): Clarify better what is the difference between
the -mount and -xdev options including an example. Also move the
topic to the top of the section due to its importance.
* find/defs.h (struct options): Add mount member and rename
stay_on_filesystem to xdev.
* find/ftsfind.c (find): Set FTS_MOUNT flag when -mount is enabled.
* find/parser.c (parse_table): Use a separate parser for -mount.
(parse_mount): Declare and define function.
(parse_xdev): Use xdev option flag.
* find/util.c (set_option_defaults): Initialize new struct members.
* doc/find.texi (node Filesystems): Add new section describing the new
behaviour of -mount and specify the current behaviour of -xdev.
* find/find.1: Document the new -mount behaviour and specify current
behaviour of -xdev.
* NEWS (Changes in find): Mention the -mount behaviour change.
Run 'make update-copyright'.
* lib/regexprops.c (copying): Update the year number manually.
* tests/sample-test: Adjust to use the single most recent year.
* All other files: Update copyright years via the above make run.
Run 'make update-gnulib-to-latest'; there have been 135 commits on gnulib
since the last update.
This is mainly for the following change making sc_copyright_check pass
again, but there are also other useful fixes and improvements:
> maint: run 'make update-copyright'
* gnulib: Update to latest.
* autogen.sh: Likewise.
* autopull.sh: Likewise.
* bootstrap: Likewise.
* bootstrap-funclib.sh: Likewise.
From a suggestion by G. Branden Robinson to use `groff -t -z -ww
-rCHECKSTYLE=2 -man`, by pointing to and example in
https://lists.gnu.org/archive/html/bug-findutils/2025-11/msg00004.html.
* configure.ac: discover the location of the groff binary.
* build-aux/man-lint.sh: also run groff with -rCHECKSTYLE=2. Use
groff at the path discovered during configuration.
* find/Makefile.am: Lint-check manpages during "make check",
not "make dist". Set the environment variable GROFF to the
location of the groff binary.
* locate/Makefile.am: Likewise.
* xargs/Makefile.am: Likewise.
Without this fix, we get this error from `groff -C -t -z -ww
-rCHECKSTYLE=2 -man find/find.1`:
troff: find/find.1:2255: warning: macro '."' not defined
troff: find/find.1:2255: warning: number register '[' not defined
* find/find.1: revert a change which caused a lint warning from
troff.
Prompted by the following bootstrap notice:
Notice from module ctype:
This module is deprecated. Use the module 'ctype-h' instead.
* bootstrap.conf (gnulib_modules): ctype -> ctype-h
Run 'make update-gnulib-to-latest'; there have been 450 commits on gnulib
since the last update.
This pulls in the new FTS_MOUNT flag needed for the upcoming changes
to -mount vs. -xdev mandated by POSIX Issue 8 (IEEE Std 1003.1-2024),
thanks to Lukáš Zaoral <lzaoral@redhat.com>:
> fts: Introduce the FTS_MOUNT flag.
* gnulib: Update to latest.
* bootstrap-funclib.sh: Likewise.
Avoid macro preprocessing when filling the parse_table for better
readability.
* find/parser.c (PASTE, PARSE_OPTION, PARSE_POSOPT, PARSE_TEST,
PARSE_TEST_NP, PARSE_ACTION, PARSE_PUNCTUATION): Remove macros.
(parse_table): Replace macro-based filling with regular structure entries.
Group entries by types: regular options, positional options, punctuation,
tests and actions; loosely sort within each group.
Remove duplicate "atime" entry introduced in commit 7102a229fa.
While at it, change -help and -version from ARG_TEST to ARG_OPTION.
As reported in <https://savannah.gnu.org/bugs/?67432>, it is easy to
confuse -0 with -O. Give a hint to translators.
* xargs/xargs.c (main): Add TRANSLATORS hints.
* bootstrap.conf (gnulib_modules): Add nullptr.
In code, prefer nullptr to NULL where either will do.
* cfg.mk (sc_prohibit_NULL): Direct to use nullptr instead.
(begword, endword): Add regex helper macros.
Use standard input instead of stdin, standard output instead of stdout,
and standard error instead of stderr in messages and documentation.
Inspired by coreutils commit:
https://cgit.git.sv.gnu.org/cgit/coreutils.git/commit/?id=c9a30d6781
* cfg.mk (sc_standard_outputs): Add syntax-check rule.
* doc/find.texi: Do the above.
* find/find.1: Likewise.
* locate/locate.1: Likewise.
* locate/locate.c: Likewise.
* xargs/xargs.1: Likewise.
* xargs/xargs.c: Likewise.