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

Bug#534940: lintian: inconsistent reporting of affected files



-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

Hey

I guess I am biting the bullet now.  It turns out that with the
pre-sorting stuff, some of the checks (e.g. checks/binaries) now modify
the list when they add their "./" prefix, causing other checks (e.g.
checks/shared-libs) to fail.

I have made the following patches on the infra-513663 branch and I
intend to apply them on the master branch as well.  The patches will
remove ./ and / prefixes on file names in some of the checks.  If I
missed any checks let me know.
  I chose the "\.?/"-less prefix for two reasons; I believed most of our
checks does not use it (particularly checks/files, which is rather huge)
and secondly because Lintian::Collect tends to return the file names
without this prefix.

~Niels

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iQIcBAEBCAAGBQJNNOaJAAoJEAVLu599gGRCvUEP/AvOrXTkUGHKcZ+eFfIbl+qu
FsiqmwszydUyCLKP5zmBP0XvSF4MjpWSliOqtJ0saUuxem3HtnisDhuMa/9eZN5K
GuZTxrDXaeQrB8uLNDzkLAmy8Cmh/M6lPIriIsWoPMRHGtS5hKbRffL+ZQp9Me0+
zB/mGXzEgNaEzeEavE2N4bDimlW536zy9B9NGk2htLJULLXiDl+BSuZVVzU1ecxc
DW9one/Uk0DZMo/LTkTaKyX0L/pLtCtbs/1dlk/5yPsDaBSgoPG1hWKN36iRWsg0
/kYYUTMeOSFtSxLA5B1M7RYK7zvhutPEQ0s9szsoERRE4qREXk1H9ocxUfGkx3G5
VJ1NMCuu8SaJihe8bMQR7mOjlOq9Yfr88lC9JYpdJTA8pNaftHqbVd6dnUflEdKY
Zpv3HQAw/6FbchHZ/IzQ1VPOKWqfEcJAWqoHPWi1Tn7TSAo5nvMmelv3hLpm5YjW
XZGrXljC7iFYqtABWtQRXBGzb7HsroiH/T6HItnHVRzVbsHxkYf719qsKkIwZbH+
Euvi9rvSO1/n9toyG6QtkHsilBGCMX4ykyaTzRgLaWqx2Dg90AZpve/sa93QiTZr
a9fJ8fdtB0+w3Qyi3FroEaI+hzRnbqdRaa1kNJRQBPZ7WVYiyNaF5VeUVo0aBaAG
SY+wJVo9ODgSVVIYlT/t
=DJkM
-----END PGP SIGNATURE-----
>From c6e800f255b17bb85a332bd4628095978180bb17 Mon Sep 17 00:00:00 2001
From: Niels Thykier <niels@thykier.net>
Date: Mon, 17 Jan 2011 23:07:14 +0100
Subject: [PATCH 1/5] Remove the ./ prefix in filenames from scripts output

---
 checks/scripts                           |   29 +++++++++++------------
 t/tests/files-foo-in-bar/tags            |    4 +-
 t/tests/files-general/tags               |    2 +-
 t/tests/lintian-display-level/tags       |    2 +-
 t/tests/lintian-output-colons/tags       |    2 +-
 t/tests/lintian-output-letter/tags       |    2 +-
 t/tests/lintian-output-xml/tags          |    2 +-
 t/tests/menu-format-desktop-general/tags |    2 +-
 t/tests/scripts-calls-init-script/tags   |    2 +-
 t/tests/scripts-interpreters/tags        |   36 +++++++++++++++---------------
 t/tests/scripts-missing-dep/tags         |   10 ++++----
 testset/tags.binary                      |    4 +-
 testset/tags.filenames                   |    6 ++--
 testset/tags.scripts                     |   26 ++++++++++----------
 14 files changed, 64 insertions(+), 65 deletions(-)

diff --git a/checks/scripts b/checks/scripts
index 0a1280c..a6e71b1 100644
--- a/checks/scripts
+++ b/checks/scripts
@@ -319,12 +319,12 @@ foreach (@{$info->sorted_index}) {
     next unless ($index_info->{type} =~ m,^[-h], and ($operm & 01 or
 	$operm & 010 or $operm & 0100));
     my $is_suid = $operm & 04000;
-    $executable{'./' . $_} = 1;
-    $suid{'./' . $_} = $is_suid;
+    $executable{$_} = 1;
+    $suid{$_} = $is_suid;
 }
 
 for my $file (@{$info->sorted_file_info}) {
-    $ELF{'./' . $file} = 1 if $info->file_info->{$file} =~ /^[^,]*\bELF\b/o;
+    $ELF{$file} = 1 if $info->file_info->{$file} =~ /^[^,]*\bELF\b/o;
 }
 
 my $all_deps = '';
@@ -341,7 +341,6 @@ my $all_parsed = Lintian::Relation->new($all_deps);
 for my $filename (sort keys %{$info->scripts}) {
     my $interpreter = $info->scripts->{$filename}->{interpreter};
     my $calls_env = $info->scripts->{$filename}->{calls_env};
-    $filename = './' . $filename;
     $scripts{$filename} = 1;
 
     my $in_docs = $filename =~ m,usr/share/doc/,;
@@ -382,21 +381,21 @@ for my $filename (sort keys %{$info->scripts}) {
 	unless $is_absolute;
     tag("script-not-executable", $filename)
 	unless ($executable{$filename}
-		or $filename =~ m,^\./usr/(lib|share)/.*\.pm,
-		or $filename =~ m,^\./usr/(lib|share)/.*\.py,
-		or $filename =~ m,^\./usr/(lib|share)/ruby/.*\.rb,
+		or $filename =~ m,^usr/(lib|share)/.*\.pm,
+		or $filename =~ m,^usr/(lib|share)/.*\.py,
+		or $filename =~ m,^usr/(lib|share)/ruby/.*\.rb,
 		or $filename =~ m,\.in$,
 		or $filename =~ m,\.ex$,
-		or $filename eq './etc/init.d/skeleton'
-		or $filename =~ m,^\./etc/menu-methods,
-		or $filename =~ m,^\./etc/X11/Xsession\.d,)
+		or $filename eq 'etc/init.d/skeleton'
+		or $filename =~ m,^etc/menu-methods,
+		or $filename =~ m,^etc/X11/Xsession\.d,)
 		or $in_docs;
 
     # Warn about csh scripts.
     tag("csh-considered-harmful", $filename)
         if (($base eq 'csh' or $base eq 'tcsh')
 	    and $executable{$filename}
-	    and $filename !~ m,^\./etc/csh/login\.d/,)
+	    and $filename !~ m,^etc/csh/login\.d/,)
 	    and !$in_docs;
 
     # Syntax-check most shell scripts, but don't syntax-check scripts that end
@@ -453,7 +452,7 @@ for my $filename (sort keys %{$info->scripts}) {
     # probably be extended eventually to any script in a public directory.
     # This also needs smarter processing of multiline quoted strings,
     # heredocs, and so forth.  Hopefully it will do for right now.
-    if ($filename =~ m,^./etc/, and $base =~ /^$known_shells_regex$/) {
+    if ($filename =~ m,^etc/, and $base =~ /^$known_shells_regex$/) {
 	my ($saw_init, $saw_invoke);
 	local $.;
 	open(FH, '<', 'unpacked/' . $filename);
@@ -470,7 +469,7 @@ for my $filename (sort keys %{$info->scripts}) {
 	    # those defined for invoke-rc.d.
 	    if (m,$LEADIN/etc/init.d/(\S+)\s+[\"\']?(\S+)[\"\']?,) {
 		my ($script, $action) = ($1, $2);
-		next if "./etc/init.d/$script" eq $filename;
+		next if "etc/init.d/$script" eq $filename;
 		next unless $action =~ /^(force-)?(start|stop|restart|reload|status)$/;
 		$saw_init = $.;
 	    }
@@ -496,9 +495,9 @@ for my $filename (sort keys %{$info->scripts}) {
 	if ($depends && !$all_parsed->implies($depends)) {
 	    if ($base =~ /^(python|ruby|(m|g)awk)$/) {
 		tag("$base-script-but-no-$base-dep", $filename);
-	    } elsif ($base eq 'csh' && $filename =~ m,^\./etc/csh/login\.d/,) {
+	    } elsif ($base eq 'csh' && $filename =~ m,^etc/csh/login\.d/,) {
 		# Initialization files for csh.
-	    } elsif ($base eq 'fish' && $filename =~ m,^\./etc/fish\.d/,) {
+	    } elsif ($base eq 'fish' && $filename =~ m,^etc/fish\.d/,) {
 		# Initialization files for fish.
 	    } elsif ($base eq 'ocamlrun' && $all_deps =~ /\bocaml(-base)?(-nox)?-\d\.[\d.]+/) {
 		# ABI-versioned virtual packages for ocaml
diff --git a/t/tests/files-foo-in-bar/tags b/t/tests/files-foo-in-bar/tags
index 3bf7ef9..569da68 100644
--- a/t/tests/files-foo-in-bar/tags
+++ b/t/tests/files-foo-in-bar/tags
@@ -21,8 +21,8 @@ E: files-foo-in-bar: subdir-in-bin bin/foo/
 E: files-foo-in-bar: subdir-in-usr-bin usr/bin/foo/
 E: files-foo-in-bar: udev-rule-in-etc etc/udev/rules.d/bar
 W: files-foo-in-bar: debug-package-should-be-named-dbg usr/lib/debug/bar
-W: files-foo-in-bar: executable-not-elf-or-script ./bin/foo/bar
-W: files-foo-in-bar: executable-not-elf-or-script ./usr/bin/foo/bar
+W: files-foo-in-bar: executable-not-elf-or-script bin/foo/bar
+W: files-foo-in-bar: executable-not-elf-or-script usr/bin/foo/bar
 W: files-foo-in-bar: file-in-unusual-dir usr/foo/bar
 W: files-foo-in-bar: file-in-unusual-dir usr/local/foo/bar
 W: files-foo-in-bar: file-in-unusual-dir var/foo/bar
diff --git a/t/tests/files-general/tags b/t/tests/files-general/tags
index 668f40d..7b7d278 100644
--- a/t/tests/files-general/tags
+++ b/t/tests/files-general/tags
@@ -12,7 +12,7 @@ E: files-general: star-file usr/share/foo/*
 E: files-general: stray-directory-in-manpage-directory usr/share/man/man1/random/
 I: files-general: duplicated-compressed-file usr/share/doc/lintian/lintian-16x16.png.gz
 I: files-general: package-contains-empty-directory usr/share/man/man1/random/
-W: files-general: executable-not-elf-or-script ./usr/share/man/man5/foo.5.gz
+W: files-general: executable-not-elf-or-script usr/share/man/man5/foo.5.gz
 W: files-general: file-in-unusual-dir new-top-level-dir/file-in-new-top-level-dir
 W: files-general: icon-size-and-directory-name-mismatch usr/share/apps/lintian/icons/hicolor/22x22/lintian-16x16.png 16x16
 W: files-general: obsolete-comments-style-in-php-ini etc/php5/conf.d/php-foo.ini
diff --git a/t/tests/lintian-display-level/tags b/t/tests/lintian-display-level/tags
index 3f0f1f0..ee0bcf2 100644
--- a/t/tests/lintian-display-level/tags
+++ b/t/tests/lintian-display-level/tags
@@ -8,7 +8,7 @@ I: lintian-display-level: desktop-entry-limited-to-environments /usr/share/appli
 I: lintian-display-level: package-contains-empty-directory usr/local/share/lintian/
 P: lintian-display-level source: debian-control-has-unusual-field-spacing line 11
 P: lintian-display-level source: direct-changes-in-diff-but-no-patch-system Changes
-P: lintian-display-level: example-unusual-interpreter ./usr/share/doc/lintian-display-level/examples/example #!/usr/bin/foo
+P: lintian-display-level: example-unusual-interpreter usr/share/doc/lintian-display-level/examples/example #!/usr/bin/foo
 P: lintian-display-level: no-homepage-field
 P: lintian-display-level: no-upstream-changelog
 W: lintian-display-level source: dfsg-version-misspelled 1.0+dsfg-1.1
diff --git a/t/tests/lintian-output-colons/tags b/t/tests/lintian-output-colons/tags
index 4add9f9..28d7825 100644
--- a/t/tests/lintian-output-colons/tags
+++ b/t/tests/lintian-output-colons/tags
@@ -10,7 +10,7 @@ tag:I:wishlist:possible::lintian-output-colons:1.0+dsfg-1.1:all:binary:package-c
 tag:I:wishlist:wild-guess::lintian-output-colons:1.0+dsfg-1.1:all:binary:description-possibly-contains-homepage:http\://www.example.com/.:
 tag:P:pedantic:certain::lintian-output-colons:1.0+dsfg-1.1:source:source:debian-control-has-unusual-field-spacing:line 11:
 tag:P:pedantic:certain::lintian-output-colons:1.0+dsfg-1.1:source:source:direct-changes-in-diff-but-no-patch-system:Changes:
-tag:P:pedantic:possible::lintian-output-colons:1.0+dsfg-1.1:all:binary:example-unusual-interpreter:./usr/share/doc/lintian-output-colons/examples/example #!/usr/bin/foo:
+tag:P:pedantic:possible::lintian-output-colons:1.0+dsfg-1.1:all:binary:example-unusual-interpreter:usr/share/doc/lintian-output-colons/examples/example #!/usr/bin/foo:
 tag:P:pedantic:possible::lintian-output-colons:1.0+dsfg-1.1:all:binary:no-homepage-field::
 tag:P:pedantic:wild-guess:O:lintian-output-colons:1.0+dsfg-1.1:all:binary:no-upstream-changelog::no-upstream-changelog
 tag:W:minor:certain:O:lintian-output-colons:1.0+dsfg-1.1:source:source:dfsg-version-misspelled:1.0+dsfg-1.1:dfsg-version-misspelled 1.0*
diff --git a/t/tests/lintian-output-letter/tags b/t/tests/lintian-output-letter/tags
index 4203dc5..6748263 100644
--- a/t/tests/lintian-output-letter/tags
+++ b/t/tests/lintian-output-letter/tags
@@ -10,7 +10,7 @@ I[W!]: lintian-output-letter source: binary-control-field-duplicates-source fiel
 I[W?]: lintian-output-letter: description-possibly-contains-homepage http://www.example.com/.
 O[M!]: lintian-output-letter source: dfsg-version-misspelled 1.0+dsfg-1.1
 O[P?]: lintian-output-letter: no-upstream-changelog
-P[P ]: lintian-output-letter: example-unusual-interpreter ./usr/share/doc/lintian-output-letter/examples/example #!/usr/bin/foo
+P[P ]: lintian-output-letter: example-unusual-interpreter usr/share/doc/lintian-output-letter/examples/example #!/usr/bin/foo
 P[P ]: lintian-output-letter: no-homepage-field
 P[P!]: lintian-output-letter source: debian-control-has-unusual-field-spacing line 11
 P[P!]: lintian-output-letter source: direct-changes-in-diff-but-no-patch-system Changes
diff --git a/t/tests/lintian-output-xml/tags b/t/tests/lintian-output-xml/tags
index 89802c7..68a4e97 100644
--- a/t/tests/lintian-output-xml/tags
+++ b/t/tests/lintian-output-xml/tags
@@ -12,7 +12,7 @@
 <tag severity="normal" certainty="wild-guess" flags="" name="desktop-entry-limited-to-environments">/usr/share/applications/script.desktop</tag>
 <tag severity="pedantic" certainty="certain" flags="" name="debian-control-has-unusual-field-spacing">line 11</tag>
 <tag severity="pedantic" certainty="certain" flags="" name="direct-changes-in-diff-but-no-patch-system">Changes</tag>
-<tag severity="pedantic" certainty="possible" flags="" name="example-unusual-interpreter">./usr/share/doc/lintian-output-xml/examples/example #!/usr/bin/foo</tag>
+<tag severity="pedantic" certainty="possible" flags="" name="example-unusual-interpreter">usr/share/doc/lintian-output-xml/examples/example #!/usr/bin/foo</tag>
 <tag severity="pedantic" certainty="possible" flags="" name="no-homepage-field"></tag>
 <tag severity="pedantic" certainty="wild-guess" flags="overridden" name="no-upstream-changelog"></tag>
 <tag severity="serious" certainty="certain" flags="" name="dir-in-usr-local">usr/local/share/</tag>
diff --git a/t/tests/menu-format-desktop-general/tags b/t/tests/menu-format-desktop-general/tags
index 3737c14..5b74f95 100644
--- a/t/tests/menu-format-desktop-general/tags
+++ b/t/tests/menu-format-desktop-general/tags
@@ -12,4 +12,4 @@ W: menu-format-desktop-general: desktop-entry-invalid-category Lintian /usr/shar
 W: menu-format-desktop-general: desktop-entry-lacks-main-category /usr/share/applications/general.desktop
 W: menu-format-desktop-general: desktop-entry-uses-reserved-category Screensaver /usr/share/applications/reserved-bad.desktop
 W: menu-format-desktop-general: duplicated-key-in-desktop-entry /usr/share/applications/general.desktop:3 Name
-W: menu-format-desktop-general: executable-not-elf-or-script ./usr/share/applications/general.desktop
+W: menu-format-desktop-general: executable-not-elf-or-script usr/share/applications/general.desktop
diff --git a/t/tests/scripts-calls-init-script/tags b/t/tests/scripts-calls-init-script/tags
index 0fb370b..cbd0b2d 100644
--- a/t/tests/scripts-calls-init-script/tags
+++ b/t/tests/scripts-calls-init-script/tags
@@ -1,2 +1,2 @@
 E: scripts-calls-init-script: maintainer-script-calls-init-script-directly postinst:5
-W: scripts-calls-init-script: script-calls-init-script-directly ./etc/cron.daily/bad:2
+W: scripts-calls-init-script: script-calls-init-script-directly etc/cron.daily/bad:2
diff --git a/t/tests/scripts-interpreters/tags b/t/tests/scripts-interpreters/tags
index 2eb747d..4db0275 100644
--- a/t/tests/scripts-interpreters/tags
+++ b/t/tests/scripts-interpreters/tags
@@ -1,18 +1,18 @@
-E: scripts-interpreters: interpreter-in-usr-local ./usr/bin/usr-local #!/usr/local/bin/special-perl
-E: scripts-interpreters: missing-dep-for-interpreter pike => pike7.6 | pike7.6-core | pike7.8 | pike7.8-core (./usr/bin/unversioned-pike)
-E: scripts-interpreters: missing-dep-for-interpreter pike7.6 => pike7.6 | pike7.6-core (./usr/bin/versioned-pike)
-E: scripts-interpreters: script-without-interpreter ./usr/bin/no-interpreter
-E: scripts-interpreters: shell-script-fails-syntax-check ./usr/bin/syntax
-E: scripts-interpreters: wrong-path-for-interpreter ./usr/bin/not-absolute (#!perl != /usr/bin/perl)
-E: scripts-interpreters: wrong-path-for-interpreter ./usr/bin/wrong-perl-path (#!/bin/perl != /usr/bin/perl)
-I: scripts-interpreters: example-interpreter-not-absolute ./usr/share/doc/scripts-interpreters/examples/not-absolute #!perl
-I: scripts-interpreters: example-script-uses-bin-env ./usr/share/doc/scripts-interpreters/examples/bin-env
-I: scripts-interpreters: example-script-without-interpreter ./usr/share/doc/scripts-interpreters/examples/no-interpreter
-I: scripts-interpreters: example-wrong-path-for-interpreter ./usr/share/doc/scripts-interpreters/examples/not-absolute (#!perl != /usr/bin/perl)
-I: scripts-interpreters: example-wrong-path-for-interpreter ./usr/share/doc/scripts-interpreters/examples/wrong-perl-path (#!/bin/perl != /usr/bin/perl)
-P: scripts-interpreters: example-interpreter-in-usr-local ./usr/share/doc/scripts-interpreters/examples/usr-local #!/usr/local/bin/special-perl
-P: scripts-interpreters: example-shell-script-fails-syntax-check ./usr/share/doc/scripts-interpreters/examples/syntax
-P: scripts-interpreters: example-unusual-interpreter ./usr/share/doc/scripts-interpreters/examples/unusual #!/usr/bin/lintian
-W: scripts-interpreters: interpreter-not-absolute ./usr/bin/not-absolute #!perl
-W: scripts-interpreters: script-uses-bin-env ./usr/bin/bin-env
-W: scripts-interpreters: unusual-interpreter ./usr/bin/unusual #!/usr/bin/lintian
+E: scripts-interpreters: interpreter-in-usr-local usr/bin/usr-local #!/usr/local/bin/special-perl
+E: scripts-interpreters: missing-dep-for-interpreter pike => pike7.6 | pike7.6-core | pike7.8 | pike7.8-core (usr/bin/unversioned-pike)
+E: scripts-interpreters: missing-dep-for-interpreter pike7.6 => pike7.6 | pike7.6-core (usr/bin/versioned-pike)
+E: scripts-interpreters: script-without-interpreter usr/bin/no-interpreter
+E: scripts-interpreters: shell-script-fails-syntax-check usr/bin/syntax
+E: scripts-interpreters: wrong-path-for-interpreter usr/bin/not-absolute (#!perl != /usr/bin/perl)
+E: scripts-interpreters: wrong-path-for-interpreter usr/bin/wrong-perl-path (#!/bin/perl != /usr/bin/perl)
+I: scripts-interpreters: example-interpreter-not-absolute usr/share/doc/scripts-interpreters/examples/not-absolute #!perl
+I: scripts-interpreters: example-script-uses-bin-env usr/share/doc/scripts-interpreters/examples/bin-env
+I: scripts-interpreters: example-script-without-interpreter usr/share/doc/scripts-interpreters/examples/no-interpreter
+I: scripts-interpreters: example-wrong-path-for-interpreter usr/share/doc/scripts-interpreters/examples/not-absolute (#!perl != /usr/bin/perl)
+I: scripts-interpreters: example-wrong-path-for-interpreter usr/share/doc/scripts-interpreters/examples/wrong-perl-path (#!/bin/perl != /usr/bin/perl)
+P: scripts-interpreters: example-interpreter-in-usr-local usr/share/doc/scripts-interpreters/examples/usr-local #!/usr/local/bin/special-perl
+P: scripts-interpreters: example-shell-script-fails-syntax-check usr/share/doc/scripts-interpreters/examples/syntax
+P: scripts-interpreters: example-unusual-interpreter usr/share/doc/scripts-interpreters/examples/unusual #!/usr/bin/lintian
+W: scripts-interpreters: interpreter-not-absolute usr/bin/not-absolute #!perl
+W: scripts-interpreters: script-uses-bin-env usr/bin/bin-env
+W: scripts-interpreters: unusual-interpreter usr/bin/unusual #!/usr/bin/lintian
diff --git a/t/tests/scripts-missing-dep/tags b/t/tests/scripts-missing-dep/tags
index 9299f1e..4564028 100644
--- a/t/tests/scripts-missing-dep/tags
+++ b/t/tests/scripts-missing-dep/tags
@@ -1,5 +1,5 @@
-E: scripts-missing-dep: gawk-script-but-no-gawk-dep ./usr/bin/gawk-script
-E: scripts-missing-dep: mawk-script-but-no-mawk-dep ./usr/bin/mawk-script
-E: scripts-missing-dep: ruby-script-but-no-ruby-dep ./usr/bin/ruby-script
-E: scripts-missing-dep: tclsh-script-but-no-tclsh-dep ./usr/bin/tclsh-script
-E: scripts-missing-dep: wish-script-but-no-wish-dep ./usr/bin/wish-script
+E: scripts-missing-dep: gawk-script-but-no-gawk-dep usr/bin/gawk-script
+E: scripts-missing-dep: mawk-script-but-no-mawk-dep usr/bin/mawk-script
+E: scripts-missing-dep: ruby-script-but-no-ruby-dep usr/bin/ruby-script
+E: scripts-missing-dep: tclsh-script-but-no-tclsh-dep usr/bin/tclsh-script
+E: scripts-missing-dep: wish-script-but-no-wish-dep usr/bin/wish-script
diff --git a/testset/tags.binary b/testset/tags.binary
index c206f69..27be48a 100644
--- a/testset/tags.binary
+++ b/testset/tags.binary
@@ -86,8 +86,8 @@ W: binary: desktop-entry-uses-reserved-category Screensaver /usr/share/applicati
 W: binary: doc-base-abstract-field-separator-extra-whitespaces binary:7
 W: binary: doc-base-file-unknown-format binary:20 esp
 W: binary: doc-base-unknown-section binary:11 Non/Existant
-W: binary: executable-not-elf-or-script ./usr/bin/iminusrbin
-W: binary: executable-not-elf-or-script ./usr/share/applications/goodbye.desktop
+W: binary: executable-not-elf-or-script usr/bin/iminusrbin
+W: binary: executable-not-elf-or-script usr/share/applications/goodbye.desktop
 W: binary: file-in-unusual-dir usr/bar
 W: binary: file-in-unusual-dir usr/bar2
 W: binary: file-in-unusual-dir usr/foo
diff --git a/testset/tags.filenames b/testset/tags.filenames
index a833f8e..7a23d67 100644
--- a/testset/tags.filenames
+++ b/testset/tags.filenames
@@ -80,8 +80,8 @@ W: filenames: embedded-javascript-library usr/share/filenames/prototype.js.gz
 W: filenames: embedded-javascript-library usr/share/filenames/scriptaculous.js
 W: filenames: embedded-javascript-library usr/share/filenames/yahoo-dom-event.js
 W: filenames: embedded-javascript-library usr/share/filenames/yahoo-min.js
-W: filenames: executable-not-elf-or-script ./usr/bin/bin/bad
-W: filenames: executable-not-elf-or-script ./usr/bin/mh/read
+W: filenames: executable-not-elf-or-script usr/bin/bin/bad
+W: filenames: executable-not-elf-or-script usr/bin/mh/read
 W: filenames: extra-license-file usr/share/pixmaps/COPYING
 W: filenames: extra-license-file usr/share/pixmaps/license.foo
 W: filenames: extra-license-file usr/share/pixmaps/license.txt
@@ -125,7 +125,7 @@ W: filenames: package-contains-vcs-control-file usr/lib/perl5/foo/.hgtags
 W: filenames: package-installs-into-etc-gconf-schemas etc/gconf/schemas/test.schema
 W: filenames: package-installs-nonbinary-perl-in-usr-lib-perl5 usr/lib/perl5/foo/ancient.pm
 W: filenames: package-installs-nonbinary-perl-in-usr-lib-perl5 usr/lib/perl5/foo/bar.pm
-W: filenames: script-not-executable ./files/feedparser.py
+W: filenames: script-not-executable files/feedparser.py
 W: filenames: svk-commit-file-in-package files/svk-commitsEr9P.tmp
 W: filenames: svn-commit-file-in-package files/svn-commit.tmp
 W: filenames: symlink-ends-with-slash usr/lib/filenames/symlink9wrong ../menu/something/
diff --git a/testset/tags.scripts b/testset/tags.scripts
index 8097482..051e9d6 100644
--- a/testset/tags.scripts
+++ b/testset/tags.scripts
@@ -2,24 +2,24 @@ E: scripts source: dpatch-index-references-non-existent-patch 01_not_here_right_
 E: scripts source: dpatch-index-references-non-existent-patch 01_some_other_patch_thats_not_in_the_package.dpatch
 E: scripts source: missing-build-dependency debhelper
 E: scripts source: package-uses-debhelper-but-lacks-build-depends
-E: scripts: calls-suidperl-directly ./usr/bin/suidperlfoo
+E: scripts: calls-suidperl-directly usr/bin/suidperlfoo
 E: scripts: copyright-file-lacks-pointer-to-perl-license
 E: scripts: duplicate-updaterc.d-calls-in-postrm lsb-other
 E: scripts: init.d-script-does-not-implement-required-option /etc/init.d/lsb-broken force-reload
 E: scripts: init.d-script-does-not-implement-required-option /etc/init.d/lsb-broken restart
 E: scripts: init.d-script-has-duplicate-lsb-section /etc/init.d/lsb-broken
 E: scripts: init.d-script-has-unterminated-lsb-section /etc/init.d/lsb-broken:15
-E: scripts: missing-dep-for-interpreter jruby => jruby | jruby1.0 | jruby1.1 | jruby1.2 (./usr/bin/jruby-broken)
-E: scripts: missing-dep-for-interpreter lefty => graphviz (./usr/bin/lefty-foo)
+E: scripts: missing-dep-for-interpreter jruby => jruby | jruby1.0 | jruby1.1 | jruby1.2 (usr/bin/jruby-broken)
+E: scripts: missing-dep-for-interpreter lefty => graphviz (usr/bin/lefty-foo)
 E: scripts: package-installs-python-pyc usr/lib/python2.3/site-packages/test.pyc
-E: scripts: php-script-but-no-phpX-cli-dep ./usr/share/scripts/php5foo
-E: scripts: php-script-but-no-phpX-cli-dep ./usr/share/scripts/phpfoo
-E: scripts: python-script-but-no-python-dep ./usr/bin/py2foo
-E: scripts: python-script-but-no-python-dep ./usr/bin/pyfoo
-E: scripts: shell-script-fails-syntax-check ./usr/bin/sh-broken
-E: scripts: suid-perl-script-but-no-perl-suid-dep ./usr/bin/suidperlfoo2
-E: scripts: wrong-path-for-interpreter ./usr/bin/lefty-foo (#!/usr/local/bin/lefty != /usr/bin/lefty)
-E: scripts: wrong-path-for-interpreter ./usr/bin/rubyfoo (#!/bin/ruby1.8 != /usr/bin/ruby1.8)
+E: scripts: php-script-but-no-phpX-cli-dep usr/share/scripts/php5foo
+E: scripts: php-script-but-no-phpX-cli-dep usr/share/scripts/phpfoo
+E: scripts: python-script-but-no-python-dep usr/bin/py2foo
+E: scripts: python-script-but-no-python-dep usr/bin/pyfoo
+E: scripts: shell-script-fails-syntax-check usr/bin/sh-broken
+E: scripts: suid-perl-script-but-no-perl-suid-dep usr/bin/suidperlfoo2
+E: scripts: wrong-path-for-interpreter usr/bin/lefty-foo (#!/usr/local/bin/lefty != /usr/bin/lefty)
+E: scripts: wrong-path-for-interpreter usr/bin/rubyfoo (#!/bin/ruby1.8 != /usr/bin/ruby1.8)
 E: scripts_6ds-1ubuntu0.5.10.1_arch changes: bad-ubuntu-distribution-in-changes-file unstable
 I: scripts source: debian-watch-file-should-dversionmangle-not-uversionmangle line 5
 I: scripts source: dpatch-missing-description 02_i_dont_have_a_description.patch
@@ -65,7 +65,7 @@ W: scripts: control-file-is-empty prerm
 W: scripts: executable-is-not-world-readable usr/bin/guile-bizarre 0705 != 0755
 W: scripts: executable-is-not-world-readable usr/bin/perl-bizarre-2 0750 != 0755
 W: scripts: executable-is-not-world-readable usr/bin/suidperlfoo2 4751
-W: scripts: executable-not-elf-or-script ./usr/bin/perl-bizarre-3
+W: scripts: executable-not-elf-or-script usr/bin/perl-bizarre-3
 W: scripts: init-d-script-stops-in-s-runlevel /etc/init.d/lsb-broken
 W: scripts: init-d-script-stops-in-s-runlevel /etc/init.d/skeleton
 W: scripts: init.d-script-has-bad-lsb-line /etc/init.d/lsb-broken:4
@@ -80,7 +80,7 @@ W: scripts: maintainer-script-empty preinst
 W: scripts: maintainer-script-ignores-errors postinst
 W: scripts: non-standard-executable-perm usr/bin/perl-bizarre-3 0754 != 0755
 W: scripts: non-standard-setuid-executable-perm usr/bin/suidperlfoo 4555
-W: scripts: script-uses-bin-env ./usr/bin/envfoo
+W: scripts: script-uses-bin-env usr/bin/envfoo
 W: scripts: script-with-language-extension usr/bin/test.sh
 W: scripts: setuid-binary usr/bin/suidperlfoo 4555 root/root
 W: scripts: setuid-binary usr/bin/suidperlfoo2 4751 root/root
-- 
1.7.2.3

>From 614661cb72f6295c4d41fa30000ad95fe19b32be Mon Sep 17 00:00:00 2001
From: Niels Thykier <niels@thykier.net>
Date: Mon, 17 Jan 2011 23:54:56 +0100
Subject: [PATCH 2/5] Removed the / prefix from filenames from the init.d check

---
 checks/init.d                           |   62 +++++++++++++++---------------
 t/tests/init.d-general/tags             |   12 +++---
 t/tests/init.d-lsb-headers/tags         |   46 +++++++++++-----------
 t/tests/init.d-script-registration/tags |    6 +-
 t/tests/init.d-symlink/tags             |    2 +-
 testset/tags.maintainer-scripts         |    8 ++--
 testset/tags.scripts                    |   32 ++++++++--------
 7 files changed, 84 insertions(+), 84 deletions(-)

diff --git a/checks/init.d b/checks/init.d
index 5fa6213..6a45031 100644
--- a/checks/init.d
+++ b/checks/init.d
@@ -142,11 +142,11 @@ for (keys %initd_postinst) {
     if ($initd_postrm{$_}) {
 	delete $initd_postrm{$_};
     } else {
-	tag "postrm-does-not-call-updaterc.d-for-init.d-script", "/etc/init.d/$_";
+	tag "postrm-does-not-call-updaterc.d-for-init.d-script", "etc/init.d/$_";
     }
 }
 for (keys %initd_postrm) {
-    tag "postrm-contains-additional-updaterc.d-calls", "/etc/init.d/$_";
+    tag "postrm-contains-additional-updaterc.d-calls", "etc/init.d/$_";
 }
 
 # load conffiles
@@ -170,7 +170,7 @@ for (keys %initd_postinst) {
     # init.d scripts have to be marked as conffiles unless they're symlinks.
     unless ($conffiles{"/etc/init.d/$_"} or $conffiles{"etc/init.d/$_"}
 	    or -l $initd_file) {
-	tag "init.d-script-not-marked-as-conffile", "/etc/init.d/$_";
+	tag "init.d-script-not-marked-as-conffile", "etc/init.d/$_";
     }
 
     # Check if file exists in package and check the script for other issues if
@@ -178,7 +178,7 @@ for (keys %initd_postinst) {
     if (-f $initd_file) {
 	check_init($initd_file);
     } elsif (not -l $initd_file) {
-	tag "init.d-script-not-included-in-package", "/etc/init.d/$_";
+	tag "init.d-script-not-included-in-package", "etc/init.d/$_";
     }
 }
 
@@ -193,7 +193,7 @@ for (readdir(INITD)) {
     # that we get more complete Lintian coverage in the first pass.
     unless ($initd_postinst{$script}) {
 	tag 'script-in-etc-init.d-not-registered-via-update-rc.d',
-	    "/etc/init.d/$script";
+	    "etc/init.d/$script";
 	check_init("init.d/$script") if -f "init.d/$script";
     }
 }
@@ -220,11 +220,11 @@ sub check_init {
     my %needs_fs = ('remote' => 0, 'local' => 0);
     while (defined(my $l = <IN>)) {
 	if ($. == 1 && $l =~ m,^\#!\s*(/usr/[^\s]+),) {
-	    tag "init.d-script-uses-usr-interpreter", "/etc/init.d/$_ $1";
+	    tag "init.d-script-uses-usr-interpreter", "etc/init.d/$_ $1";
 	}
 	if ($l =~ m/^\#\#\# BEGIN INIT INFO/) {
 	    if ($lsb{BEGIN}) {
-		tag "init.d-script-has-duplicate-lsb-section", "/etc/init.d/$_";
+		tag "init.d-script-has-duplicate-lsb-section", "etc/init.d/$_";
 		next;
 	    }
 	    $lsb{BEGIN} = 1;
@@ -237,14 +237,14 @@ sub check_init {
 		    $lsb{END} = 1;
 		    last;
 		} elsif ($l !~ /^\#/) {
-		    tag "init.d-script-has-unterminated-lsb-section", "/etc/init.d/$_:$.";
+		    tag "init.d-script-has-unterminated-lsb-section", "etc/init.d/$_:$.";
 		    last;
 		} elsif ($l =~ /^\# ([a-zA-Z-]+):\s*(.*?)\s*$/) {
 		    my $keyword = lc $1;
 		    my $value = $2;
-		    tag "init.d-script-has-duplicate-lsb-keyword", "/etc/init.d/$_:$. $keyword"
+		    tag "init.d-script-has-duplicate-lsb-keyword", "etc/init.d/$_:$. $keyword"
 			if (defined $lsb{$keyword});
-		    tag "init.d-script-has-unknown-lsb-keyword", "/etc/init.d/$_:$. $keyword"
+		    tag "init.d-script-has-unknown-lsb-keyword", "etc/init.d/$_:$. $keyword"
 			unless (defined ($lsb_keywords{$keyword}) || $keyword =~ /^x-/);
 		    $lsb{$keyword} = defined($value) ? $value : '';
 		    $last = $keyword;
@@ -253,7 +253,7 @@ sub check_init {
 		    $value =~ s/^\#\s*//;
 		    $lsb{description} .= ' ' . $value;
 		} else {
-		    tag "init.d-script-has-bad-lsb-line", "/etc/init.d/$_:$.";
+		    tag "init.d-script-has-bad-lsb-line", "etc/init.d/$_:$.";
 		}
 	    }
 	}
@@ -263,7 +263,7 @@ sub check_init {
 	$in_file_test = 1 if ($l =~ m/\bif\s+.*?(?:test|\[)(?:\s+\!)?\s+-[efr]\s+/);
 	$in_file_test = 0 if ($l =~ m/\bfi\b/);
 	if (!$in_file_test && $l =~ m,^\s*\.\s+["'"]?(/etc/default/[\$\w/-]+),) {
-	    tag "init.d-script-sourcing-without-test", "/etc/init.d/$_:$. $1";
+	    tag "init.d-script-sourcing-without-test", "etc/init.d/$_:$. $1";
 	}
 
 	# This should be more sophisticated: ignore heredocs, ignore quoted
@@ -279,14 +279,14 @@ sub check_init {
 
     # Make sure all of the required keywords are present.
     if (not $lsb{BEGIN}) {
-	tag "init.d-script-missing-lsb-section", "/etc/init.d/$_";
+	tag "init.d-script-missing-lsb-section", "etc/init.d/$_";
     } else {
 	for my $keyword (keys %lsb_keywords) {
 	    if ($lsb_keywords{$keyword} && !defined $lsb{$keyword}) {
 		if ($keyword eq 'short-description') {
-		    tag "init.d-script-missing-lsb-short-description", "/etc/init.d/$_";
+		    tag "init.d-script-missing-lsb-short-description", "etc/init.d/$_";
 		} else {
-		    tag "init.d-script-missing-lsb-keyword", "/etc/init.d/$_ $keyword";
+		    tag "init.d-script-missing-lsb-keyword", "etc/init.d/$_ $keyword";
 		}
 	    }
 	}
@@ -300,10 +300,10 @@ sub check_init {
 		$start{lc $runlevel} = 1;
 		if ($runlevel eq '0' or $runlevel eq '6') {
 		    tag 'init.d-script-starts-in-stop-runlevel',
-			"/etc/init.d/$_", $runlevel;
+			"etc/init.d/$_", $runlevel;
 		}
 	    } else {
-		tag 'init.d-script-has-bad-start-runlevel', "/etc/init.d/$_",
+		tag 'init.d-script-has-bad-start-runlevel', "etc/init.d/$_",
 		    $runlevel;
 	    }
 	}
@@ -315,7 +315,7 @@ sub check_init {
 	    my $base = $initd_file;
 	    $base =~ s,.*/,,;
 	    my @missing = grep { !defined $start{$_} } qw(2 3 4 5);
-	    tag 'init.d-script-missing-start', "/etc/init.d/$_",
+	    tag 'init.d-script-missing-start', "etc/init.d/$_",
 		@missing;
 	}
     }
@@ -325,13 +325,13 @@ sub check_init {
 	    if ($runlevel =~ /^[sS0-6]$/) {
 		$stop{$runlevel} = 1 unless $runlevel =~ /[sS2-5]/;
 		if ($start{$runlevel}) {
-		    tag "init.d-script-has-conflicting-start-stop", "/etc/init.d/$_ $runlevel";
+		    tag "init.d-script-has-conflicting-start-stop", "etc/init.d/$_ $runlevel";
 		}
 		if ($runlevel =~ /[sS]/) {
-		    tag "init-d-script-stops-in-s-runlevel", "/etc/init.d/$_";
+		    tag "init-d-script-stops-in-s-runlevel", "etc/init.d/$_";
 		}
 	    } else {
-		tag "init.d-script-has-bad-stop-runlevel", "/etc/init.d/$_ $runlevel";
+		tag "init.d-script-has-bad-stop-runlevel", "etc/init.d/$_ $runlevel";
 	    }
 	}
 
@@ -343,7 +343,7 @@ sub check_init {
 	    $base =~ s,.*/,,;
 	    unless (grep { $base eq $_ } qw(killprocs sendsigs halt reboot)) {
 		my @missing = grep { !defined $stop{$_} } qw(0 1 6);
-		tag 'init.d-script-possible-missing-stop', "/etc/init.d/$_",
+		tag 'init.d-script-possible-missing-stop', "etc/init.d/$_",
 		    @missing;
 	    }
 	}
@@ -353,13 +353,13 @@ sub check_init {
 	for my $facility (split(/\s+/, $lsb{'provides'})) {
 	    if ($facility =~ /^\$/) {
 		tag 'init.d-script-provides-virtual-facility',
-		    "/etc/init.d/$_", $facility;
+		    "etc/init.d/$_", $facility;
 	    }
 	    if (/^\Q$facility\E(?:.sh)?$/) {
 		$provides_self = 1;
 	    }
 	}
-	tag 'init.d-script-does-not-provide-itself', "/etc/init.d/$_"
+	tag 'init.d-script-does-not-provide-itself', "etc/init.d/$_"
 	    unless $provides_self;
     }
 
@@ -375,13 +375,13 @@ sub check_init {
 	if ($needs_fs{remote}) {
 	    unless (grep { /^\$(?:remote_fs|all)\z/ } @required) {
 		tag 'init.d-script-missing-dependency-on-remote_fs',
-		    "/etc/init.d/$_: required-start";
+		    "etc/init.d/$_: required-start";
 	    }
 	}
 	if ($needs_fs{local}) {
 	    unless (grep { /^\$(?:local_fs|remote_fs|all)\z/ } @required) {
 		tag 'init.d-script-missing-dependency-on-local_fs',
-		    "/etc/init.d/$_: required-start";
+		    "etc/init.d/$_: required-start";
 	    }
 	}
     }
@@ -390,13 +390,13 @@ sub check_init {
 	if ($needs_fs{remote}) {
 	    unless (grep { /^(?:\$remote_fs|\$all|umountnfs)\z/ } @required) {
 		tag 'init.d-script-missing-dependency-on-remote_fs',
-		    "/etc/init.d/$_: required-stop";
+		    "etc/init.d/$_: required-stop";
 	    }
 	}
 	if ($needs_fs{local}) {
 	    unless (grep { /^(?:\$(?:local|remote)_fs|\$all|umountn?fs)\z/ } @required) {
 		tag 'init.d-script-missing-dependency-on-local_fs',
-		    "/etc/init.d/$_: required-stop";
+		    "etc/init.d/$_: required-stop";
 	    }
 	}
     }
@@ -407,11 +407,11 @@ sub check_init {
 	for my $dependency (split(/\s+/, $lsb{$keyword})) {
 	    if (defined $implied_dependencies{$dependency}) {
 		tag 'init.d-script-should-depend-on-virtual-facility',
-		    "/etc/init.d/$_",
+		    "etc/init.d/$_",
 		    "$dependency -> $implied_dependencies{$dependency}";
 	    } elsif ($keyword =~ m/^required-/ && $dependency =~ m/^\$/) {
 		tag "init.d-script-depends-on-unknown-virtual-facility",
-		    "/etc/init.d/$_", "$dependency"
+		    "etc/init.d/$_", "$dependency"
 		    unless ($VIRTUAL_FACILITIES->known($dependency));
 	    }
 	}
@@ -420,7 +420,7 @@ sub check_init {
     # all tags included in file?
     for my $option qw(start stop restart force-reload) {
 	$tag{$option}
-	    or tag "init.d-script-does-not-implement-required-option", "/etc/init.d/$_ $option";
+	    or tag "init.d-script-does-not-implement-required-option", "etc/init.d/$_ $option";
     }
 }
 
diff --git a/t/tests/init.d-general/tags b/t/tests/init.d-general/tags
index 44d4adc..bcd6a06 100644
--- a/t/tests/init.d-general/tags
+++ b/t/tests/init.d-general/tags
@@ -1,6 +1,6 @@
-E: init.d-general-bugs: init.d-script-does-not-implement-required-option /etc/init.d/init.d-general-bugs force-reload
-E: init.d-general-bugs: init.d-script-does-not-implement-required-option /etc/init.d/init.d-general-bugs restart
-E: init.d-general-bugs: init.d-script-does-not-implement-required-option /etc/init.d/init.d-general-bugs start
-E: init.d-general-bugs: init.d-script-does-not-implement-required-option /etc/init.d/init.d-general-bugs stop
-E: init.d-general-sourcing-without-test: init.d-script-sourcing-without-test /etc/init.d/init.d-general-sourcing-without-test:15 /etc/default/rcS
-W: init.d-general-interpreter-in-usr-dir: init.d-script-uses-usr-interpreter /etc/init.d/init.d-general-interpreter-in-usr-dir /usr/bin/perl
+E: init.d-general-bugs: init.d-script-does-not-implement-required-option etc/init.d/init.d-general-bugs force-reload
+E: init.d-general-bugs: init.d-script-does-not-implement-required-option etc/init.d/init.d-general-bugs restart
+E: init.d-general-bugs: init.d-script-does-not-implement-required-option etc/init.d/init.d-general-bugs start
+E: init.d-general-bugs: init.d-script-does-not-implement-required-option etc/init.d/init.d-general-bugs stop
+E: init.d-general-sourcing-without-test: init.d-script-sourcing-without-test etc/init.d/init.d-general-sourcing-without-test:15 /etc/default/rcS
+W: init.d-general-interpreter-in-usr-dir: init.d-script-uses-usr-interpreter etc/init.d/init.d-general-interpreter-in-usr-dir /usr/bin/perl
diff --git a/t/tests/init.d-lsb-headers/tags b/t/tests/init.d-lsb-headers/tags
index 9b1b266..98f60a0 100644
--- a/t/tests/init.d-lsb-headers/tags
+++ b/t/tests/init.d-lsb-headers/tags
@@ -1,23 +1,23 @@
-E: init.d-lsb-headers-local: init.d-script-missing-dependency-on-local_fs /etc/init.d/init.d-lsb-headers-local: required-start
-E: init.d-lsb-headers-remote: init.d-script-missing-dependency-on-remote_fs /etc/init.d/init.d-lsb-headers-remote: required-start
-E: init.d-lsb-headers-virtual: init.d-script-depends-on-unknown-virtual-facility /etc/init.d/init.d-lsb-headers-virtual $something_that_doesnt_exist
-E: init.d-lsb-headers: init.d-script-should-depend-on-virtual-facility /etc/init.d/init.d-lsb-headers mountall -> $local_fs
-E: init.d-lsb-headers: init.d-script-should-depend-on-virtual-facility /etc/init.d/init.d-lsb-headers mountnfs -> $remote_fs
-E: init.d-lsb-headers: init.d-script-should-depend-on-virtual-facility /etc/init.d/init.d-lsb-headers networking -> $network
-E: init.d-lsb-headers: init.d-script-should-depend-on-virtual-facility /etc/init.d/init.d-lsb-headers portmap -> $portmap
-E: init.d-lsb-headers: init.d-script-should-depend-on-virtual-facility /etc/init.d/init.d-lsb-headers sysklogd -> $syslog
-I: init.d-lsb-headers: init.d-script-does-not-provide-itself /etc/init.d/init.d-lsb-headers
-W: init.d-lsb-headers-missing: init.d-script-missing-start /etc/init.d/init.d-lsb-headers-missing 4
-W: init.d-lsb-headers-missing: init.d-script-possible-missing-stop /etc/init.d/init.d-lsb-headers-missing 1
-W: init.d-lsb-headers-parsing: init.d-script-has-conflicting-start-stop /etc/init.d/init.d-lsb-headers-parsing 0
-W: init.d-lsb-headers-parsing: init.d-script-possible-missing-stop /etc/init.d/init.d-lsb-headers-parsing 1 6
-W: init.d-lsb-headers-parsing: init.d-script-starts-in-stop-runlevel /etc/init.d/init.d-lsb-headers-parsing 0
-W: init.d-lsb-headers: init-d-script-stops-in-s-runlevel /etc/init.d/init.d-lsb-headers
-W: init.d-lsb-headers: init.d-script-has-bad-start-runlevel /etc/init.d/init.d-lsb-headers X
-W: init.d-lsb-headers: init.d-script-has-bad-stop-runlevel /etc/init.d/init.d-lsb-headers Y
-W: init.d-lsb-headers: init.d-script-has-conflicting-start-stop /etc/init.d/init.d-lsb-headers 0
-W: init.d-lsb-headers: init.d-script-has-conflicting-start-stop /etc/init.d/init.d-lsb-headers 6
-W: init.d-lsb-headers: init.d-script-possible-missing-stop /etc/init.d/init.d-lsb-headers 1
-W: init.d-lsb-headers: init.d-script-provides-virtual-facility /etc/init.d/init.d-lsb-headers $bad_facility
-W: init.d-lsb-headers: init.d-script-starts-in-stop-runlevel /etc/init.d/init.d-lsb-headers 0
-W: init.d-lsb-headers: init.d-script-starts-in-stop-runlevel /etc/init.d/init.d-lsb-headers 6
+E: init.d-lsb-headers-local: init.d-script-missing-dependency-on-local_fs etc/init.d/init.d-lsb-headers-local: required-start
+E: init.d-lsb-headers-remote: init.d-script-missing-dependency-on-remote_fs etc/init.d/init.d-lsb-headers-remote: required-start
+E: init.d-lsb-headers-virtual: init.d-script-depends-on-unknown-virtual-facility etc/init.d/init.d-lsb-headers-virtual $something_that_doesnt_exist
+E: init.d-lsb-headers: init.d-script-should-depend-on-virtual-facility etc/init.d/init.d-lsb-headers mountall -> $local_fs
+E: init.d-lsb-headers: init.d-script-should-depend-on-virtual-facility etc/init.d/init.d-lsb-headers mountnfs -> $remote_fs
+E: init.d-lsb-headers: init.d-script-should-depend-on-virtual-facility etc/init.d/init.d-lsb-headers networking -> $network
+E: init.d-lsb-headers: init.d-script-should-depend-on-virtual-facility etc/init.d/init.d-lsb-headers portmap -> $portmap
+E: init.d-lsb-headers: init.d-script-should-depend-on-virtual-facility etc/init.d/init.d-lsb-headers sysklogd -> $syslog
+I: init.d-lsb-headers: init.d-script-does-not-provide-itself etc/init.d/init.d-lsb-headers
+W: init.d-lsb-headers-missing: init.d-script-missing-start etc/init.d/init.d-lsb-headers-missing 4
+W: init.d-lsb-headers-missing: init.d-script-possible-missing-stop etc/init.d/init.d-lsb-headers-missing 1
+W: init.d-lsb-headers-parsing: init.d-script-has-conflicting-start-stop etc/init.d/init.d-lsb-headers-parsing 0
+W: init.d-lsb-headers-parsing: init.d-script-possible-missing-stop etc/init.d/init.d-lsb-headers-parsing 1 6
+W: init.d-lsb-headers-parsing: init.d-script-starts-in-stop-runlevel etc/init.d/init.d-lsb-headers-parsing 0
+W: init.d-lsb-headers: init-d-script-stops-in-s-runlevel etc/init.d/init.d-lsb-headers
+W: init.d-lsb-headers: init.d-script-has-bad-start-runlevel etc/init.d/init.d-lsb-headers X
+W: init.d-lsb-headers: init.d-script-has-bad-stop-runlevel etc/init.d/init.d-lsb-headers Y
+W: init.d-lsb-headers: init.d-script-has-conflicting-start-stop etc/init.d/init.d-lsb-headers 0
+W: init.d-lsb-headers: init.d-script-has-conflicting-start-stop etc/init.d/init.d-lsb-headers 6
+W: init.d-lsb-headers: init.d-script-possible-missing-stop etc/init.d/init.d-lsb-headers 1
+W: init.d-lsb-headers: init.d-script-provides-virtual-facility etc/init.d/init.d-lsb-headers $bad_facility
+W: init.d-lsb-headers: init.d-script-starts-in-stop-runlevel etc/init.d/init.d-lsb-headers 0
+W: init.d-lsb-headers: init.d-script-starts-in-stop-runlevel etc/init.d/init.d-lsb-headers 6
diff --git a/t/tests/init.d-script-registration/tags b/t/tests/init.d-script-registration/tags
index 2d7d26c..5e4d5fd 100644
--- a/t/tests/init.d-script-registration/tags
+++ b/t/tests/init.d-script-registration/tags
@@ -1,3 +1,3 @@
-W: init.d-script-registration: init.d-script-missing-lsb-section /etc/init.d/foo.in
-W: init.d-script-registration: script-in-etc-init.d-not-registered-via-update-rc.d /etc/init.d/bar
-W: init.d-script-registration: script-in-etc-init.d-not-registered-via-update-rc.d /etc/init.d/foo.in
+W: init.d-script-registration: init.d-script-missing-lsb-section etc/init.d/foo.in
+W: init.d-script-registration: script-in-etc-init.d-not-registered-via-update-rc.d etc/init.d/bar
+W: init.d-script-registration: script-in-etc-init.d-not-registered-via-update-rc.d etc/init.d/foo.in
diff --git a/t/tests/init.d-symlink/tags b/t/tests/init.d-symlink/tags
index 68a0c34..e37d7fb 100644
--- a/t/tests/init.d-symlink/tags
+++ b/t/tests/init.d-symlink/tags
@@ -1 +1 @@
-W: init.d-symlink: script-in-etc-init.d-not-registered-via-update-rc.d /etc/init.d/lintian-unreg
+W: init.d-symlink: script-in-etc-init.d-not-registered-via-update-rc.d etc/init.d/lintian-unreg
diff --git a/testset/tags.maintainer-scripts b/testset/tags.maintainer-scripts
index f02e8dc..6783b02 100644
--- a/testset/tags.maintainer-scripts
+++ b/testset/tags.maintainer-scripts
@@ -5,7 +5,7 @@ E: maintainer-scripts: control-file-has-bad-permissions config 0644 != 0755
 E: maintainer-scripts: debconf-config-not-executable
 E: maintainer-scripts: debian-changelog-file-contains-invalid-email-address jeroen@mordor
 E: maintainer-scripts: forbidden-config-interpreter #!/usr/bin/python
-E: maintainer-scripts: init.d-script-not-included-in-package /etc/init.d/foo
+E: maintainer-scripts: init.d-script-not-included-in-package etc/init.d/foo
 E: maintainer-scripts: install-sgmlcatalog-deprecated postinst:100
 E: maintainer-scripts: install-sgmlcatalog-deprecated postrm:47
 E: maintainer-scripts: maintainer-script-calls-init-script-directly prerm:55
@@ -21,8 +21,8 @@ E: maintainer-scripts: maintainer-script-uses-dpkg-status-directly postinst
 E: maintainer-scripts: maintainer-script-uses-dpkg-status-directly preinst
 E: maintainer-scripts: maintainer-shell-script-fails-syntax-check prerm
 E: maintainer-scripts: no-copyright-file
-E: maintainer-scripts: postrm-contains-additional-updaterc.d-calls /etc/init.d/bar
-E: maintainer-scripts: postrm-does-not-call-updaterc.d-for-init.d-script /etc/init.d/foo
+E: maintainer-scripts: postrm-contains-additional-updaterc.d-calls etc/init.d/bar
+E: maintainer-scripts: postrm-does-not-call-updaterc.d-for-init.d-script etc/init.d/foo
 E: maintainer-scripts: preinst-calls-updaterc.d bar
 E: maintainer-scripts: prerm-calls-updaterc.d foo
 E: maintainer-scripts: read-in-maintainer-script postinst:20
@@ -60,7 +60,7 @@ W: maintainer-scripts: config-does-not-load-confmodule
 W: maintainer-scripts: deprecated-chown-usage postinst:167 'chown -R root.root'
 W: maintainer-scripts: deprecated-chown-usage postinst:35 'chown root.root'
 W: maintainer-scripts: gconftool-used-in-maintainer-script postinst:70
-W: maintainer-scripts: init.d-script-not-marked-as-conffile /etc/init.d/foo
+W: maintainer-scripts: init.d-script-not-marked-as-conffile etc/init.d/foo
 W: maintainer-scripts: install-info-used-in-maintainer-script postinst:28
 W: maintainer-scripts: maintainer-script-calls-deprecated-wm-menu-config postinst:33
 W: maintainer-scripts: maintainer-script-empty config
diff --git a/testset/tags.scripts b/testset/tags.scripts
index 051e9d6..0c52ad5 100644
--- a/testset/tags.scripts
+++ b/testset/tags.scripts
@@ -5,10 +5,10 @@ E: scripts source: package-uses-debhelper-but-lacks-build-depends
 E: scripts: calls-suidperl-directly usr/bin/suidperlfoo
 E: scripts: copyright-file-lacks-pointer-to-perl-license
 E: scripts: duplicate-updaterc.d-calls-in-postrm lsb-other
-E: scripts: init.d-script-does-not-implement-required-option /etc/init.d/lsb-broken force-reload
-E: scripts: init.d-script-does-not-implement-required-option /etc/init.d/lsb-broken restart
-E: scripts: init.d-script-has-duplicate-lsb-section /etc/init.d/lsb-broken
-E: scripts: init.d-script-has-unterminated-lsb-section /etc/init.d/lsb-broken:15
+E: scripts: init.d-script-does-not-implement-required-option etc/init.d/lsb-broken force-reload
+E: scripts: init.d-script-does-not-implement-required-option etc/init.d/lsb-broken restart
+E: scripts: init.d-script-has-duplicate-lsb-section etc/init.d/lsb-broken
+E: scripts: init.d-script-has-unterminated-lsb-section etc/init.d/lsb-broken:15
 E: scripts: missing-dep-for-interpreter jruby => jruby | jruby1.0 | jruby1.1 | jruby1.2 (usr/bin/jruby-broken)
 E: scripts: missing-dep-for-interpreter lefty => graphviz (usr/bin/lefty-foo)
 E: scripts: package-installs-python-pyc usr/lib/python2.3/site-packages/test.pyc
@@ -25,8 +25,8 @@ I: scripts source: debian-watch-file-should-dversionmangle-not-uversionmangle li
 I: scripts source: dpatch-missing-description 02_i_dont_have_a_description.patch
 I: scripts source: dpatch-missing-description 04_i_dont_have_a_description_either.patch
 I: scripts source: missing-debian-source-format
-I: scripts: init.d-script-does-not-provide-itself /etc/init.d/lsb-broken
-I: scripts: init.d-script-missing-lsb-short-description /etc/init.d/lsb-other
+I: scripts: init.d-script-does-not-provide-itself etc/init.d/lsb-broken
+I: scripts: init.d-script-missing-lsb-short-description etc/init.d/lsb-other
 I: scripts: no-md5sums-control-file
 I: scripts: script-in-usr-share-doc usr/share/doc/scripts/py2foo
 I: scripts: script-in-usr-share-doc usr/share/doc/scripts/rubyfoo
@@ -66,16 +66,16 @@ W: scripts: executable-is-not-world-readable usr/bin/guile-bizarre 0705 != 0755
 W: scripts: executable-is-not-world-readable usr/bin/perl-bizarre-2 0750 != 0755
 W: scripts: executable-is-not-world-readable usr/bin/suidperlfoo2 4751
 W: scripts: executable-not-elf-or-script usr/bin/perl-bizarre-3
-W: scripts: init-d-script-stops-in-s-runlevel /etc/init.d/lsb-broken
-W: scripts: init-d-script-stops-in-s-runlevel /etc/init.d/skeleton
-W: scripts: init.d-script-has-bad-lsb-line /etc/init.d/lsb-broken:4
-W: scripts: init.d-script-has-bad-lsb-line /etc/init.d/lsb-broken:9
-W: scripts: init.d-script-has-bad-stop-runlevel /etc/init.d/lsb-broken X
-W: scripts: init.d-script-has-conflicting-start-stop /etc/init.d/lsb-broken 1
-W: scripts: init.d-script-has-unknown-lsb-keyword /etc/init.d/lsb-broken:14 foo
-W: scripts: init.d-script-missing-lsb-keyword /etc/init.d/lsb-broken required-start
-W: scripts: init.d-script-missing-lsb-section /etc/init.d/no-lsb
-W: scripts: init.d-script-not-marked-as-conffile /etc/init.d/skeleton
+W: scripts: init-d-script-stops-in-s-runlevel etc/init.d/lsb-broken
+W: scripts: init-d-script-stops-in-s-runlevel etc/init.d/skeleton
+W: scripts: init.d-script-has-bad-lsb-line etc/init.d/lsb-broken:4
+W: scripts: init.d-script-has-bad-lsb-line etc/init.d/lsb-broken:9
+W: scripts: init.d-script-has-bad-stop-runlevel etc/init.d/lsb-broken X
+W: scripts: init.d-script-has-conflicting-start-stop etc/init.d/lsb-broken 1
+W: scripts: init.d-script-has-unknown-lsb-keyword etc/init.d/lsb-broken:14 foo
+W: scripts: init.d-script-missing-lsb-keyword etc/init.d/lsb-broken required-start
+W: scripts: init.d-script-missing-lsb-section etc/init.d/no-lsb
+W: scripts: init.d-script-not-marked-as-conffile etc/init.d/skeleton
 W: scripts: maintainer-script-empty preinst
 W: scripts: maintainer-script-ignores-errors postinst
 W: scripts: non-standard-executable-perm usr/bin/perl-bizarre-3 0754 != 0755
-- 
1.7.2.3

>From 0a90642b6fd4eaeeadb8bf0876bd20d7764817b4 Mon Sep 17 00:00:00 2001
From: Niels Thykier <niels@thykier.net>
Date: Tue, 18 Jan 2011 00:17:53 +0100
Subject: [PATCH 3/5] Removed the / prefix from output of the conffiles check

---
 checks/conffiles               |   13 +++++++------
 t/tests/conffiles-general/tags |    6 +++---
 testset/tags.etcfiles          |    2 +-
 3 files changed, 11 insertions(+), 10 deletions(-)

diff --git a/checks/conffiles b/checks/conffiles
index 7e43522..d0e47a4 100644
--- a/checks/conffiles
+++ b/checks/conffiles
@@ -46,18 +46,19 @@ while (<IN>) {
 	tag "relative-conffile", $_;
 	$_ = '/' . $_;
     }
+    my $file = $_;
+    $file =~ s@^/++@@o;
+    $conffiles{$file}++;
 
-    $conffiles{$_}++;
-
-    if ($conffiles{$_} > 1) {
-	tag "duplicate-conffile", $_;
+    if ($conffiles{$file} > 1) {
+	tag "duplicate-conffile", $file;
     }
 
     if (m,^/usr/,) {
-	tag "file-in-usr-marked-as-conffile", $_;
+	tag "file-in-usr-marked-as-conffile", $file;
     } else {
 	unless (m,^/etc/,) {
-	    tag "non-etc-file-marked-as-conffile", $_;
+	    tag "non-etc-file-marked-as-conffile", $file;
 	}
     }
 
diff --git a/t/tests/conffiles-general/tags b/t/tests/conffiles-general/tags
index 9f7dc60..ce92674 100644
--- a/t/tests/conffiles-general/tags
+++ b/t/tests/conffiles-general/tags
@@ -1,4 +1,4 @@
-E: conffiles-general: duplicate-conffile /etc/foo
-E: conffiles-general: file-in-usr-marked-as-conffile /usr/share/foo
-E: conffiles-general: non-etc-file-marked-as-conffile /var/cache/foo
+E: conffiles-general: duplicate-conffile etc/foo
+E: conffiles-general: file-in-usr-marked-as-conffile usr/share/foo
+E: conffiles-general: non-etc-file-marked-as-conffile var/cache/foo
 E: conffiles-general: relative-conffile etc/foo
diff --git a/testset/tags.etcfiles b/testset/tags.etcfiles
index 7875f92..1a77b2d 100644
--- a/testset/tags.etcfiles
+++ b/testset/tags.etcfiles
@@ -7,7 +7,7 @@ E: etcfiles: malformed-md5sums-control-file line 7
 E: etcfiles: md5sum-mismatch etc/improper
 E: etcfiles: md5sums-lists-nonexisting-file usr/bin/foo
 E: etcfiles: no-copyright-file
-E: etcfiles: non-etc-file-marked-as-conffile /var/lib/foo
+E: etcfiles: non-etc-file-marked-as-conffile var/lib/foo
 E: only-etcfiles: extended-description-is-empty
 I: etcfiles source: missing-debian-source-format
 W: etcfiles source: ancient-standards-version 3.5.0 (current is 3.9.1)
-- 
1.7.2.3

>From c7fd2146ac19823919775cf70e0a3ea097b03a4f Mon Sep 17 00:00:00 2001
From: Niels Thykier <niels@thykier.net>
Date: Tue, 18 Jan 2011 00:21:57 +0100
Subject: [PATCH 4/5] Removed the / prefix from filenames emitted by the etcfiles check

---
 checks/etcfiles                      |    2 +-
 t/tests/etcfiles-etc-not-marked/tags |    2 +-
 testset/tags.etcfiles                |    4 ++--
 testset/tags.filenames               |    2 +-
 4 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/checks/etcfiles b/checks/etcfiles
index 9a734b1..d7e0c55 100644
--- a/checks/etcfiles
+++ b/checks/etcfiles
@@ -55,7 +55,7 @@ foreach my $file (@{$info->sorted_index}) {
 	and $file ne 'etc/init.d/skeleton'
 	and $file ne 'etc/init.d/rc'
 	and $file ne 'etc/init.d/rcS') {
-	tag "file-in-etc-not-marked-as-conffile", "/$file";
+	tag "file-in-etc-not-marked-as-conffile", "$file";
     }
 }
 
diff --git a/t/tests/etcfiles-etc-not-marked/tags b/t/tests/etcfiles-etc-not-marked/tags
index 172788d..22d97ce 100644
--- a/t/tests/etcfiles-etc-not-marked/tags
+++ b/t/tests/etcfiles-etc-not-marked/tags
@@ -1 +1 @@
-E: etcfiles-etc-not-marked: file-in-etc-not-marked-as-conffile /etc/something.conf
+E: etcfiles-etc-not-marked: file-in-etc-not-marked-as-conffile etc/something.conf
diff --git a/testset/tags.etcfiles b/testset/tags.etcfiles
index 1a77b2d..1a4325b 100644
--- a/testset/tags.etcfiles
+++ b/testset/tags.etcfiles
@@ -1,8 +1,8 @@
 E: etcfiles source: debian-rules-missing-required-target binary-arch
 E: etcfiles source: not-binnmuable-all-depends-any only-etcfiles -> etcfiles
 E: etcfiles: changelog-file-not-compressed changelog
-E: etcfiles: file-in-etc-not-marked-as-conffile /etc/improper
-E: etcfiles: file-in-etc-not-marked-as-conffile /etc/improper-link
+E: etcfiles: file-in-etc-not-marked-as-conffile etc/improper
+E: etcfiles: file-in-etc-not-marked-as-conffile etc/improper-link
 E: etcfiles: malformed-md5sums-control-file line 7
 E: etcfiles: md5sum-mismatch etc/improper
 E: etcfiles: md5sums-lists-nonexisting-file usr/bin/foo
diff --git a/testset/tags.filenames b/testset/tags.filenames
index 7a23d67..9df0968 100644
--- a/testset/tags.filenames
+++ b/testset/tags.filenames
@@ -7,7 +7,7 @@ E: filenames: dir-or-file-in-opt opt/foo/bar
 E: filenames: dir-or-file-in-srv srv/foo/
 E: filenames: dir-or-file-in-srv srv/foo/bar
 E: filenames: dir-or-file-in-var-www var/www/foo
-E: filenames: file-in-etc-not-marked-as-conffile /etc/gconf/schemas/test.schema
+E: filenames: file-in-etc-not-marked-as-conffile etc/gconf/schemas/test.schema
 E: filenames: lengthy-symlink usr/lib/filenames/symlink4wrong ../filenames/symlink2
 E: filenames: lengthy-symlink usr/share/doc/filenames/version.txt.gz ../filenames/doc/version6.txt.gz
 E: filenames: no-copyright-file
-- 
1.7.2.3

>From 0f51486d6ec148dbcae636a0ad822fe2de4a0e68 Mon Sep 17 00:00:00 2001
From: Niels Thykier <niels@thykier.net>
Date: Tue, 18 Jan 2011 01:50:08 +0100
Subject: [PATCH 5/5] Removing ./ prefix from binaries check output

---
 checks/binaries                       |   29 +++++++++++++----------------
 t/tests/binaries-embedded-libs/tags   |   20 ++++++++++----------
 t/tests/binaries-from-other-arch/tags |    6 +++---
 t/tests/binaries-general/tags         |   12 ++++++------
 t/tests/binaries-misplaced/tags       |    4 ++--
 t/tests/binaries-spelling/tags        |    4 ++--
 testset/tags.binary                   |    6 +++---
 testset/tags.debug                    |   12 ++++++------
 testset/tags.libbaz                   |   12 ++++++------
 9 files changed, 51 insertions(+), 54 deletions(-)

diff --git a/checks/binaries b/checks/binaries
index de894cb..85e018c 100644
--- a/checks/binaries
+++ b/checks/binaries
@@ -104,7 +104,6 @@ $arch = $info->field('architecture');
 
 foreach my $file (sort keys %{$info->objdump_info}) {
     my $objdump = $info->objdump_info->{$file};
-    $file = './' . $file;
 
     if (defined $objdump->{SONAME}) {
 	foreach my $soname (@{$objdump->{SONAME}}) {
@@ -133,7 +132,7 @@ foreach my $file (sort keys %{$info->objdump_info}) {
 	} elsif ($_ eq 'Packed with UPX') {
 	    tag "binary-file-compressed-with-upx", "$file";
 	} elsif ($_ eq 'Invalid operation') {
-	    tag "binary-with-bad-dynamic-table", "$file" unless $file =~ m%^\./usr/lib/debug/%;
+	    tag "binary-with-bad-dynamic-table", "$file" unless $file =~ m%^usr/lib/debug/%;
 	}
     }
 }
@@ -199,8 +198,6 @@ foreach my $file (@{$info->sorted_file_info}) {
     my $fileinfo = $info->file_info->{$file};
     my $objdump = $info->objdump_info->{$file};
 
-    $file = './' . $file;
-
     # binary or object file?
     next unless ($fileinfo =~ m/^[^,]*\bELF\b/) or ($fileinfo =~ m/\bcurrent ar archive\b/);
 
@@ -208,7 +205,7 @@ foreach my $file (@{$info->sorted_file_info}) {
     # only if those libraries aren't installed in a multiarch directory.  The
     # package may be a support package for cross-compiles.
     if ($arch eq 'all') {
-	my ($arch) = ($file =~ m,^\./(?:usr/)?lib/([^/]+)/,);
+	my ($arch) = ($file =~ m,^(?:usr/)?lib/([^/]+)/,);
 	$multiarch = Lintian::Data->new('binaries/multiarch')
 	    unless defined($multiarch);
 	unless ($arch and $multiarch->known($arch)) {
@@ -219,11 +216,11 @@ foreach my $file (@{$info->sorted_file_info}) {
     # ELF?
     next unless $fileinfo =~ m/^[^,]*\bELF\b/o;
 
-    if ($file =~ m,^\./etc/,) {
+    if ($file =~ m,^etc/,) {
 	tag "binary-in-etc", "$file";
     }
 
-    if ($file =~ m,^\./usr/share/,) {
+    if ($file =~ m,^usr/share/,) {
 	tag "arch-dependent-file-in-usr-share", "$file";
     }
 
@@ -325,24 +322,24 @@ foreach my $file (@{$info->sorted_file_info}) {
     next if $type eq 'udeb';
 
     # Perl library?
-    if ($file =~ m,^\./usr/lib/perl5/.*\.so$,) {
+    if ($file =~ m,^usr/lib/perl5/.*\.so$,) {
 	$has_perl_lib = 1;
     }
 
     # PHP extension?
-    if ($file =~ m,^\./usr/lib/php\d/.*\.so$,) {
+    if ($file =~ m,^usr/lib/php\d/.*\.so$,) {
 	$has_php_ext = 1;
     }
 
     # Something other than detached debugging symbols in /usr/lib/debug paths.
-    if ($file =~ m,^\./usr/lib/debug/(?:lib\d*|s?bin|usr|opt|dev|emul)/,) {
+    if ($file =~ m,^usr/lib/debug/(?:lib\d*|s?bin|usr|opt|dev|emul)/,) {
 	if (exists($objdump->{NEEDED})) {
 	    tag "debug-file-should-use-detached-symbols", $file;
 	}
     }
 
     # Detached debugging symbols directly in /usr/lib/debug.
-    if ($file =~ m,^\./usr/lib/debug/[^/]+$,) {
+    if ($file =~ m,^usr/lib/debug/[^/]+$,) {
 	unless (exists($objdump->{NEEDED})
 	    || $fileinfo =~ m/statically linked/) {
 	    tag "debug-symbols-directly-in-usr-lib-debug", $file;
@@ -354,21 +351,21 @@ foreach my $file (@{$info->sorted_file_info}) {
 	if ($fileinfo =~ m/shared object/o) {
             # Some exceptions: detached debugging information and the dynamic
             # loader (which itself has no dependencies).
-            next if ($file =~ m%^\./usr/lib/debug/%);
-            next if ($file =~ m%^\./lib(?:|32|64)/(?:[\w/]+/)?ld-[\d.]+\.so$%);
+            next if ($file =~ m%^usr/lib/debug/%);
+            next if ($file =~ m%^lib(?:|32|64)/(?:[\w/]+/)?ld-[\d.]+\.so$%);
 	    tag "shared-lib-without-dependency-information", "$file";
 	} else {
 	    # Some exceptions: files in /boot, /usr/lib/debug/*, named *-static or
 	    # *.static, or *-static as package-name.
-	    next if ($file =~ m%^./boot/%);
+	    next if ($file =~ m%^boot/%);
 	    next if ($file =~ /(?:\.|-)static$/);
 	    next if ($pkg =~ /-static$/);
 	    # klibc binaries appear to be static.
 	    next if ($objdump->{KLIBC});
 	    # Location of debugging symbols.
-	    next if ($file =~ m%^./usr/lib/debug/%);
+	    next if ($file =~ m%^usr/lib/debug/%);
 	    # ldconfig must be static.
-	    next if ($file eq './sbin/ldconfig');
+	    next if ($file eq 'sbin/ldconfig');
 	    tag "statically-linked-binary", "$file";
 	}
     } else {
diff --git a/t/tests/binaries-embedded-libs/tags b/t/tests/binaries-embedded-libs/tags
index afc98e3..8d03637 100644
--- a/t/tests/binaries-embedded-libs/tags
+++ b/t/tests/binaries-embedded-libs/tags
@@ -1,10 +1,10 @@
-E: binaries-embedded-libs: embedded-libjpeg ./usr/bin/libjpeg
-E: binaries-embedded-libs: embedded-libopenjpeg ./usr/bin/libopenjpeg
-E: binaries-embedded-libs: embedded-libpng ./usr/bin/libpng
-E: binaries-embedded-libs: embedded-library ./usr/bin/libbz2: bzip2
-E: binaries-embedded-libs: embedded-library ./usr/bin/libexpat: expat
-E: binaries-embedded-libs: embedded-library ./usr/bin/libmagic: file
-E: binaries-embedded-libs: embedded-library ./usr/bin/libpcre3: pcre3
-E: binaries-embedded-libs: embedded-library ./usr/bin/libtiff: tiff
-E: binaries-embedded-libs: embedded-library ./usr/bin/libxml2: libxml2
-E: binaries-embedded-libs: embedded-zlib ./usr/bin/zlib
+E: binaries-embedded-libs: embedded-libjpeg usr/bin/libjpeg
+E: binaries-embedded-libs: embedded-libopenjpeg usr/bin/libopenjpeg
+E: binaries-embedded-libs: embedded-libpng usr/bin/libpng
+E: binaries-embedded-libs: embedded-library usr/bin/libbz2: bzip2
+E: binaries-embedded-libs: embedded-library usr/bin/libexpat: expat
+E: binaries-embedded-libs: embedded-library usr/bin/libmagic: file
+E: binaries-embedded-libs: embedded-library usr/bin/libpcre3: pcre3
+E: binaries-embedded-libs: embedded-library usr/bin/libtiff: tiff
+E: binaries-embedded-libs: embedded-library usr/bin/libxml2: libxml2
+E: binaries-embedded-libs: embedded-zlib usr/bin/zlib
diff --git a/t/tests/binaries-from-other-arch/tags b/t/tests/binaries-from-other-arch/tags
index e6749bd..bf69c46 100644
--- a/t/tests/binaries-from-other-arch/tags
+++ b/t/tests/binaries-from-other-arch/tags
@@ -1,4 +1,4 @@
-E: binaries-from-other-arch: binary-from-other-architecture ./usr/bin/elfobject
-E: binaries-from-other-arch: statically-linked-binary ./usr/bin/elfobject
-W: binaries-from-other-arch: apparently-truncated-elf-binary ./usr/bin/elfobject
+E: binaries-from-other-arch: binary-from-other-architecture usr/bin/elfobject
+E: binaries-from-other-arch: statically-linked-binary usr/bin/elfobject
+W: binaries-from-other-arch: apparently-truncated-elf-binary usr/bin/elfobject
 W: binaries-from-other-arch: binary-without-manpage usr/bin/elfobject
diff --git a/t/tests/binaries-general/tags b/t/tests/binaries-general/tags
index c61dcf9..f090942 100644
--- a/t/tests/binaries-general/tags
+++ b/t/tests/binaries-general/tags
@@ -1,7 +1,7 @@
-E: binaries-general: arch-dependent-file-in-usr-share ./usr/share/foo/basic
-E: binaries-general: binary-or-shlib-defines-rpath ./usr/lib/foo/basiclibrpath /usr/lib
-E: binaries-general: binary-or-shlib-defines-rpath ./usr/share/foo/basic /usr/local/lib
-E: binaries-general: debug-symbols-directly-in-usr-lib-debug ./usr/lib/debug/basic
-E: binaries-general: library-in-debug-or-profile-should-not-be-stripped ./usr/lib/debug/usr/share/foo/basic
-W: binaries-general: binary-compiled-with-profiling-enabled ./usr/share/foo/basic
+E: binaries-general: arch-dependent-file-in-usr-share usr/share/foo/basic
+E: binaries-general: binary-or-shlib-defines-rpath usr/lib/foo/basiclibrpath /usr/lib
+E: binaries-general: binary-or-shlib-defines-rpath usr/share/foo/basic /usr/local/lib
+E: binaries-general: debug-symbols-directly-in-usr-lib-debug usr/lib/debug/basic
+E: binaries-general: library-in-debug-or-profile-should-not-be-stripped usr/lib/debug/usr/share/foo/basic
+W: binaries-general: binary-compiled-with-profiling-enabled usr/share/foo/basic
 W: binaries-general: debug-package-should-be-named-dbg usr/lib/debug/basic
diff --git a/t/tests/binaries-misplaced/tags b/t/tests/binaries-misplaced/tags
index ca65c7d..6e4d962 100644
--- a/t/tests/binaries-misplaced/tags
+++ b/t/tests/binaries-misplaced/tags
@@ -1,2 +1,2 @@
-E: binaries-misplaced: arch-independent-package-contains-binary-or-object ./etc/foo
-E: binaries-misplaced: binary-in-etc ./etc/foo
+E: binaries-misplaced: arch-independent-package-contains-binary-or-object etc/foo
+E: binaries-misplaced: binary-in-etc etc/foo
diff --git a/t/tests/binaries-spelling/tags b/t/tests/binaries-spelling/tags
index 2eb64a3..e55fe90 100644
--- a/t/tests/binaries-spelling/tags
+++ b/t/tests/binaries-spelling/tags
@@ -1,3 +1,3 @@
-I: binaries-spelling: spelling-error-in-binary ./usr/bin/basic exprimental experimental
-I: binaries-spelling: spelling-error-in-binary ./usr/bin/basic speling spelling
+I: binaries-spelling: spelling-error-in-binary usr/bin/basic exprimental experimental
+I: binaries-spelling: spelling-error-in-binary usr/bin/basic speling spelling
 W: binaries-spelling: binary-without-manpage usr/bin/basic
diff --git a/testset/tags.binary b/testset/tags.binary
index 27be48a..86c1486 100644
--- a/testset/tags.binary
+++ b/testset/tags.binary
@@ -40,20 +40,20 @@ E: binary: non-wm-module-in-wm-modules-menu-section wm /usr/share/menu/binary:22
 E: binary: possible-gpl-code-linked-with-openssl
 E: binary: postinst-does-not-call-updatemenus usr/share/menu/binary
 E: binary: postrm-does-not-call-updatemenus etc/menu-methods/lintian
-E: binary: statically-linked-binary ./usr/bin/static-hello
+E: binary: statically-linked-binary usr/bin/static-hello
 E: binary: su-wrapper-without--c /usr/lib/menu/binary:2 su-to-root
 E: binary: su-wrapper-without--c /usr/lib/menu/binary:3 sux
 E: binary: su-wrapper-without--c /usr/share/menu/binary:2 su-to-root
 E: binary: su-wrapper-without--c /usr/share/menu/binary:3 sux
 E: binary: suidregister-used-in-maintainer-script postinst
 E: binary: symlink-contains-spurious-segments usr/share/doc/binary/html/ch2.html ../html/./ch1.html
-E: binary: unstripped-binary-or-object ./usr/bin/hello
+E: binary: unstripped-binary-or-object usr/bin/hello
 I: binary source: binary-control-field-duplicates-source field "vcs-svn" in package binary
 I: binary source: missing-debian-source-format
 I: binary source: xs-vcs-header-in-debian-control xs-vcs-browser
 I: binary-data: capitalization-error-in-description subversion Subversion
 I: binary: arch-dep-package-has-big-usr-share
-I: binary: binary-has-unneeded-section ./usr/bin/hello-static .comment
+I: binary: binary-has-unneeded-section usr/bin/hello-static .comment
 I: binary: capitalization-error-in-description debian Debian
 I: binary: desktop-entry-contains-encoding-key /usr/share/applications/goodbye.desktop:11 Encoding
 I: binary: desktop-entry-contains-encoding-key /usr/share/applications/hello.desktop:13 Encoding
diff --git a/testset/tags.debug b/testset/tags.debug
index c98d2f3..8f4ee1d 100644
--- a/testset/tags.debug
+++ b/testset/tags.debug
@@ -2,10 +2,10 @@ E: debug source: build-depends-indep-without-arch-indep
 E: debug source: version-substvar-for-external-package libhello0-dbg -> libhello
 E: hello-dbg: changelog-file-missing-in-native-package
 E: hello: pkg-has-symbols-control-file-but-no-shared-libs
-E: hello: statically-linked-binary ./usr/bin/hello.dbg
-E: hello: unstripped-binary-or-object ./usr/bin/hello.dbg
-E: libhello0-dbg: binary-with-bad-dynamic-table ./usr/lib/libhello.so.dbg
-E: libhello0-dbg: missing-dependency-on-libc needed by ./usr/lib/debug/lib/libhello.so.0.0 and 1 others
+E: hello: statically-linked-binary usr/bin/hello.dbg
+E: hello: unstripped-binary-or-object usr/bin/hello.dbg
+E: libhello0-dbg: binary-with-bad-dynamic-table usr/lib/libhello.so.dbg
+E: libhello0-dbg: missing-dependency-on-libc needed by usr/lib/debug/lib/libhello.so.0.0 and 1 others
 E: libhello0-dbg: sharedobject-in-library-directory-missing-soname usr/lib/libhello.so.dbg
 E: libhello0: duplicate-entry-in-symbols-control-file libhello 0
 E: libhello0: invalid-template-id-in-symbols-file 12
@@ -34,9 +34,9 @@ W: hello: binary-without-manpage usr/bin/hello
 W: hello: binary-without-manpage usr/bin/hello.dbg
 W: hello: latest-debian-changelog-entry-without-new-version
 W: hi-dbg: latest-debian-changelog-entry-without-new-version
-W: libhello0-dbg: debug-file-should-use-detached-symbols ./usr/lib/debug/lib/libhello.so.0.0
+W: libhello0-dbg: debug-file-should-use-detached-symbols usr/lib/debug/lib/libhello.so.0.0
 W: libhello0-dbg: latest-debian-changelog-entry-without-new-version
-W: libhello0-dbg: shared-lib-without-dependency-information ./usr/lib/libhello.so.dbg
+W: libhello0-dbg: shared-lib-without-dependency-information usr/lib/libhello.so.dbg
 W: libhello0: latest-debian-changelog-entry-without-new-version
 W: libhello0: symbols-declares-dependency-on-other-package foobar (= 1.2)
 W: libhello0: symbols-declares-dependency-on-other-package hello-dbg
diff --git a/testset/tags.libbaz b/testset/tags.libbaz
index 63c4bc1..ea6e01c 100644
--- a/testset/tags.libbaz
+++ b/testset/tags.libbaz
@@ -1,6 +1,6 @@
 E: libbaz source: not-binnmuable-any-depends-any libbaz1-dev -> libbaz1
 E: libbaz source: weak-library-dev-dependency libbaz1-dev on libbaz1 (= ${source:Version})
-E: libbaz1-dev: missing-dependency-on-libc needed by ./usr/lib/perl5/auto/Foo/Foo.so
+E: libbaz1-dev: missing-dependency-on-libc needed by usr/lib/perl5/auto/Foo/Foo.so
 E: libbaz1: control-file-has-bad-permissions shlibs 0755 != 0644
 E: libbaz1: control-file-has-bad-permissions symbols 0755 != 0644
 E: libbaz1: debian-changelog-file-missing-or-wrong-name
@@ -18,19 +18,19 @@ E: libbaz1: shlib-with-executable-bit usr/lib/libfoo2.so.1.0.3b 0755
 E: libbaz1: shlib-with-non-pic-code usr/lib/libbaz3.so.1.0.3b
 E: libbaz1: symbols-declared-but-not-shlib libbaz 2
 E: libbaz1: symbols-file-contains-current-version-with-debian-revision on symbol pw
-E: libbaz1: unstripped-binary-or-object ./usr/lib/libbaz1.so.1.0.3b
-E: libbaz1: unstripped-binary-or-object ./usr/lib/libbaz3.so.1.0.3b
-E: libbaz1: unstripped-binary-or-object ./usr/lib/libfoo2.so.1.0.3b
+E: libbaz1: unstripped-binary-or-object usr/lib/libbaz1.so.1.0.3b
+E: libbaz1: unstripped-binary-or-object usr/lib/libbaz3.so.1.0.3b
+E: libbaz1: unstripped-binary-or-object usr/lib/libfoo2.so.1.0.3b
 E: libbaz2-dbg: debian-changelog-file-missing
 E: libbaz2-dev: changelog-file-not-compressed changelog
 E: libbaz2-dev: debian-changelog-file-missing-or-wrong-name
 E: libbaz2: debian-changelog-file-missing-or-wrong-name
 I: ia32-libbaz2: no-symbols-control-file usr/lib/i486-linux-gnu/libbaz2.so.1.0.3b
 I: libbaz source: missing-debian-source-format
-I: libbaz1-dev: binary-has-unneeded-section ./usr/lib/perl5/auto/Foo/Foo.so .comment
+I: libbaz1-dev: binary-has-unneeded-section usr/lib/perl5/auto/Foo/Foo.so .comment
 I: libbaz1-dev: no-md5sums-control-file
 I: libbaz1-dev: package-contains-empty-directory usr/include/
-I: libbaz1: binary-has-unneeded-section ./usr/lib/perl5/auto/Foo/Foo.so .comment
+I: libbaz1: binary-has-unneeded-section usr/lib/perl5/auto/Foo/Foo.so .comment
 I: libbaz1: no-md5sums-control-file
 I: libbaz2-dbg: no-md5sums-control-file
 I: libbaz2-dev: no-md5sums-control-file
-- 
1.7.2.3

Attachment: 0001-Remove-the-.-prefix-in-filenames-from-scripts-output.patch.sig
Description: Binary data

Attachment: 0002-Removed-the-prefix-from-filenames-from-the-init.d-ch.patch.sig
Description: Binary data

Attachment: 0003-Removed-the-prefix-from-output-of-the-conffiles-chec.patch.sig
Description: Binary data

Attachment: 0004-Removed-the-prefix-from-filenames-emitted-by-the-etc.patch.sig
Description: Binary data

Attachment: 0005-Removing-.-prefix-from-binaries-check-output.patch.sig
Description: Binary data


Reply to: