Package: lintian
Version: 1.23.22
Severity: wishlist
Tags: patch

Hi,

Checking the validity with the "man" command does not report errors
about macros. The workaround is to use "groff -wmac".

The result of a wrong macro is often a missing line in the displayed
manpage. For example, shmget.2 (manpages-dev) contains the undefined
macro ".Br proc (5)." instead of ".BR proc (5)". If you have a look at
the displayed manpage, you will see that "proc(5)." is missing at the
end of the following sentence:
 "See also the discussion of the file /proc/sys/vm/overcommit_memory in"


The attached patch should allow lintian to warn about these problems.

Cheers,

-- 
Thomas Huriaux
--- manpages.orig       2006-07-08 17:55:18.000000000 +0200
+++ manpages    2006-07-08 17:51:51.000000000 +0200
@@ -245,20 +245,31 @@
        # processed properly.  (Yes, there are man pages that include other
        # pages with .so but aren't simple links; rbash, for instance.)
        my $cmd;
+       my $groff_cmd;
+       my $gzip_cmd;
+       if ($file =~ m,\.gz$,) {
+         $gzip_cmd = "gunzip -c";
+       } else {
+         $gzip_cmd = "cat";
+       }
        if ($file =~ m,^(.*)/(man\d/.*)$,) {
-           $cmd = "cd unpacked/\Q$1\E && man -l \Q$2\E";
+           $groff_cmd = `cd unpacked/\Q$1\E && $gzip_cmd \Q$2\E | grog -wmac 
-Tascii 2>/dev/null`;
+           chomp $groff_cmd;
+           $cmd = "cd unpacked/\Q$1\E && $gzip_cmd \Q$2\E | $groff_cmd";
        } else {
-           $cmd = "man -l unpacked/\Q$file\E";
+           $groff_cmd = `$gzip_cmd unpacked/\Q$file\E | grog -wmac -Tascii 
2>/dev/null`;
+           chomp $groff_cmd;
+           $cmd = "$gzip_cmd unpacked/\Q$file\E | $groff_cmd";
        }
        my $pid = open MANERRS, '-|';
        if (not defined $pid) {
-           fail("cannot run man -l: $!");
+           fail("cannot run $cmd: $!");
        } elsif ($pid == 0) {
            my %newenv = (LANG => 'C', PATH => $ENV{PATH});
            undef %ENV;
            %ENV = %newenv;
            exec "($cmd >/dev/null) 2>&1"
-               or fail("cannot run man -l: $!");
+               or fail("cannot run $cmd: $!");
        }
        while (<MANERRS>) {
            # ignore progress information from man
@@ -266,6 +277,10 @@
            next if /^\s*$/;
            # ignore errors from gzip, will be dealt with at other places
            next if /^(man|gzip)/;
+           # this macro is included by pod2man
+           next if /warning: \`IX\' not defined/;
+           # .so links are checked somewhere else
+           next if /can't open \`(.*)\': No such file or directory/;
            # ignore 8bit character errors on localized man pages
            if ($lang ne "") {
                next if /warning: can\'t find numbered character/;

Attachment: signature.asc
Description: Digital signature

Reply via email to