X-Git-Url: https://git.donarmstrong.com/?p=bugscan.git;a=blobdiff_plain;f=scanlib.pm;h=4b828a3711c6229e86958c6ac21460e7a4995410;hp=03347cf076d1a4f94d74f77009353de25cd2fe5b;hb=342acf15c7b4c41f134874051613ef1b3becf956;hpb=81492565ed00b61b3a4a41dc2ceb96a0590c525d diff --git a/scanlib.pm b/scanlib.pm index 03347cf..4b828a3 100644 --- a/scanlib.pm +++ b/scanlib.pm @@ -10,16 +10,22 @@ # %section - map from packagename to section in the FTP-site # %packagelist - map from packagename to bugreports +use warnings; +use strict; + use lib qw(/org/bugs.debian.org/perl); use LWP::UserAgent; use Debbugs::MIME qw(decode_rfc1522 encode_rfc1522); use Debbugs::Packages; use Debbugs::Versions; use Debbugs::Status; +use IO::Uncompress::AnyUncompress; use Fcntl qw(O_RDONLY); -use strict; -use warnings; -require bugcfg; + +use File::Basename; +use lib dirname(__FILE__); +use bugcfg; + package scanlib; our (%maintainer,%section,%packagelist,%debbugssection,%bugs); @@ -45,24 +51,27 @@ sub readmaintainers() { close(M); } +sub glob_compressed_fh { + my ($fn) = @_; + $fn = (grep { -f $_ } glob $fn)[0]; + my $fh = IO::Uncompress::AnyUncompress->new($fn) or + die "Unable to open $fn for reading: $!"; + return $fh; +} -sub readsources() { - my $root; # Root of archive we are scanning - my $archive; # Name of archive we are scanning - my $sect; # Name of current section - $root=shift; - $archive=shift; - for $sect (@bugcfg::sections) { - open(P, "zcat $root/$sect/source/Sources.gz|") - or die open "open: $sect sourcelist: $!\n"; - while (

) { +sub readsources { + my ($root,$archive) = @_; + + for my $sect (@bugcfg::sections) { + my $p = glob_compressed_fh("$root/$sect/source/Sources.*"); + while (<$p>) { chomp; next unless m/^Package:\s/; s/^Package:\s*//; # Strip the fieldname $section{$_} = "$archive/$sect"; } - close (P); + close ($p); } } @@ -70,23 +79,20 @@ sub readpackages { my ($root,$archive) = @_; for my $arch ( @bugcfg::architectures ) { for my $sect ( @bugcfg::sections) { - open(P, "zcat $root/$sect/binary-$arch/Packages.gz|") - or die "open: $root/$sect/binary-$arch/Packages.gz: $!\n"; - while (

) { + my $p = glob_compressed_fh("$root/$sect/binary-$arch/Packages.*"); + while (<$p>) { chomp; next unless m/^Package:\s/; # We're only interested in the packagenames s/^Package:\s*//; # Strip the fieldname $section{$_} = "$archive/$sect"; print "$root/$sect/binary-$arch/Packages.gz\n" if ($_ eq 'xtla'); } - close(P); + close($p); } } # handle the source packages for my $sect (@bugcfg::sections) { - my $fh; - open($fh,'-|','zcat',"$root/$sect/source/Sources.gz") or - die "Unable to open zcat $root/$sect/source/Sources.gz for reading: $!"; + my $fh = glob_compressed_fh("$root/$sect/source/Sources.*"); while (<$fh>) { chomp; next unless m/^Package:\s/; # We're only interested in the packagenames @@ -96,12 +102,9 @@ sub readpackages { } } -sub readdebbugssources() { - my $file; - my $archive; +sub readdebbugssources { + my ($file,$archive) = @_; - $file=shift; - $archive=shift; open(P, $file) or die "open: $file: $!\n"; while (

) { @@ -309,14 +312,14 @@ sub htmlsanit { return $in; } -sub wwwnumber() { +sub wwwnumber { my $number = shift; # Number of bug to html-ize "' . htmlsanit($number) . ''; } -sub wwwname() { +sub wwwname { my $name = shift; # Name of package "{'testing'} && !$bi->{$bugcfg::debian_releases->{testing}.'-ignore'}); + return ($bi->{$dist} && !$bi->{$bugcfg::debian_releases->{$dist}.'-ignore'}); } +sub check_worry_testing { + return check_worry($_[0],'testing'); +} sub check_worry_stable { - my ($bi) = @_; - - return ($bi->{'stable'} && !$bi->{$bugcfg::debian_releases->{stable}.'-ignore'}); + return check_worry($_[0],'stable'); +} +sub check_worry_oldstable { + return check_worry($_[0],'oldstable'); } sub check_worry_unstable {