[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

lintian: r454 - in trunk: checks debian



Author: djpig
Date: 2005-07-23 18:39:13 +0200 (Sat, 23 Jul 2005)
New Revision: 454

Modified:
   trunk/checks/manpages
   trunk/checks/manpages.desc
   trunk/debian/changelog
Log:
Report errors from man when parsing man pages. Based on
a patch by Kevin Ryde (Closes: #285540)


Modified: trunk/checks/manpages
===================================================================
--- trunk/checks/manpages	2005-07-23 15:47:49 UTC (rev 453)
+++ trunk/checks/manpages	2005-07-23 16:39:13 UTC (rev 454)
@@ -200,8 +200,8 @@
 	    my ($i, $first) = (0, "");
 	    do {
 		$first = $manfile[$i++] || ""; 
-	    } while ($first =~ /^\.\\"/ && $manfile[$i]);
-	    
+	    } while ($first =~ /^\.\\"/ && $manfile[$i]); #");
+
 	    unless ($first) {
 		tag "empty-manual-page", "$file";
 	    } elsif ($first =~ /^\.so\s+(.+)?$/) {
@@ -236,9 +236,24 @@
 	# removed.
 	if ($path =~ m,/man/man\d/,) {
 	    if (system("lexgrog unpacked/\Q$file\E >/dev/null 2>&1")) {
-	        tag "manpage-has-bad-whatis-entry", "$file";
+		tag "manpage-has-bad-whatis-entry", "$file";
 	    }
 	}
+	# If it's not a .so link, run it through "man" to check for errors.
+	open MANERRS, '-|', "(LANG=C man -l unpacked/\Q$file\E >/dev/null) 2>&1"
+	    or fail("cannot run man -l: $!");
+	while (<MANERRS>) {
+	    # ignore progress information from man
+	    next if /^Reformatting/;
+	    next if /^\s*$/;
+	    # ignore errors from gzip, will be dealt with at other places
+	    next if /^(man|gzip)/;
+	    chomp;
+	    s/^[^:]://o;
+	    tag "manpage-has-errors-from-man", "$file", "$_";
+	    last;
+	}
+	close(MANERRS);
 	# Now we search through the whole man page for some common errors
 	my $lc = 0;
 	my $hc = 0;
@@ -248,7 +263,7 @@
 	    next if $line =~ /^\.\\\"/o; # comments .\"
 	    if ($line =~ /^\.TH\s/) { # header
 		require Text::ParseWords;
-		my ($th_command, $th_title, $th_section, $th_date ) = 
+		my ($th_command, $th_title, $th_section, $th_date ) =
 		    Text::ParseWords::parse_line( '\s+', 0, $line);
 		if ($th_section && (lc($fn_section) ne lc($th_section))) {
 		    tag "manpage-section-mismatch", "$file:$lc $fn_section != $th_section";

Modified: trunk/checks/manpages.desc
===================================================================
--- trunk/checks/manpages.desc	2005-07-23 15:47:49 UTC (rev 453)
+++ trunk/checks/manpages.desc	2005-07-23 16:39:13 UTC (rev 454)
@@ -95,6 +95,27 @@
  See also groff_man(7) and groff_mdoc(7) for general information on writing
  manual pages.
 
+Tag: manpage-has-errors-from-man
+Type: warning
+Info: This man page provokes warnings or errors from man.
+ .
+ "cannot adjust" or "can't break" are trouble with paragraph filling,
+ usually related to long lines.  Adjustment can be helped by left
+ justifying, breaks can be helped with hyphenation, see "Manipulating
+ Filling and Adjusting" and "Manipulating Hyphenation" in the manual.
+ .
+ "can't find numbered character" usually means latin1 etc in the input, and
+ this warning indicates characters will be missing from the output.  You can
+ change to escapes like \[:a] described on the groff_char man page.
+ .
+ Other warnings are often formatting typos, like missing quotes around a
+ string argument to .IP.  These are likely to result in lost or malformed
+ output.  See the groff_man (or groff_mdoc if using mdoc) man page for
+ information on macros.
+ .
+ At worst, warning messages can be disabled with the .warn directive, see
+ "Debugging" in the groff manual.
+
 Tag: manpage-for-x11-binary-in-wrong-directory
 Type: error
 Info: Manual pages for binaries which are located in <tt>/usr/X11R6/bin</tt>

Modified: trunk/debian/changelog
===================================================================
--- trunk/debian/changelog	2005-07-23 15:47:49 UTC (rev 453)
+++ trunk/debian/changelog	2005-07-23 16:39:13 UTC (rev 454)
@@ -25,6 +25,9 @@
       just on zero-length lines. (Closes: #319370)
   * checks/fields:
     + [FL] Actually mention which architecture we're complaining about
+  * checks/manpages:
+    + [FL] Report errors from man when parsing man pages. Based on
+      a patch by Kevin Ryde (Closes: #285540)
   * checks/po-debconf:
     + [FL] Abort check if the package doesn't seem to use debconf to
       avoid false positives in case maintainers use debian/po for



Reply to: