- $file=shift;
- open(P, $file) or die "open $file: $!";
- while (<P>) {
- chomp;
- if (m/^[0-9]+ \[/) {
- ($bug,$subject)=split(/ /, $_, 2);
- $bugs{$bug}=$subject;
- push @{$packagelist{$pkg}}, $bug;
- } else {
- ($pkg,$sect, $mnt)=split(/ /, $_, 3);
- next if (!defined($pkg));
- $section{$pkg}=$sect;
- $maintainer{$pkg}=$mnt;
+ while (1) {
+ chomp (my $type = <STATUS>);
+ if ($type eq 'package') {
+ chomp (my $package = <STATUS>);
+ chomp (my $section = <STATUS>);
+ chomp (my $maintainer = <STATUS>);
+ my $blank = <STATUS>;
+
+ $section{$package} = $section;
+ $maintainer{$package} = $maintainer;
+ }
+ if ($type eq 'bug') {
+ my $bug = {};
+ while (1) {
+ my $line = <STATUS>;
+ last if ($line !~ /^(.*?)=(.*)$/);
+
+ $bug->{$1} = $2;
+ }
+ $bugs{$bug->{'number'}} = $bug;
+
+ for my $package (split /[,\s]+/, $bug->{'package'}) {
+ $_= $package; y/A-Z/a-z/; $_= $` if m/[^-+._:a-z0-9]/;
+ push @{$packagelist{$_}}, $bug->{'number'};
+ }