2 # $Id: summary.in,v 1.7 2003/01/08 12:47:56 cjwatson Exp $
4 $config_path = '/etc/debbugs';
5 $lib_path = '/usr/lib/debbugs';
7 require("$config_path/config");
8 require("$lib_path/errorlib");
9 $ENV{'PATH'} = $lib_path.':'.$ENV{'PATH'};
11 chdir("$gSpoolDir") || die "chdir spool: $!\n";
17 open(M,"$gMaintainerFile") || &quit("open $gMaintainerFile: $!");
19 m/^(\S+)\s+(\S.*\S)\s*$/ || warn "$_ ?";
25 open(M,"$gMaintainerFileOverride") || &quit("open $gMaintainerFileOverride: $!");
27 m/^(\S+)\s+(\S.*\S)\s*$/ || warn "$_ ?";
35 defined($startdate= time) || &quit("failed to get time: $!");
37 opendir(DIR,"db-h") || &quit("opendir db-h: $!\n");
38 @dirs = sort { $a <=> $b } grep(s,^,db-h/,, grep(m/^\d+$/,readdir(DIR)));
40 foreach my $dir (@dirs) {
42 push @list, sort { $a <=> $b } grep(s/\.status$//,grep(m/^\d+\.status$/,readdir(DIR)));
46 $head= $mode eq 'bymaint'
47 ? ' Package Ref Subject'
48 : ' Ref Package Keywords/Subject Package maintainer';
51 while (length($f=shift(@list))) {
52 if (!lockreadbug($f)) { next; }
53 $_= $s_package; y/A-Z/a-z/; $_= $` if m/[^-+._a-z0-9]/;
55 defined($maintainer{$_}) ? $maintainer{$_} :
56 length($_) ? "(unknown -- \`$_')" :
58 if ($mode eq 'undone' || $mode eq 'veryold') {
60 next if length($s_done) || length($s_forwarded);
61 $cmonths= int(($startdate - $s_date)/2592000); # 3600*24*30 (30 days)
62 next if $mode eq 'veryold' && $cmonths < 2;
63 if ($cmonths != $amonths) {
64 $msg= $cmonths == 0 ? "Submitted in the last month" :
65 $cmonths == 1 ? "Over one month old" :
66 $cmonths == 2 ? "Over two months old - attention is required" :
67 "OVER $cmonths MONTHS OLD - ATTENTION IS REQUIRED";
68 print "\n$msg:\n$head\n";
71 printf("%6d %-10.10s %-30.30s %-.31s\n", $f, $s_package,
72 (length($s_keywords) ? $s_keywords.'/' : '').$s_subject,
73 $s_maintainer) || &quit("output undone: $!");
74 } elsif ($mode eq 'bymaint') {
76 next if length($s_done) || length($s_forwarded);
78 sprintf(" %-10.10s %6d %-.59s\n", $s_package, $f, $s_subject);
79 $s_maintainer= "(unknown)" if $s_maintainer =~ m/^\(unknown \-\-/;
80 $maintainercnt{$s_maintainer}++;
81 $maintainerlist{$s_maintainer}.= " $f";
83 &quit("badmode $mode");
87 if ($mode eq 'bymaint') {
88 print("$head\n") || &quit("output head: $!");
89 for $m (sort { $maintainercnt{$a} <=> $maintainercnt{$b} } keys %maintainercnt) {
90 printf("\n%s (%d $gBugs):\n",$m,$maintainercnt{$m})
91 || &quit("output mainthead: $!");
92 for $i (sort { $string{$a} cmp $string{$b} } split(/ /,$maintainerlist{$m})) {
93 printf($string{$i}) || &quit("output 1bymaint: $!");
98 close(STDOUT) || &quit("close stdout: $!");