--- /dev/null
+#!/usr/bin/perl -w
+#
+# lintian-info -- transform lintian tags into descriptive text
+#
+# Copyright (C) 1998 Christian Schwarz and Richard Braakman
+#
+# This program is free software. It is distributed under the terms of
+# the GNU General Public License as published by the Free Software
+# Foundation; either version 2 of the License, or (at your option) any
+# later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, you can find it on the World Wide
+# Web at http://www.gnu.org/copyleft/gpl.html, or write to the Free
+# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+# MA 02110-1301, USA.
+
+use strict;
+
+use Getopt::Long;
+
+# turn file buffering off:
+$| = 1;
+
+BEGIN {
+ # determine LINTIAN_ROOT
+ my $LINTIAN_ROOT = $ENV{'LINTIAN_ROOT'} || '/usr/share/lintian';
+ $ENV{'LINTIAN_ROOT'} = $LINTIAN_ROOT
+ unless exists $ENV{'LINTIAN_ROOT'};
+}
+
+# import perl libraries
+use lib "$ENV{'LINTIAN_ROOT'}/lib";
+use Read_taginfo;
+
+my %already_displayed = ();
+
+my %tag_info = %{read_tag_info()};
+
+my ($annotate, $tags);
+Getopt::Long::config('bundling', 'no_getopt_compat', 'no_auto_abbrev');
+GetOptions('annotate|a' => \$annotate, 'tags|t' => \$tags)
+ or die("error parsing options\n");
+
+# If tag mode was specified, read the arguments as tags and display the
+# descriptions for each one. (We don't currently display the severity,
+# although that would be nice.)
+my $unknown;
+if ($tags) {
+ for my $tag (@ARGV) {
+ print "N: $tag\n";
+ print "N:\n";
+ if (exists $tag_info{$tag}) {
+ print wrap_paragraphs('N: ', $tag_info{$tag});
+ } else {
+ print "N: Unknown tag.\n";
+ $unknown = 1;
+ }
+ print "N:\n";
+ }
+ exit ($unknown ? 1 : 0);
+}
+
+# Otherwise, read input files or STDIN, watch for tags, and add descriptions
+# whenever we see one, can, and haven't already explained that tag. Strip off
+# color and HTML sequences.
+while (<>) {
+ print;
+ chomp;
+ next if /^\s*$/;
+ s/\e[\[\d;]*m//g;
+ s/<span style=\"[^\"]+\">//g;
+ s,</span>,,g;
+
+ my ($type, $pkg);
+ my @pieces = split(/:\s+/);
+ if ($annotate) {
+ $type = shift @pieces if ($pieces[0] =~ /^\w$/);
+ $pkg = shift @pieces if ($pieces[0] =~ /^\S+( (binary|udeb))?$/);
+ } else {
+ $type = shift @pieces;
+ $pkg = shift @pieces;
+ }
+ if ($annotate or (defined $type and $type =~ m/^[OEWIX]$/)) {
+ my $tag = shift @pieces;
+ next if not defined $tag;
+ ($tag) = split(/\s+/, $tag, 2);
+
+ next if not exists $tag_info{$tag} or $already_displayed{$tag}++;
+ print "N:\n";
+ print wrap_paragraphs('N: ',$tag_info{$tag});
+ print "N:\n";
+ }
+}
+
+exit 0;
+
+# Local Variables:
+# indent-tabs-mode: t
+# cperl-indent-level: 4
+# End:
+# vim: syntax=perl sw=4 ts=8