#!/usr/bin/perl
-# $Id: summary.in,v 1.2 1999/09/02 22:27:29 gecko Exp $
+# $Id: summary.in,v 1.10 2003/08/23 15:12:57 cjwatson Exp $
+
+$config_path = '/etc/debbugs';
+$lib_path = '/usr/lib/debbugs';
+
+require("$config_path/config");
+require("$lib_path/errorlib");
+$ENV{'PATH'} = $lib_path.':'.$ENV{'PATH'};
-require('/etc/debbugs/config');
-require('/usr/lib/debbugs/errorlib');
chdir("$gSpoolDir") || die "chdir spool: $!\n";
#open(DEBUG,">&4");
$maintainer{$a}= $b;
}
close(M);
+open(M,"$gMaintainerFileOverride") || &quit("open $gMaintainerFileOverride: $!");
+while (<M>) {
+ m/^(\S+)\s+(\S.*\S)\s*$/ || warn "$_ ?";
+ ($a,$b)=($1,$2);
+ $a =~ y/A-Z/a-z/;
+ $maintainer{$a}= $b;
+}
+close(M);
+
defined($startdate= time) || &quit("failed to get time: $!");
-opendir(DIR,"db") || &quit("opendir db: $!\n");
-@list= grep(m/^\d+\.status$/,readdir(DIR));
-grep(s/\.status$//,@list);
-@list= sort { $a <=> $b } @list;
+opendir(DIR,"db-h") || &quit("opendir db-h: $!\n");
+@dirs = sort { $a <=> $b } grep(s,^,db-h/,, grep(m/^\d+$/,readdir(DIR)));
+closedir(DIR);
+foreach my $dir (@dirs) {
+ opendir(DIR,$dir);
+ push @list, sort { $a <=> $b } grep(s/\.summary$//,grep(m/^\d+\.summary$/,readdir(DIR)));
+ closedir(DIR);
+}
$head= $mode eq 'bymaint'
? ' Package Ref Subject'
$amonths=-1;
while (length($f=shift(@list))) {
- &filelock("lock/$f");
- if (!open(S,"db/$f.status")) { &unlinklock; next; }
- chop($s_originator= <S>);
- chop($s_date= <S>);
- chop($s_subject= <S>);
- chop($s_msgid= <S>);
- chop($s_package= <S>);
- chop($s_keywords= <S>);
- chop($s_done= <S>);
- chop($s_forwarded= <S>);
- $_= $s_package; y/A-Z/a-z/; $_= $` if m/[^-+._a-z0-9]/;
- $s_maintainer=
+ if (!($data = lockreadbug($f))) { next; }
+ $_= $data->{package}; y/A-Z/a-z/; $_= $` if m/[^-+._a-z0-9]/;
+ $data->{maintainer}=
defined($maintainer{$_}) ? $maintainer{$_} :
length($_) ? "(unknown -- \`$_')" :
"(unknown)";
if ($mode eq 'undone' || $mode eq 'veryold') {
&unfilelock;
- next if length($s_done) || length($s_forwarded);
- $cmonths= int(($startdate - $s_date)/2592000); # 3600*24*30 (30 days)
+ next if length($data->{done}) || length($data->{forwarded});
+ $cmonths= int(($startdate - $data->{date})/2592000); # 3600*24*30 (30 days)
next if $mode eq 'veryold' && $cmonths < 2;
if ($cmonths != $amonths) {
$msg= $cmonths == 0 ? "Submitted in the last month" :
print "\n$msg:\n$head\n";
$amonths= $cmonths;
}
- printf("%6d %-10.10s %-30.30s %-.31s\n", $f, $s_package,
- (length($s_keywords) ? $s_keywords.'/' : '').$s_subject,
- $s_maintainer) || &quit("output undone: $!");
+ printf("%6d %-10.10s %-30.30s %-.31s\n", $f, $data->{package},
+ (length($data->{keywords}) ? $data->{keywords}.'/' : '').$data->{subject},
+ $data->{maintainer}) || &quit("output undone: $!");
} elsif ($mode eq 'bymaint') {
&unfilelock;
- next if length($s_done) || length($s_forwarded);
+ next if length($data->{done}) || length($data->{forwarded});
$string{$f}=
- sprintf(" %-10.10s %6d %-.59s\n", $s_package, $f, $s_subject);
- $s_maintainer= "(unknown)" if $s_maintainer =~ m/^\(unknown \-\-/;
- $maintainercnt{$s_maintainer}++;
- $maintainerlist{$s_maintainer}.= " $f";
+ sprintf(" %-10.10s %6d %-.59s\n", $data->{package}, $f, $data->{subject});
+ $data->{maintainer}= "(unknown)" if $data->{maintainer} =~ m/^\(unknown \-\-/;
+ $maintainercnt{$data->{maintainer}}++;
+ $maintainerlist{$data->{maintainer}}.= " $f";
} else {
&quit("badmode $mode");
}