# %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 Debbugs::Common qw(open_compressed_file);
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);
close(M);
}
+sub glob_compressed_fh {
+ my ($fn) = @_;
+ my @fn = grep { -f $_ } glob $fn;
+ if (not @fn) {
+ die "No files exist which match glob '$fn'";
+ }
+ my $fh = Debbugs::Common::open_compressed_file($fn[0]) 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
+sub readsources {
+ my ($root,$archive) = @_;
- $root=shift;
- $archive=shift;
- for $sect (@bugcfg::sections) {
- open(P, "zcat $root/$sect/source/Sources.gz|")
- or die open "open: $sect sourcelist: $!\n";
- while (<P>) {
+ 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);
}
}
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 (<P>) {
+ 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
}
}
-sub readdebbugssources() {
- my $file;
- my $archive;
+sub readdebbugssources {
+ my ($file,$archive) = @_;
- $file=shift;
- $archive=shift;
open(P, $file)
or die "open: $file: $!\n";
while (<P>) {
return $in;
}
-sub wwwnumber() {
+sub wwwnumber {
my $number = shift; # Number of bug to html-ize
"<A HREF=\"http://bugs.debian.org/cgi-bin/bugreport.cgi?archive=no&bug=" .
urlsanit($number) . '">' . htmlsanit($number) . '</A>';
}
-sub wwwname() {
+sub wwwname {
my $name = shift; # Name of package
"<A HREF=\"http://bugs.debian.org/cgi-bin/pkgreport.cgi?archive=no&pkg=" .
}
sub check_worry {
- my ($bi) = @_;
+ my ($bi,$dist) = @_;
+ $dist = 'testing' if not defined $dist;
- return ($bi->{'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 {