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

Bug#349614: manpage-has-errors-from-man: "No such file or directory" false positives



Package: lintian
Version: 1.23.14
Severity: normal
Tags: patch

Hello,

Some "No such file or directory" false positives are caused by manpages
including other manpages (with the .so request).
When man is used with a local file, the MANPATH is not used, thus the
included man page must be in the path (i.e. with ".so man1/foo.1", the
current directory must contain the man1 directory).

I propose to cd to the right directory before calling man.


Note: I don't know why $file needed to be quoted (\Q$file\E). Please check
if something else needs to be quoted in my patch.


You can test the patch with the bash package.


-- System Information:
Debian Release: testing/unstable
  APT prefers unstable
  APT policy: (500, 'unstable'), (1, 'experimental')
Architecture: i386 (i686)
Shell:  /bin/sh linked to /bin/bash
Kernel: Linux 2.6.14
Locale: LANG=fr_FR.UTF-8, LC_CTYPE=fr_FR.UTF-8 (charmap=UTF-8)

Versions of packages lintian depends on:
ii  binutils             2.16.1cvs20051214-1 The GNU assembler, linker and bina
ii  diffstat             1.41-1              produces graph of changes introduc
ii  dpkg-dev             1.13.11.1           package building tools for Debian
ii  file                 4.15-2              Determines file type using "magic"
ii  gettext              0.14.5-2            GNU Internationalization utilities
ii  intltool-debian      0.34.1+20050828     Help i18n of RFC822 compliant conf
ii  libparse-debianchang 1.0-1               parse Debian changelogs and output
ii  man-db               2.4.3-3             The on-line manual pager
ii  perl [libdigest-md5- 5.8.7-10            Larry Wall's Practical Extraction 

lintian recommends no packages.

-- no debconf information

Thanks in advance,
-- 
Nekral
diff -rauN ../orig/lintian-1.23.14/checks/manpages ./lintian-1.23.14/checks/manpages
--- ../orig/lintian-1.23.14/checks/manpages	2005-08-12 21:49:07.000000000 +0200
+++ ./lintian-1.23.14/checks/manpages	2006-01-23 23:57:26.000000000 +0100
@@ -240,7 +240,14 @@
 	    }
 	}
 	# 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"
+	my $cmd = "LANG=C man -l unpacked/\Q$file\E";
+	if ($file =~ m/^(.*)\/(man\d\/.*)$/) {
+		# Execute man in the directory that contains the manx
+		# directories. Otherwise, files included with .so won't be
+		# found.
+		$cmd = "cd unpacked/$1 && LANG=C man -l $2";
+	}
+	open MANERRS, '-|', "($cmd >/dev/null) 2>&1"
 	    or fail("cannot run man -l: $!");
 	while (<MANERRS>) {
 	    # ignore progress information from man

Reply to: