# Copyright 2006 by Willi Mann <willi@wm1.at> ########################################################################### # $Id: dpkg,v 1.6 2008/12/08 15:21:28 mike Exp $ ########################################################################### # $Log: dpkg,v $ # Revision 1.6 2008/12/08 15:21:28 mike # Patch from Nathan Crawford re-install lines -mgt # # Revision 1.5 2008/08/18 15:56:52 mike # More ignore options - configure startup trigproc. From Debian Lenny patches -mgt # # Revision 1.4 2008/06/30 23:07:51 kirk # fixed copyright holders for files where I know who they should be # # Revision 1.3 2008/03/24 23:31:26 kirk # added copyright/license notice to each script # # Revision 1.2 2007/02/16 04:15:52 bjorn # Using default license for Logwatch, per Willi Mann. # # Revision 1.1 2006/12/15 04:39:22 bjorn # New dpkg scripts, by Willi Mann. # ########################################################################### ######################################################## ## Copyright (c) 2008 Willi Mann ## Covered under the included MIT/X-Consortium License: ## http://www.opensource.org/licenses/mit-license.php ## All modifications and contributions by other persons to ## this script are assumed to have been donated to the ## Logwatch project and thus assume the above copyright ## and licensing terms. If you want to make contributions ## under your own copyright or a different license this ## must be explicitly stated in the contribution an the ## Logwatch project reserves the right to not accept such ## contributions. If you have made significant ## contributions to this script and want to claim ## copyright please contact logwatch-devel@lists.sourceforge.net. ######################################################### use strict; my @install; my @reinstall; my @upgrade; my @remove; my @purge; my @conffile; my @unknown; while(my $line=<STDIN>) { chomp $line; if ( my ( $do, $pkg, $ver1, $ver2) = ( $line =~ /^\S+ \S+ (install|upgrade|remove|purge) (\S+) (\S+)(?: (\S+))?/ )) { if(($do eq "remove" or $do eq "purge") and ($ver1 ne $ver2)) { push @unknown, $line; } elsif ($do eq "remove") { push @remove, "$pkg $ver1"; } elsif ( $do eq "purge") { push @purge, "$pkg $ver1"; } elsif ($ver1 =~ /[<>]/) { push @install, "$pkg $ver2"; } elsif ($ver1 eq $ver2) { push @reinstall, "$pkg $ver1"; } else { push @upgrade, "$pkg $ver1 => $ver2"; } } elsif ( $line =~ /^\S+ \S+ conffile / ) { my ( $conffilename, $action ) = ( $line =~ /^\S+ \S+ conffile (\S+) (\S+)/ ); push @conffile, "$action $conffilename"; } elsif ( $line =~ /^\S+ \S+ (status|configure|startup|trigproc) / ) { #ignore } else { push @unknown, $line; } } my @k = ( "Installed" , \@install, "Reinstalled" , \@reinstall, "Upgraded" , \@upgrade, "Removed", \@remove, "Purged", \@purge, "Configuration files", \@conffile, "Unknown lines", \@unknown); while (@k > 0) { my $text = shift @k; my $array = shift @k; if(@$array) { print "\n$text:\n"; foreach my $line (sort @$array) { print " $line\n"; } } } # vi: shiftwidth=3 tabstop=3 syntax=perl et # Local Variables: # mode: perl # perl-indent-level: 3 # indent-tabs-mode: nil # End: