Adding side stream changes to Maemian. Working to integrate full upstream libraries...
[maemian] / nokia-lintian / frontend / lintian-info
diff --git a/nokia-lintian/frontend/lintian-info b/nokia-lintian/frontend/lintian-info
new file mode 100755 (executable)
index 0000000..7d6cb8d
--- /dev/null
@@ -0,0 +1,107 @@
+#!/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