Package: findutils
Version: 4.11.0-3
Severity: minor
Tags: patch
Additional remarks.
Mails from me to "[email protected]" are no longer acknowledged. A
Debian maintainer told me, that he would contact the mail administrator
about me not wanting to send bugs upstream.
See also Debian bug #1141378 reportbug: Automatic forwarding of upstream
bugs.
-.-
Dear Maintainer,
>From "ftp.debian.org/debian/doc/bug-reporting.txt"
Don't file bugs upstream
If you file a bug in Debian, don't send a copy to the upstream software
maintainers yourself to start with, as it is possible that the bug
exists only in Debian. If necessary, the maintainer of the package will
forward the bug upstream, or ask you to do so after they've checked
that it isn't Debian-specific.
-.-
For forwarding bug reports to upstream see:
https://www.debian.org/Bugs/Developer#forward
-.-
"Handling bug reports" in
http://people.debian.org/~enrico/dcg/ch03s02.html
-.-
I do not send reports upstream if I have to get an account there.
The Debian maintainers have one already.
-.-
* 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=0 -ww -z < "man page"
[Use
grep -n -e ' $' -e '\\~$' -e ' \\f.$' -e ' \\"' -e ' "$' <file>
to find (most) 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?
Output from "test-groff -mandoc -K utf8 -rF0 -rHY=0 -ww -z -t":
troff:<stdin>:52: warning: end of sentence detected before end of text line [-w
style]
troff:<stdin>:73: warning: end of sentence detected before end of text line [-w
style]
troff:<stdin>:75: warning: end of sentence detected before end of text line [-w
style]
troff:<stdin>:77: warning: end of sentence detected before end of text line [-w
style]
troff:<stdin>:78: warning: end of sentence detected before end of text line [-w
style]
troff:<stdin>:88: warning: end of sentence detected before end of text line [-w
style]
troff:<stdin>:97: warning: end of sentence detected before end of text line [-w
style]
troff:<stdin>:118: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:118: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:125: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:131: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:138: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:168: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:207: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:208: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:210: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:212: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:220: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:221: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:234: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:259: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:260: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:261: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:281: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:298: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:305: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:317: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:334: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:336: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:337: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:345: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:353: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:355: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:356: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:362: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:366: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:368: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:384: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:391: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:398: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:398: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:406: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:412: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:417: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:453: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:465: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:471: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:477: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:489: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:498: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:510: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:517: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:523: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:526: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:531: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:534: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:543: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:560: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:652: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:658: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:671: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:674: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:675: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:677: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:682: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:697: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:707: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:808: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:814: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:829: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:854: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:877: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:933: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:985: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:988: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:994: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:1016: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:1021: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:1023: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:1034: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:1051: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:1053: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:1060: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:1067: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:1068: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:1069: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:1071: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:1078: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:1083: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:1086: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:1142: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:1180: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:1205: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:1209: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:1212: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:1223: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:1311: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:1315: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:1321: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:1325: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:1341: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:1344: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:1348: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:1351: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:1355: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:1359: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:1385: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:1394: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:1398: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:1434: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:1479: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:1479: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:1480: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:1490: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:1494: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:1542: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:1549: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:1552: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:1554: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:1555: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:1558: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:1628: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:1634: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:1634: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:1637: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:1640: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:1664: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:1695: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:1721: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:1737: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:1738: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:1741: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:1756: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:1779: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:1780: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:1781: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:1783: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:1817: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:1819: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:1828: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:1847: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:1851: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:1881: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:1882: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:1887: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:1890: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:1897: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:1909: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:1910: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:1914: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:1947: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:1957: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:1977: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:1978: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:1979: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:1982: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:1990: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:1992: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:1993: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:2001: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:2003: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:2007: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:2007: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:2018: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:2039: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:2058: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:2090: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:2091: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:2096: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:2134: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:2153: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:2155: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:2157: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:2160: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:2162: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:2165: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:2172: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:2263: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:2310: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:2321: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:2347: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:2365: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:2467: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:2513: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:2632: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:2648: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:2650: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:2659: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:2663: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:2727: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:2848: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:2858: warning: end of sentence detected before end of text line
[-w style]
troff:<stdin>:2868: warning: end of sentence detected before end of text line
[-w style]
troff:<find.1>:2965: warning: end of sentence detected before end of text line
[-w style]
troff:<find.1>:2971: warning: [page 24, 4.8i (diversion '3tbd4,2', 0.0i)]:
cannot adjust (align) with both margins ; underset by 4.848n [-w break]
troff:<find.1>:3021: warning: end of sentence detected before end of text line
[-w style]
troff:<find.1>:3036: warning: end of sentence detected before end of text line
[-w style]
* 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: forky/sid
APT prefers testing
APT policy: (500, 'testing')
Architecture: amd64 (x86_64)
Kernel: Linux 7.2.9+deb14-amd64 (SMP w/2 CPU threads; PREEMPT)
Locale: LANG=is_IS.iso88591, LC_CTYPE=is_IS.iso88591 (charmap=UTF-8) (ignored:
LC_ALL set to C.utf8), 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.43-7
ii libselinux1 3.11-2.1
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 STYLE: input text line longer than 80 bytes
1 WARNING: skipping paragraph macro: PP empty
-.-.
Reduce space between words.
find.1:2867:are not implemented in other systems. See COMPATIBILITY for
-.-.
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.
2216:.SS invalid predicate `-foo'
2241:.BR "find . -print )" ).
2733:.B $ find tree -printf 'device: %D path: %p\en'
2749:.B $ find tree -xdev -printf 'device: %D path: %p\en'
2761:.B $ find tree -mount -printf 'device: %D path: %p\en'
-.-.
Remove quotes from an argument to a macro, when there is a printable
but no space character between them. Such quotes provide no information.
find.1:691:.SS "TESTS"
find.1:1248:.SS "ACTIONS"
find.1:1904:.SS "OPERATORS"
-.-.
Use "\-" instead of "-" (rendered as a hyphen (u2010) in UTF-8 encoding)
in web addresses.
3050:GNU findutils online help:
<https://www.gnu.org/software/findutils/#get-help>
3062:<https://lists.gnu.org/mailman/listinfo/bug-findutils>
-.-
Additionally:
table:
Use full lenght of output line by adding 'x' to the format of the last
column.
Size/bytes:
84787 find.1
84780 find.1.new
-.-
Generally:
Split (sometimes) lines after a punctuation mark; before a conjunction.
-.-
Tables:
Use the preprocessor 'tbl' to make tables.
Put data, that are wider than the header in the (centered) last column,
in a "T{...\nT}" block.
Table headings, that are wider than any data in the corresponding
column, do not need to be centered, so left adjustment (l, L) is
sufficient. There is thereby no change in the standard output.
--- find.1 2026-10-12 02:09:44.129902025 +0000
+++ find.1.new 2026-10-12 02:51:28.475122267 +0000
@@ -688,7 +688,7 @@ Print the \fBfind\fR version number and
.IP \-xdev
Don't descend into directories on other devices.
.
-.SS "TESTS"
+.SS TESTS
Some tests, for example
.B \-newerXY
and
@@ -1245,7 +1245,7 @@ will behave the same as
(SELinux only) Security context of the file matches glob
.IR pattern .
.
-.SS "ACTIONS"
+.SS ACTIONS
.IP "\-delete \&"
Delete files or directories; true if removal succeeded.
If the removal failed, an error message is issued and
@@ -1901,7 +1901,7 @@ find / \-name needle \-print \-quit
.fi
.in
.
-.SS "OPERATORS"
+.SS OPERATORS
Listed in order of decreasing precedence:
.
.IP "( \fIexpr\fR )"
@@ -2864,7 +2864,7 @@ came from Dan Bernstein.
.SH CAVEATS
Many of the features of GNU
.B find
-are not implemented in other systems. See COMPATIBILITY for
+are not implemented in other systems. See COMPATIBILITY for
information about compatibility between this version of GNU
.B find
and older versions of GNU
@@ -2934,7 +2934,7 @@ Feature Added in Year Also occurs in
.TE
.SS "Functional Changes"
.TS
-l l l .
+l l lx .
Version Year Change
4.11 2026 T{
As required by newer POSIX (from Issue 8, IEEE Std 1003.1\-2024), the test
@@ -2980,7 +2980,6 @@ patterns match a leading `.', because IE
requires this.
T}
.TE
-.P
.
.SH NON-BUGS
.SS "Operator precedence surprises"
@@ -3047,7 +3046,7 @@ has no effect on the
action.
.
.SH "REPORTING BUGS"
-GNU findutils online help: <https://www.gnu.org/software/findutils/#get-help>
+GNU findutils online help: <https://www.gnu.org/software/findutils/#get\-help>
.br
Report any translation bugs to <https://translationproject.org/team/>
.PP
@@ -3059,7 +3058,7 @@ General topics about the GNU findutils p
.I bug\-findutils
mailing list:
.RS
-<https://lists.gnu.org/mailman/listinfo/bug-findutils>
+<https://lists.gnu.org/mailman/listinfo/bug\-findutils>
.RE
.
.SH COPYRIGHT
Check the output from "lintian" in the Debian distribution.
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>
To find most trailing spaces use
grep -n -e ' $' -e ' \\f.$' -e ' \\"' -e ' "$' <man page>
The same goes for man pages that are used as an input.
-.-
For a style guide use
mandoc -T lint
-.-
For general input conventions consult the man page "nroff(7)" (item
"Input conventions") or the Texinfo manual about the same item.
-.-
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.
Debian can fix simple bugs in the used generators and distribute them,
and does not need to wait for upstream to do that and distribute them.
-.-
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 when that has been fixed.
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 a script "cmp.manuals" in the attachment.
Or
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)
-.-
#!/usr/bin/bash
# Compare two versions of a man page
# command old{file, directory} new{file, directory}
# command oldfile newfile
# command olddirectory newdirectory
set -eu
option=''
man_option='-mandoc' #-mandoc
Cmd_name=${0##*/}
echo main: parameters are $*
while getopts cd:em:r: opt
do
case $opt in
c) man_option="-rcR=1"
;;
d) man_option="-d$OPTARG"
;;
e) option=exact
;;
m) man_option="-m$OPTARG"
;;
r) man_option="-r$OPTARG"
;;
*) echo cmp.manuals: Error, wrong option \"$*\" >&2
exit
;;
esac
done
shift $((OPTIND - 1))
#echo main: option is $man_option ; exit 1
#echo main: parameters are $*
# Add appropriate options
if test \! -f "$1"
then
echo file $1 does not exist
exit 1
fi
if test \! -f "$2"
then
echo file $2 does not exist
exit 1
fi
case $man_option in
-man) man_option='-man -t -dAD=l -rHY=0'
;;
-mandoc) man_option='-mandoc -t -dAD=l -rHY=0'
;;
-me) man_option='-me'
;;
-ms) man_option='-ms -rpar*adj=0'
;;
-d*|-r*) :
;;
*) echo ${Cmd_name}: Unknown option for the macro packet $man_option
exit 1
;;
esac
tempuniq=$(mktemp --tmpdir $Cmd_name.XXXXXX )
uniqlines () {
uniq -d $inputX | sed -e '/^$/d' > $tempuniq
if test -s $tempuniq ; then
echo $Cmd_name: Equal lines in input from $inputX
cat $tempuniq
return 1
fi
return 0
}
compare () {
#printf 'option is %s\n' $option
inputA=old.${1##*/}
inputB=new.${2##*/}
if test ! $1 -ef /tmp/$inputA ; then
echo copy $1 to /tmp/$inputA
cp $1 /tmp/$inputA
fi
if test ! $2 -ef /tmp/$inputB ; then
echo copy $2 /tmp/$inputB
cp $2 /tmp/$inputB
fi
olddir=$PWD
cd /tmp
#MAN_KEEP_STDERR=yes
#MANOPT='--warnings=w --no-justification --no-hyphenation'
#MANWIDTH=80
#export MAN_KEEP_STDERR MANOPT MANWIDTH
# Have no sentence space (.ss 12 0)
#echo option is \"$option\"; exit 1
# getopt sets opt=? if there is no option
#echo opt is \"$opt\" >&2
if test "$opt" = '?' ; then
sed -e '/^.TH /i \
.ss 12 0\
.nr cR 1\
.kern 0\
.lg 0
s/\. *ad$/.ad l/
s/\. *ad /.ad l /
' $inputA
else
cat $inputA
fi | tee -p $inputA.intermed | \
test-nroff -t -K utf8 $man_option > $inputA.txt 2> /dev/null
#echo test-nroff man_option is $man_option for output inputA.txt >&2
# Check
echo inputA.txt from old version
ls -l $inputA.intermed
ls -l $inputA.txt
if find_cntrl $inputA.txt > /dev/null 2>&1
then
:
else
echo No formatting characters in file $inputA.txt >&2
fi
inputX=$inputA.txt
#if uniqlines ; then
# Remove multible empty lines
# uniq $inputA.txt > $tempuniq
# cp $tempuniq $inputA.txt
#fi
#echo opt is \"$opt\" >&2
if test "$opt" = '?' ; then
#echo opt is \"$opt\" >&2
sed -e '/^.TH /i \
.ss 12 0\
.nr cR 1\
.kern 0\
.lg 0
s/\. *ad$/.ad l/
s/\. *ad /.ad l /
' $inputB
else
cat $inputB
fi | tee -p $inputB.intermed | \
test-nroff -t -K utf8 $man_option > ${inputB}.txt 2> /dev/null
#echo test-nroff man_option is $man_option >&2
#Check
echo inputB from new version
ls -l $inputB.intermed
ls -l $inputB.txt
if find_cntrl ${inputB}.txt > /dev/null 2>&1
then
:
else
echo No formatting characters in file ${inputB}.txt >&2
fi
inputX=${inputB}.txt
#if uniqlines ; then
# Remove multible empty lines
# uniq $inputA.txt > $tempuniq
# cp $tempuniq $inputB.txt
#fi
#echo using diff.loc >&2
diff.loc -d $inputA.txt $inputB.txt > $inputA.txt.diff || :
# Difference in the output of "troff"
if test "$opt" = '?' ; then
sed -e '/^.TH /i \
.ss 12 0\
.nr cR 1\
.kern 0
s/\. *ad$/.ad l/
s/\. *ad /.ad l /
' $inputA
else
cat $inputA
fi | test-groff -t $man_option -K utf8 -Z \
> $inputA.ml 2> /dev/null
#echo test-groff man_option is $man_option >&2
#ls -l $inputA.ml
#stat $inputA.ml
if test \! -s $inputA.ml; then
echo $Cmd_name: intermediate file $inputA.ml is not produced >&2
ls -lt $inputA >&2
exit 1
fi
if test "$opt" = '?' ; then
sed -e '/^.TH /i \
.ss 12 0\
.nr cR 1\
.kern 0
s/\. *ad$/.ad l/
s/\. *ad /.ad l /
' $inputB
else
cat $inputB
fi | tee -p /tmp/input.to.groff | \
test-groff -t $man_option -Z -K utf8\
> $inputB.ml #2> /dev/null
#echo test-groff man_option is $man_option >&2
if test \! -s $inputB.ml; then
echo $Cmd_name: intermediate file $inputB.ml is not produced >&2
ls -l /tmp/input.to.groff >&2
exit 1
fi
#stat $inputB.ml
#ls -l $inputB.ml 1>&2
#printf 'option is = %s\n' "$option"
if test "$option" = 'exact'; then
# echo Using diff.loc >&2
diff.loc -d $inputA.ml $inputB.ml | \
sed -e '/^[-]V[0-9]\+$/d' -e '/^[+]V[0-9]\+$/d' > $inputA.ml.diff
else
echo Not exact diff between A.ml and B.ml >&2
# echo Using diff.loc >&2
diff.loc -d $inputA.ml $inputB.ml | \
sed -e '/^[-]V[0-9]\+$/d' -e '/^[+]V[0-9]\+$/d' > $inputA.ml.diff || :
fi
if test -s $inputA.txt.diff ; then
less -R $inputA.txt.diff
fi
if test -s $inputA.ml.diff ; then
if test "$option" = 'exact' ; then
less $inputA.ml.diff
else
rm.troff.space $inputA.ml.diff | less
fi
fi
cd $olddir
} # End of compare
#set -x
echo first file is $1
echo second file is $2
#echo Are in directory $PWD
if test -f $1 ; then
echo Comparing $1 with $2 >&2
compare $1 $2 |& sed -f $HOME/bin/groff.err.weedout
else
for new_file in $(find $2 -type f) ; do
old_file=$1/$(echo "$new_file" | sed -e 's#'$2'##')
echo oldfile=$old_file new_file=$new_file
compare $old_file $new_file |& sed -f $HOME/bin/groff.err.weedout
done
fi
#echo are in directory $PWD