Package: findutils
Version: upstream (git)
Severity: minor
Tags: patch

   * What led up to the situation?

     Checking for defects with a new version

test-[g|n]roff -mandoc -t -K utf8 -rF0 -rHY=0 -rCHECKSTYLE=10 -ww -z < "man 
page"

  [Use "groff -e ' $' -e '\\~$' <file>" to find obvious trailing spaces.]

  ["test-groff" is a script in the repository for "groff"; is not shipped]
(local copy and "troff" slightly changed by me).

  [The fate of "test-nroff" was decided in groff bug #55941.]

   * What was the outcome of this action?

an.tmac:<stdin>:2: style: .TH missing third argument; consider document 
modification date in ISO 8601 format (YYYY-MM-DD)
an.tmac:<stdin>:2: style: .TH missing fourth argument; consider package/project 
name and version (e.g., "groff 1.23.0")


   * What outcome did you expect instead?

     No output (no warnings).

-.-

  General remarks and further material, if a diff-file exist, are in the
attachments.


-- System Information:
Debian Release: trixie/sid
  APT prefers testing
  APT policy: (500, 'testing')
Architecture: amd64 (x86_64)

Kernel: Linux 6.12.12-amd64 (SMP w/2 CPU threads; PREEMPT)
Locale: LANG=is_IS.iso88591, LC_CTYPE=is_IS.iso88591 (charmap=ISO-8859-1), 
LANGUAGE not set
Shell: /bin/sh linked to /usr/bin/dash
Init: sysvinit (via /sbin/init)

Versions of packages findutils depends on:
ii  libc6        2.40-7
ii  libselinux1  3.8-4

findutils recommends no packages.

findutils suggests no packages.

-- no debconf information
Input file is find.1

Output from "mandoc -T lint  find.1": (shortened list)


      1 input text line longer than 80 bytes: Some of the conversi...
      1 missing date, using "": TH
      1 unterminated quoted argument

-.-.

Output from "test-nroff -mandoc -t -ww -z find.1": (shortened list)


      1         Use macro '.B' for one argument or split argument.
      1         Use macro '.I' for one argument or split argument.
      1 .BR is for at least 2 arguments, got 1
      1 .IR is for at least 2 arguments, got 1

-.-.


Change a HYPHEN-MINUS (code 0x2D) to a minus(-dash) (\-),
if it
is in front of a name for an option,
is a symbol for standard input,
is a single character used to indicate an option,
or is in the NAME section (man-pages(7)).
N.B. - (0x2D), processed as a UTF-8 file, is changed to a hyphen
(0x2010, groff \[u2010] or \[hy]) in the output.

73:until an expression argument comes (which also starts with a `-').
74:Now, if a path argument would start with a `-', then
875:An exception to this is when using only a slash as \fIpattern\fR (`-name 
/'),
878:A warning is issued if you try to pass a pattern containing a - but not
879:consisting solely of one - slash, unless the environment variable
1095:The + and - prefixes signify greater than and less than, as usual;
1832:find / -name needle -print -quit
2252:.SS Safer `find -print0 | xargs -0` approach
2324:.SS Traversing the filesystem just once - for 2 different actions
2473:Pruning - omitting files and subdirectories
2590:.B $ find / -name needle -print -quit
2607:.B $ find . .. / /tmp /tmp/TRACE compile compile/64/tests/find -maxdepth 0 
-printf '[%h][%f]\en'
2654:.B find -print0
2656:.B xargs -0
2743:find: possible unquoted pattern after predicate `-name'?

-.-.

Add a "\&" (or a comma (Oxford comma)) after "e.g." and "i.e.",
or use English words
(man-pages(7)).
Abbreviation points should be marked as such and protected against being
interpreted as an end of sentence, if they are not, and that independent
of the current place on the line.

546:and e.g. from a pipe.
565:The processing of the starting points is otherwise as usual, e.g.

-.-.

Wrong distance (not two spaces) between sentences in the input file.

  Separate the sentences and subordinate clauses; each begins on a new
line.  See man-pages(7) ("Conventions for source file layout") and
"info groff" ("Input Conventions").

  The best procedure is to always start a new sentence on a new line,
at least, if you are typing on a computer.

Remember coding: Only one command ("sentence") on each (logical) line.

E-mail: Easier to quote exactly the relevant lines.

Generally: Easier to edit the sentence.

Patches: Less unaffected text.

Search for two adjacent words is easier, when they belong to the same line,
and the same phrase.

  The amount of space between sentences in the output can then be
controlled with the ".ss" request.

Mark a final abbreviation point as such by suffixing it with "\&".

Some sentences (etc.) do not begin on a new line.

Split (sometimes) lines after a punctuation mark; before a conjunction.

  Lines with only one (or two) space(s) between sentences could be split,
so latter sentences begin on a new line.

Use

#!/usr/bin/sh

sed -e '/^\./n' \
-e 's/\([[:alpha:]]\)\.  */\1.\n/g' $1

to split lines after a sentence period.
Check result with the difference between the formatted outputs.
See also the attachment "general.bugs"

[List of affected lines removed.]

-.-.

Split lines longer than 80 characters into two or more lines.
Appropriate break points are the end of a sentence and a subordinate
clause; after punctuation marks.
Add "\:" to split the string for the output, "\<newline>" in the source.  

Line 1546, length 86

Some of the conversion specification characters might not be available on all 
systems,

Line 2487, length 82

.B $ find . \-name .snapshot \-prune \-o \e( \e! \-name \(aq*~\(aq \-print0 \e) 
\e

Line 2607, length 96

.B $ find . .. / /tmp /tmp/TRACE compile compile/64/tests/find -maxdepth 0 
-printf '[%h][%f]\en'

Line 2645, length 87

.I A Research UNIX Reader: Annotated Excerpts from the Programmer’s Manual, 
1971-1986


-.-.

Use \(en (en-dash) for a dash at the beginning (end) of a line,
or between space characters,
not a minus (\-) or a hyphen (-), except in the NAME section.

find.1:2324:.SS Traversing the filesystem just once - for 2 different actions
find.1:2473:Pruning - omitting files and subdirectories

-.-.

Remove reverse slash (\) in front of a period (.) that is to be printed
as such, and can not come a control character in the first column of a line.
Use "\&" to protect the period to avoid that.
This is a sign, that the man page was transformed from another source
file with a program, whose name is NOT mentioned in a comment.

2715:\.B \-perm +MODE
2717:\.B \-perm

-.-.

Split a punctuation mark from a single argument for a two-font macro

1048:.IR ./fubar3,

-.-.

Put a parenthetical sentence, phrase on a separate line,
if not part of a code.
See man-pages(7), item "semantic newline".

[List of affected lines removed.]

-.-.

One space only after an end of sentence.

find.1:339:no error message will be issued. This is the reason why such 
operation
find.1:546:and e.g. from a pipe.
find.1:960:find . \-path \(dq./sr*sc\(dq
find.1:1797:find . \-path ./src/emacs \-prune \-o \-print
find.1:1896:.B find . \-name afile \-o \-name bfile \-print
find.1:2309:.B $ find . \-type f \-exec file \(aq{}\(aq \e;
find.1:2384:.B $ find . \-perm 664
find.1:2399:.B $ find . \-perm \-664
find.1:2413:.B $ find . \-perm /222
find.1:2423:.B $ find . \-perm /220
find.1:2424:.B $ find . \-perm /u+w,g+w
find.1:2425:.B $ find . \-perm /u=w,g=w
find.1:2440:.B $ find . \-perm \-220
find.1:2441:.B $ find . \-perm \-g+w,u+w
find.1:2452:.B $ find . \-perm \-444 \-perm /222 \e! \-perm /111
find.1:2453:.B $ find . \-perm \-a+r \-perm /a+w \e! \-perm /a+x
find.1:2467:.RB ( "! \-perm /111"
find.1:2469:.B ! \-perm /a+x
find.1:2487:.B $ find . \-name .snapshot \-prune \-o \e( \e! \-name \(aq*~\(aq 
\-print0 \e) \e
find.1:2607:.B $ find . .. / /tmp /tmp/TRACE compile compile/64/tests/find 
-maxdepth 0 -printf '[%h][%f]\en'
find.1:2727:.B find . \-name afile \-o \-name bfile \-print
find.1:2731:.BR "find . \-name afile \-o \e( \-name bfile \-a \-print \e)" .
find.1:2741:.B $ find . \-name *.c \-print
find.1:2754:.B find . \-name frcode.c locate.c word_io.c \-print
find.1:2766:.B $ find . \-name \(aq*.c\(aq \-print
find.1:2767:.B $ find . \-name \e*.c \-print

-.-.

Put a subordinate sentence (after a comma) on a new line.

[List of affected lines removed.]


-.-.

Remove quotes when there is a printable
but no space character between them
and the quotes are not for emphasis (markup),
for example as an argument to a macro.

find.1:638:.IP "\-noleaf"
find.1:1154:.IP "\-writable"
find.1:1196:.IP "\-delete\fR"
find.1:1802:.IP "\-quit"
find.1:2233:.SH "EXAMPLES"
find.1:2638:.SH "HISTORY"
find.1:2659:.SH "COMPATIBILITY"
find.1:2724:.SH "NON-BUGS"
find.1:2770:.SH "BUGS"

-.-.

Section headings (.SH and .SS) do not need quoting their arguments.

1968:.SH "STANDARDS CONFORMANCE"
2120:.SH "ENVIRONMENT VARIABLES"
2233:.SH "EXAMPLES"
2638:.SH "HISTORY"
2659:.SH "COMPATIBILITY"
2724:.SH "NON-BUGS"
2770:.SH "BUGS"
2788:.SH "REPORTING BUGS"
2811:.SH "SEE ALSO"

-.-.

Space after an end of sentence.

temp.table:25:\-exec ... +      4.2.12  POSIX

-.-.

Output from "test-groff  -mandoc -t -K utf8 -rF0 -rHY=0 -rCHECKSTYLE=10 -ww -z 
":

an.tmac:<stdin>:2: style: .TH missing third argument; consider document 
modification date in ISO 8601 format (YYYY-MM-DD)
an.tmac:<stdin>:2: style: .TH missing fourth argument; consider package/project 
name and version (e.g., "groff 1.23.0")
an.tmac:<stdin>:690: misuse, warning: .BR is for at least 2 arguments, got 1
        Use macro '.B' for one argument or split argument.
an.tmac:<stdin>:1048: misuse, warning: .IR is for at least 2 arguments, got 1
        Use macro '.I' for one argument or split argument.

-.-.

Additionally:

  Change "1\ KB" to "1\ KiB"

  Change indent "4m" to "4n".  "4m" is too wide in troff-mode.

  Inhibit hyphenation of "strftime" once (based on an A4 page size).

  Create a "space" between some tags and the its following text by adding
" \&" to the tag.

  Decrease indent after a bullet in lists.

Generally:

Split (sometimes) lines after a punctuation mark; before a conjunction.
--- find.1      2025-03-07 20:55:57.739825277 +0000
+++ find.1.new  2025-03-08 13:48:25.945936075 +0000
@@ -4,8 +4,9 @@
 find \- search for files in a directory hierarchy
 .SH SYNOPSIS
 .B find
-[\-H] [\-L] [\-P] [\-D debugopts] [\-Olevel] [starting-point...\&] [expression]
-.
+[\-H] [\-L] [\-P] [\-D debugopts] [\-O\fIlevel\fP] [starting-point...\&] \
+[expression]
+ .
 .SH DESCRIPTION
 This manual page
 documents the GNU version of
@@ -70,8 +71,8 @@ could theoretically be used to signal th
 are not options, but this does not really work due to the way
 .B find
 determines the end of the following path arguments: it does that by reading
-until an expression argument comes (which also starts with a `-').
-Now, if a path argument would start with a `-', then
+until an expression argument comes (which also starts with a `\-').
+Now, if a path argument would start with a `\-', then
 .B find
 would treat it as expression argument instead.
 Thus, to ensure that all start points are taken as such, and especially to
@@ -259,7 +260,7 @@ Enable all of the other debug options (b
 .IP help
 Explain the debugging options.
 .RE
-.IP \-Olevel
+.IP "\-O\fIlevel\fP \&"
 Enables query optimisation.
 The
 .B find
@@ -336,8 +337,10 @@ predicates are sensitive to re-ordering.
 an error message will be issued for unreadable directories.  If they
 are run in the order
 .B \-readable \-empty
-no error message will be issued. This is the reason why such operation
-re-ordering is not performed at the default optimisation level.
+no error message will be issued.
+This is the reason
+why such operation re-ordering is not performed at the default
+optimisation level.
 .
 .SH EXPRESSION
 The part of the command line after the list of starting points is the
@@ -431,7 +434,7 @@ and
 from the beginning of today rather than from 24 hours ago.  This
 option only affects tests which appear later on the command line.
 
-.IP \-follow
+.IP "\-follow \&"
 Deprecated; use the
 .B \-L
 option instead.  Dereference symbolic links.
@@ -543,7 +546,7 @@ The \fIfile\fR argument is mandatory.
 One can use
 .B \-files0\-from\ \-
 to read the list of starting points from the \fIstandard input\fR stream,
-and e.g. from a pipe.
+and e.g.\& from a pipe.
 In this case, the actions
 .B \-ok
 and
@@ -562,7 +565,7 @@ arguments.
 This is unlike the standard invocation where \fBfind\fR assumes the current
 directory as starting point if no path argument is passed.
 
-The processing of the starting points is otherwise as usual, e.g.
+The processing of the starting points is otherwise as usual, e.g.\&
 .B find
 will recurse into subdirectories unless otherwise prevented.
 To process only the starting points, one can additionally pass
@@ -635,7 +638,7 @@ for compatibility with some other versio
 Turns off the effect of
 .BR \-ignore_readdir_race .
 
-.IP "\-noleaf"
+.IP "\-noleaf \&"
 Do not optimize by assuming that directories contain 2 fewer
 subdirectories than their hard link count.  This option is needed when
 searching filesystems that do not follow the Unix directory-link
@@ -687,7 +690,7 @@ A numeric argument \fIn\fR can be specif
 .BR \-inum ,
 .BR \-links ,
 .BR \-size ,
-.BR \-uid
+.B \-uid
 and
 .BR \-used )
 as
@@ -704,7 +707,7 @@ for exactly
 .P
 Supported tests:
 
-.IP "\-amin \fIn\fR"
+.IP "\-amin \fIn\fR \&"
 File was last accessed less than, more than or exactly \fIn\fR minutes ago.
 
 .IP "\-anewer \fIreference\fR"
@@ -730,7 +733,7 @@ a file has to have been accessed at leas
 .I two
 days ago.
 
-.IP "\-cmin \fIn\fR"
+.IP "\-cmin \fIn\fR \&"
 File's status was last changed less than, more than or exactly \fIn\fR minutes
 ago.
 
@@ -814,7 +817,7 @@ patterns `fo*' and `F??' match the file
 `fOo', etc.
 The pattern `*foo*` will also match a file called '.foobar'.
 
-.IP "\-inum \fIn\fR"
+.IP "\-inum \fIn\fR \&"
 File has inode number smaller than, greater than or exactly
 .IR n .
 It is normally easier to use the
@@ -849,7 +852,7 @@ option or the
 option is in effect, this test returns false unless the symbolic link
 is broken.
 
-.IP "\-mmin \fIn\fR"
+.IP "\-mmin \fIn\fR \&"
 File's data was last modified less than, more than or exactly \fIn\fR minutes
 ago.
 
@@ -872,11 +875,11 @@ should not include a slash, because `\-n
 (and you probably want to use
 .B \-path
 instead).
-An exception to this is when using only a slash as \fIpattern\fR (`-name /'),
+An exception to this is when using only a slash as \fIpattern\fR (`\-name /'),
 because that is a valid string for matching the root directory "/" (because the
 base name of "/" is "/").
-A warning is issued if you try to pass a pattern containing a - but not
-consisting solely of one - slash, unless the environment variable
+A warning is issued if you try to pass a pattern containing a \- but not
+consisting solely of one \- slash, unless the environment variable
 .B POSIXLY_CORRECT
 is set or the option
 .B \-nowarn
@@ -955,9 +958,9 @@ File name matches shell pattern
 .IR pattern .
 The metacharacters do not treat `/' or `.\&' specially;
 so, for example,
-.in +4m
+.in +4n
 .nf
-find . \-path \(dq./sr*sc\(dq
+find .\& \-path \(dq./sr*sc\(dq
 .fi
 .in
 will print an entry for a directory called
@@ -972,7 +975,7 @@ would only make sense to use an absolute
 relevant start point is also an absolute path.  This means that this
 command will never match anything:
 .br
-.in +4m
+.in +4n
 .nf
 find bar \-path /foo/bar/myfile \-print
 .fi
@@ -1045,7 +1048,7 @@ File name matches regular expression
 .IR pattern .
 This is a match on the whole path, not a search.
 For example, to match a file named
-.IR ./fubar3,
+.IR ./fubar3 ,
 you can use the regular expression `.*bar.\&' or `.*b.*3',
 but not `f.*r3'.
 The regular expressions understood by
@@ -1092,7 +1095,7 @@ differently.  The `b' suffix always deno
 1024-byte blocks, which is different to the behaviour of
 .BR \-ls .
 .IP
-The + and - prefixes signify greater than and less than, as usual;
+The + and \- prefixes signify greater than and less than, as usual;
 i.e., an exact size of \fIn\fR units does not match.
 Bear in mind that the size is rounded up to the next unit.
 Therefore
@@ -1104,7 +1107,7 @@ The former only matches empty files, the
 .IP \-true
 Always true.
 
-.IP "\-type \fIc\fR"
+.IP "\-type \fIc\fR \&"
 File is of type
 .IR c :
 .RS
@@ -1140,7 +1143,7 @@ type letters separated by a comma `,' (G
 File's numeric user ID is less than, more than or exactly
 .IR n .
 
-.IP "\-used \fIn\fR"
+.IP "\-used \fIn\fR \&"
 File was last accessed less than, more than or exactly \fIn\fR days after its
 status was last changed.
 
@@ -1151,7 +1154,7 @@ File is owned by user \fIuname\fR (numer
 See \-path.  This alternative is less portable than
 .BR \-path .
 
-.IP "\-writable"
+.IP \-writable
 Matches files which are writable by the current user.  This takes into
 account access control lists and other permissions artefacts which the
 .B \-perm
@@ -1193,7 +1196,7 @@ will behave the same as
 .IR pattern .
 
 .SS ACTIONS
-.IP "\-delete\fR"
+.IP "\-delete \&"
 Delete files or directories; true if removal succeeded.
 If the removal failed, an error message is issued and
 .BR find 's
@@ -1410,7 +1413,7 @@ section for information about how unusua
 True; list current file in
 .B ls \-dils
 format on standard output.
-The block counts are of 1\ KB blocks, unless the environment variable
+The block counts are of 1\ KiB blocks, unless the environment variable
 .B POSIXLY_CORRECT
 is set, in which case 512-byte blocks are used.
 See the
@@ -1476,7 +1479,7 @@ See the
 .B UNUSUAL FILENAMES
 section for information about how unusual characters in filenames are handled.
 
-.IP \-print0
+.IP "\-print0 \&"
 True; print the full file name on the standard output, followed by a
 null character (instead of the newline character that
 .B \-print
@@ -1543,7 +1546,8 @@ The following shows an incomplete list o
 Please refer to the documentation of
 .BR strftime (3)
 for the full list.
-Some of the conversion specification characters might not be available on all 
systems,
+Some of the conversion specification characters might not be available on
+all systems,
 due to differences in the implementation of the
 .BR strftime (3)
 library function.
@@ -1677,7 +1681,7 @@ Starting-point under which file was foun
 .IP %i
 File's inode number (in decimal).
 .IP %k
-The amount of disk space used for this file in 1\ KB blocks.
+The amount of disk space used for this file in 1\ KiB blocks.
 Since disk space is allocated in multiples of the filesystem block
 size this is usually greater than %s/1024,
 but it can also be smaller if the file is a sparse file.
@@ -1792,14 +1796,14 @@ For example, to skip the directory
 .I src/emacs
 and all files and directories under it, and print the names of the other files
 found, do something like this:
-.in +4m
+.in +4n
 .nf
-find . \-path ./src/emacs \-prune \-o \-print
+find .\& \-path ./src/emacs \-prune \-o \-print
 .fi
 .in
 
 
-.IP "\-quit"
+.IP \-quit
 Exit immediately (with return value zero if no errors have occurred).
 This is different to
 .B \-prune
@@ -1827,9 +1831,9 @@ One common use of
 is to stop searching the file system once we have
 found what we want.  For example, if we want to find just a single
 file we can do this:
-.in +4m
+.in +4n
 .nf
-find / -name needle -print -quit
+find / \-name needle \-print \-quit
 .fi
 .in
 
@@ -1893,7 +1897,7 @@ an explicit operator between them) or ex
 than
 .BR \-o .
 This means that
-.B find . \-name afile \-o \-name bfile \-print
+.B find .\& \-name afile \-o \-name bfile \-print
 will never print
 .IR afile .
 .
@@ -1965,7 +1969,7 @@ and
 .B \-okdir
 actions print the current filename as-is.  This may change in a future release.
 .
-.SH "STANDARDS CONFORMANCE"
+.SH STANDARDS CONFORMANCE
 For closest compliance to the POSIX standard, you should set the
 .B POSIXLY_CORRECT
 environment variable.
@@ -2117,7 +2121,7 @@ or
 .B \-iregex
 tests because those tests aren't specified in the POSIX standard.
 .
-.SH "ENVIRONMENT VARIABLES"
+.SH ENVIRONMENT VARIABLES
 
 .IP LANG
 Provides a default value for the internationalization variables that
@@ -2172,7 +2176,7 @@ the response to the prompt made by the
 .B \-ok
 action.
 
-.IP NLSPATH
+.IP "NLSPATH \&"
 Determines the location of the internationalisation message catalogues.
 
 .IP PATH
@@ -2230,10 +2234,15 @@ directives of
 and
 .BR \-fprintf .
 .
-.SH "EXAMPLES"
+.SH EXAMPLES
 .\" A bulleted \[bu] list of examples.
 .SS Simple `find|xargs` approach
-.IP \[bu]
+.\.".nr margin_n \n[an-margin]u/1n
+.\"an-margin is \n[margin_n]n
+.\".nr prev-indent_n \n[an-prevailing-indent]u/1n
+.\"an-prevailing-indent] is \n[prev-indent_n]n
+.\".br
+.IP \[bu] 4n
 Find files named
 .I core
 in or below the directory
@@ -2241,7 +2250,7 @@ in or below the directory
 and delete them.
 .nf
 \&
-.in +4m
+.in +4n
 .B $ find /tmp \-name core \-type f \-print | xargs /bin/rm \-f
 .in
 \&
@@ -2249,15 +2258,15 @@ and delete them.
 Note that this will work incorrectly if there are
 any filenames containing newlines, single or double quotes, or spaces.
 .
-.SS Safer `find -print0 | xargs -0` approach
-.IP \[bu]
+.SS Safer `find \-print0 | xargs \-0` approach
+.IP \[bu] 4n
 Find files named \fIcore\fP in or below the directory \fI/tmp\fP
 and delete them, processing filenames in such a way that file or
 directory names containing single or double quotes, spaces or newlines
 are correctly handled.
 .nf
 \&
-.in +4m
+.in +4n
 .B $ find /tmp \-name core \-type f \-print0 | xargs \-0 /bin/rm \-f
 .in
 \&
@@ -2278,13 +2287,13 @@ process executed by
 works with that file.
 .
 .SS Processing arbitrary starting points
-.IP \[bu]
+.IP \[bu] 4n
 Given that another program \fIproggy\fR pre-filters and creates a huge
 NUL-separated list of files, process those as starting points, and find
 all regular, empty files among them:
 .nf
 \&
-.in +4m
+.in +4n
 .B $ proggy | find \-files0\-from \- \-maxdepth 0 \-type f \-empty
 .in
 \&
@@ -2299,14 +2308,14 @@ into directories (in the case one of the
 .
 .SS
 Executing a command for each file
-.IP \[bu]
+.IP \[bu] 4n
 Run
 .I file
 on every file in or below the current directory.
 .nf
 \&
-.in +4m
-.B $ find . \-type f \-exec file \(aq{}\(aq \e;
+.in +4n
+.B $ find .\& \-type f \-exec file \(aq{}\(aq \e;
 .in
 \&
 .fi
@@ -2321,8 +2330,8 @@ or better the
 .B `\-execdir\ \&...\&\ +`
 syntax for performance and security reasons.
 .
-.SS Traversing the filesystem just once - for 2 different actions
-.IP \[bu]
+.SS Traversing the filesystem just once \(en for 2 different actions
+.IP \[bu] 4n
 Traverse the filesystem just once, listing set-user-ID files and
 directories into
 .I /root/suid.txt
@@ -2330,14 +2339,14 @@ and large files into
 .IR /root/big.txt .
 .nf
 \&
-.in +4m
+.in +4n
 .B $ find / \e
-.in +4m
+.in +4n
 .B \e( \-perm \-4000 \-fprintf /root/suid.txt \(aq%#m %u %p\en\(aq \e) , \e
 .br
 .B \e( \-size +100M \-fprintf /root/big.txt  \(aq%\-10s %p\en\(aq \e)
-.in -4m
-.in -4m
+.in -4n
+.in -4n
 \&
 .fi
 This example uses the line-continuation character \(aq\e\(aq on the first two
@@ -2345,12 +2354,12 @@ lines to instruct the shell to continue
 .
 .SS
 Searching files by age
-.IP \[bu]
+.IP \[bu] 4n
 Search for files in your home directory which have been modified in
 the last twenty-four hours.
 .nf
 \&
-.in +4m
+.in +4n
 .B $ find $HOME  \-mtime 0
 .in
 \&
@@ -2365,23 +2374,23 @@ a file will have to have a modification
 .
 .SS
 Searching files by permissions
-.IP \[bu]
+.IP \[bu] 4n
 Search for files which are executable but not readable.
 .nf
 \&
-.in +4m
+.in +4n
 .B $ find /sbin /usr/sbin \-executable \e! \-readable \-print
 .in
 \&
 .fi
 .
-.IP \[bu]
+.IP \[bu] 4n
 Search for files which have read and write permission for their owner,
 and group, but which other users can read but not write to.
 .nf
 \&
-.in +4m
-.B $ find . \-perm 664
+.in +4n
+.B $ find .\& \-perm 664
 .in
 \&
 .fi
@@ -2395,8 +2404,8 @@ presence of any extra permission bits (f
 bit).
 .nf
 \&
-.in +4m
-.B $ find . \-perm \-664
+.in +4n
+.B $ find .\& \-perm \-664
 .in
 \&
 .fi
@@ -2409,8 +2418,8 @@ Search for files which are writable by s
 their group, or anybody else).
 .nf
 \&
-.in +4m
-.B $ find . \-perm /222
+.in +4n
+.B $ find .\& \-perm /222
 .in
 \&
 .fi
@@ -2419,10 +2428,10 @@ their group, or anybody else).
 Search for files which are writable by either their owner or their group.
 .nf
 \&
-.in +4m
-.B $ find . \-perm /220
-.B $ find . \-perm /u+w,g+w
-.B $ find . \-perm /u=w,g=w
+.in +4n
+.B $ find .\& \-perm /220
+.B $ find .\& \-perm /u+w,g+w
+.B $ find .\& \-perm /u=w,g=w
 .in
 \&
 .fi
@@ -2436,9 +2445,9 @@ either will do.
 Search for files which are writable by both their owner and their group.
 .nf
 \&
-.in +4m
-.B $ find . \-perm \-220
-.B $ find . \-perm \-g+w,u+w
+.in +4n
+.B $ find .\& \-perm \-220
+.B $ find .\& \-perm \-g+w,u+w
 .in
 \&
 .fi
@@ -2448,9 +2457,9 @@ Both these commands do the same thing.
 A more elaborate search on permissions.
 .nf
 \&
-.in +4m
-.B $ find . \-perm \-444 \-perm /222 \e! \-perm /111
-.B $ find . \-perm \-a+r \-perm /a+w \e! \-perm /a+x
+.in +4n
+.B $ find .\& \-perm \-444 \-perm /222 \e! \-perm /111
+.B $ find .\& \-perm \-a+r \-perm /a+w \e! \-perm /a+x
 .in
 \&
 .fi
@@ -2464,14 +2473,14 @@ set
 or
 .BR "\-perm /a+w" )
 but are not executable for anybody
-.RB ( "! \-perm /111"
+.RB ( "!\& \-perm /111"
 or
-.B ! \-perm /a+x
+.B !\& \-perm /a+x
 respectively).
 .
 .SS
-Pruning - omitting files and subdirectories
-.IP \[bu]
+Pruning \(en omitting files and subdirectories
+.IP \[bu] 4n
 Copy the contents of
 .I /source-dir
 to
@@ -2482,14 +2491,14 @@ but omit files and directories named
 `\(ti', but not their contents.
 .nf
 \&
-.in +4m
+.in +4n
 .B $ cd /source-dir
-.B $ find . \-name .snapshot \-prune \-o \e( \e! \-name \(aq*~\(aq \-print0 
\e) \e
+.B $ find .\& \-name .snapshot \-prune \-o \e( \e! \-name \(aq*~\(aq \-print0 
\e) \e
 .br
-.in +4m
+.in +4n
 .B | cpio \-pmd0  /dest-dir
-.in -4m
-.in -4m
+.in -4n
+.in -4n
 \&
 .fi
 The construct
@@ -2515,27 +2524,27 @@ binds more tightly than
 this is the default anyway, but the parentheses help to show
 what is going on.
 .
-.IP \[bu]
+.IP \[bu] 4n
 Given the following directory of projects and their associated SCM
 administrative directories, perform an efficient search for the
 projects' roots:
 .nf
 \&
-.in +4m
+.in +4n
 .B $ find repo/ \e
-.in +4m
+.in +4n
 .B \e( \-exec test \-d \(aq{}/.svn\(aq \e; \e
 .B \-or \-exec test \-d \(aq{}/.git\(aq \e; \e
 .B \-or \-exec test \-d \(aq{}/CVS\(aq \e; \e
 .B \e) \-print \-prune
-.in -4m
-.in -4m
+.in -4n
+.in -4n
 \&
 .fi
 Sample output:
 .nf
 \&
-.in +4m
+.in +4n
 .B repo/project1/CVS
 .B repo/gnu/project2/.svn
 .B repo/gnu/project3/.svn
@@ -2559,11 +2568,11 @@ are found.
 .
 .SS
 Other useful examples
-.IP \[bu]
+.IP \[bu] 4n
 Search for several file types.
 .nf
 \&
-.in +4m
+.in +4n
 .B $ find /tmp \-type f,d,l
 .in
 \&
@@ -2574,25 +2583,25 @@ passing these types as a comma-separated
 which is otherwise equivalent to the longer, yet more portable:
 .nf
 \&
-.in +4m
+.in +4n
 .B $ find /tmp \e( \-type f \-o \-type d \-o \-type l \e)
 .in
 \&
 .fi
 .
-.IP \[bu]
+.IP \[bu] 4n
 Search for files with the particular name
 .I needle
 and stop immediately when we find the first one.
 .nf
 \&
-.in +4m
-.B $ find / -name needle -print -quit
+.in +4n
+.B $ find / \-name needle \-print \-quit
 .in
 \&
 .fi
 .
-.IP \[bu]
+.IP \[bu] 4n
 Demonstrate the interpretation of the
 .B %f
 and
@@ -2603,8 +2612,9 @@ action for some corner-cases.
 Here is an example including some output.
 .nf
 \&
-.in +4m
-.B $ find . .. / /tmp /tmp/TRACE compile compile/64/tests/find -maxdepth 0 
-printf '[%h][%f]\en'
+.in +4n
+.B $ find .\& .. / /tmp /tmp/TRACE compile compile/64/tests/find \e
+.B "  \-maxdepth 0 \-printf '[%h][%f]\en'"
 .B [.][.]
 .B [.][..]
 .B [][/]
@@ -2632,17 +2642,18 @@ For example, some starting points may no
 pending program invocations for
 .B \-exec\ \&...\&\ {}\ +
 or
-.B "\-execdir\ \&...\&\ {}\ +
+.B \-execdir\ \&...\&\ {}\ +
 may not have been performed.
 .
-.SH "HISTORY"
+.SH HISTORY
 
 A
 .B find
 program appeared in Version 5 Unix as part of the
 Programmer's Workbench project and was written by Dick Haight.  Doug
 McIlroy's
-.I A Research UNIX Reader: Annotated Excerpts from the Programmer’s Manual, 
1971-1986
+.I A Research UNIX Reader: Annotated Excerpts from the Programmer’s \
+Manual, 1971\(en1986
 provides some additional details; you can read it on-line at
 <https://www.cs.dartmouth.edu/~doug/reader.pdf>.
 
@@ -2651,12 +2662,12 @@ GNU
 was originally written by Eric Decker, with
 enhancements by David MacKenzie, Jay Plett, and Tim Wood.  The idea
 for
-.B find -print0
+.B find \-print0
 and
-.B xargs -0
+.B xargs \-0
 came from Dan Bernstein.
 .
-.SH "COMPATIBILITY"
+.SH COMPATIBILITY
 As of findutils-4.2.2, shell metacharacters (`*', `?' or `[]' for
 example) used in filename patterns match a leading `.', because
 IEEE POSIX interpretation 126 requires this.
@@ -2679,6 +2690,7 @@ will not exit immediately.  Previously,
 .BR find 's
 exit status was unaffected by the failure of
 .BR \-delete .
+
 .TS
 l l l .
 Feature        Added in        Also occurs in
@@ -2690,7 +2702,7 @@ Feature   Added in        Also occurs in
 \-writable     4.3.0
 \-executable   4.3.0
 \-regextype    4.2.24
-\-exec ... +   4.2.12  POSIX
+\-exec ...\& + 4.2.12  POSIX
 \-execdir      4.2.12  BSD
 \-okdir        4.2.12
 \-samefile     4.2.11
@@ -2712,23 +2724,23 @@ Feature Added in        Also occurs in
 .TE
 .P
 The syntax
-\.B \-perm +MODE
+.B \-perm +MODE
 was removed in findutils-4.5.12, in favour of
-\.B \-perm
+.B \-perm
 .BR /MODE .
 The
 .B +MODE
 syntax had been deprecated since findutils-4.2.21
 which was released in 2005.
 .
-.SH "NON-BUGS"
+.SH NON-BUGS
 .SS Operator precedence surprises
 The command
-.B find . \-name afile \-o \-name bfile \-print
+.B find .\& \-name afile \-o \-name bfile \-print
 will never print
 .I afile
 because this is actually equivalent to
-.BR "find . \-name afile \-o \e( \-name bfile \-a \-print \e)" .
+.BR "find .\& \-name afile \-o \e( \-name bfile \-a \-print \e)" .
 Remember that the precedence of
 .B \-a
 is higher than that of
@@ -2738,9 +2750,9 @@ and when there is no operator specified
 is assumed.
 .SS \(lqpaths must precede expression\(rq error message
 .nf
-.B $ find . \-name *.c \-print
+.B $ find .\& \-name *.c \-print
 find: paths must precede expression
-find: possible unquoted pattern after predicate `-name'?
+find: possible unquoted pattern after predicate `\-name'?
 .fi
 .P
 This happens when the shell could expand the pattern
@@ -2751,7 +2763,7 @@ and passing the resulting file names in
 like this:
 .nf
 .
-.B find . \-name frcode.c locate.c word_io.c \-print
+.B find .\& \-name frcode.c locate.c word_io.c \-print
 .
 .fi
 That command is of course not going to work, because the
@@ -2763,11 +2775,11 @@ allowing
 to use the pattern with the wildcard during the search for file name matching
 instead of file names expanded by the parent shell:
 .nf
-.B $ find . \-name \(aq*.c\(aq \-print
-.B $ find . \-name \e*.c \-print
+.B $ find .\& \-name \(aq*.c\(aq \-print
+.B $ find .\& \-name \e*.c \-print
 .fi
 .
-.SH "BUGS"
+.SH BUGS
 There are security problems inherent in the behaviour that the POSIX
 standard specifies for
 .BR find ,
@@ -2785,7 +2797,7 @@ has no effect on the
 .B \-ok
 action.
 .
-.SH "REPORTING BUGS"
+.SH REPORTING BUGS
 GNU findutils online help: <https://www.gnu.org/software/findutils/#get-help>
 .br
 Report any translation bugs to <https://translationproject.org/team/>
@@ -2808,7 +2820,7 @@ License GPLv3+: GNU GPL version 3 or lat
 This is free software: you are free to change and redistribute it.
 There is NO WARRANTY, to the extent permitted by law.
 .
-.SH "SEE ALSO"
+.SH SEE ALSO
 .BR chmod (1),
 .BR locate (1),
 .BR ls (1),
@@ -2819,7 +2831,7 @@ There is NO WARRANTY, to the extent perm
 .BR ctime (3)
 .BR fnmatch (3),
 .BR printf (3),
-.BR strftime (3),
+.BR \%strftime (3),
 .BR locatedb (5),
 .BR regex (7)
 .PP
  Any program (person), that produces man pages, should check the output
for defects by using (both groff and nroff)

[gn]roff -mandoc -t -ww -b -z -K utf8 <man page>

  The same goes for man pages that are used as an input.

  For a style guide use

  mandoc -T lint

-.-

  Any "autogenerator" should check its products with the above mentioned
'groff', 'mandoc', and additionally with 'nroff ...'.

  It should also check its input files for too long (> 80) lines.

  This is just a simple quality control measure.

  The "autogenerator" may have to be corrected to get a better man page,
the source file may, and any additional file may.

  Common defects:

  Not removing trailing spaces (in in- and output).
  The reason for these trailing spaces should be found and eliminated.

  "git" has a "tool" to point out whitespace,
see for example "git-apply(1)" and git-config(1)")

  Not beginning each input sentence on a new line.
Line length and patch size should thus be reduced.

  The script "reportbug" uses 'quoted-printable' encoding when a line is
longer than 1024 characters in an 'ascii' file.

  See man-pages(7), item "semantic newline".

-.-

The difference between the formatted output of the original and patched file
can be seen with:

  nroff -mandoc <file1> > <out1>
  nroff -mandoc <file2> > <out2>
  diff -d -u <out1> <out2>

and for groff, using

\"printf '%s\n%s\n' '.kern 0' '.ss 12 0' | groff -mandoc -Z - \"

instead of 'nroff -mandoc'

  Add the option '-t', if the file contains a table.

  Read the output from 'diff -d -u ...' with 'less -R' or similar.

-.-.

  If 'man' (man-db) is used to check the manual for warnings,
the following must be set:

  The option \"-warnings=w\"

  The environmental variable:

export MAN_KEEP_STDERR=yes (or any non-empty value)

  or

  (produce only warnings):

export MANROFFOPT=\"-ww -b -z\"

export MAN_KEEP_STDERR=yes (or any non-empty value)

-.-

Reply via email to