]> git.donarmstrong.com Git - debbugs.git/blobdiff - scripts/summary.in
[project @ 2003-08-23 15:12:57 by cjwatson]
[debbugs.git] / scripts / summary.in
index b62caa63494b57bbd39953b87fadb6b398454876..e3be347dd86bdd6873f8848b5a9d3fc303941d01 100755 (executable)
@@ -1,8 +1,13 @@
 #!/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");
@@ -17,13 +22,26 @@ while (<M>) {
     $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'
@@ -31,25 +49,16 @@ $head= $mode eq 'bymaint'
 $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" :
@@ -59,17 +68,17 @@ while (length($f=shift(@list))) {
             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");
     }