]> git.donarmstrong.com Git - debbugs.git/commitdiff
[project @ 2003-05-03 20:01:20 by doogie]
authordoogie <>
Sun, 4 May 2003 03:01:20 +0000 (19:01 -0800)
committerdoogie <>
Sun, 4 May 2003 03:01:20 +0000 (19:01 -0800)
All code that reads and writes .status files now goes thru global
functions.

scripts/db2html.in
scripts/errorlib.in
scripts/expire.in
scripts/process.in
scripts/rebuild.in
scripts/service.in
scripts/summary.in

index 2c8813a031986149d6c97276b1b613268ad28c58..4fccc7be9d7fd792a2e226836c12770757a89cdd 100755 (executable)
@@ -1,5 +1,5 @@
 #!/usr/bin/perl
-# $Id: db2html.in,v 1.13 2002/12/11 02:15:15 cjwatson Exp $
+# $Id: db2html.in,v 1.14 2003/05/03 20:01:20 doogie Exp $
 # usage: db2html [-diff] [-stampfile=<stampfile>] [-lastrun=<days>] <wwwbase>
 
 #load the necessary libraries/configuration
@@ -122,7 +122,7 @@ for $f (@files)
             "sent to <code>request@$gEmailDomain</code> (all of which".
             "produce replies).\n";
         $indexlink= "Messages not matched to a specific $gBug report - $week";
-        $s_subject= '';
+        $data->{subject}= '';
         $indexentry= '';
         undef $tpack;
         undef $tmaint;
@@ -131,43 +131,32 @@ for $f (@files)
         $indexpart= 'unmatched';
     } else 
        {
-       my $hash = get_hashname($ref);
-       open(S,"db-h/$hash/$ref.status") || &quit("open db-h/$hash/$ref.status: $!");
-        chomp($s_originator= <S>);
-        chomp($s_date= <S>);
-        chomp($s_subject= <S>);
-        chomp($s_msgid= <S>);
-        chomp($s_package= <S>);
-        chomp($s_keywords= <S>);
-        chomp($s_done= <S>);
-        chomp($s_forwarded= <S>);
-        chomp($s_mergedwith= <S>);
-        chomp($s_severity= <S>);
-        $_= $s_package; y/A-Z/a-z/; $_= $` if m/[^-+._a-z0-9()]/;
+       $data=readbug($ref);
+        $_= $data->{package}; y/A-Z/a-z/; $_= $` if m/[^-+._a-z0-9()]/;
         $tpack= $_;
-        if ($s_severity eq '' || $s_severity eq 'normal') 
+        if ($data->{severity} eq '' || $data->{severity} eq 'normal') 
                {       $showseverity= '';
             $addseverity= $gDefaultSeverity;
-        } elsif (grep($s_severity eq $_, @strongseverities)) 
-               {       $showseverity= "<strong>Severity: $s_severity</strong>;\n";
-            $addseverity= $s_severity;
+        } elsif (grep($data->{severity} eq $_, @strongseverities)) 
+               {       $showseverity= "<strong>Severity: $data->{severity}</strong>;\n";
+            $addseverity= $data->{severity};
         } else 
-               {       $showseverity= "Severity: <em>$s_severity</em>;\n";
-            $addseverity= $s_severity;
+               {       $showseverity= "Severity: <em>$data->{severity}</em>;\n";
+            $addseverity= $data->{severity};
         }
-        $days= int(($startdate - $s_date)/86400); close(S);
-        $indexlink= "#$ref: ".&sani($s_subject);
+        $days= int(($startdate - $data->{date})/86400); close(S);
+        $indexlink= "#$ref: ".&sani($data->{subject});
         $indexentry= '';
         $packfile= length($tpack) ? "pa/l$tpack.html" : "pa/none.html";
         $indexentry .= "Package: <A href=\"../$packfile\"><strong>".
-                        &sani($s_package)."</strong></A>;\n"
-            if length($s_package);
+                        &sani($data->{package})."</strong></A>;\n"
+            if length($data->{package});
         $indexentry .= $showseverity;
-        $indexentry .= "Reported by: ".&sani($s_originator);
-        $indexentry .= ";\nKeywords: ".&sani($s_keywords)
-            if length($s_keywords);
+        $indexentry .= "Reported by: ".&sani($data->{originator});
+        $indexentry .= ";\nKeywords: ".&sani($data->{keywords})
+            if length($data->{keywords});
         $linkto= $ref; $linkto =~ s,^..,$&/$&,;
-        @merged= split(/ /,$s_mergedwith);
+        @merged= split(/ /,$data->{mergedwith});
         if (@merged) 
                {       $mseparator= ";\nmerged with ";
             for $m (@merged) 
@@ -177,11 +166,11 @@ for $f (@files)
             }
         }
         $daysold=$submitted='';
-        if (length($s_done)) 
-               {       $indexentry .= ";\n<strong>Done:</strong> ".&sani($s_done);
+        if (length($data->{done})) 
+               {       $indexentry .= ";\n<strong>Done:</strong> ".&sani($data->{done});
             $indexpart= "done$addseverity";
-        } elsif (length($s_forwarded)) 
-               {       $indexentry .= ";\n<strong>Forwarded</strong> to ".&sani($s_forwarded);
+        } elsif (length($data->{forwarded})) 
+               {       $indexentry .= ";\n<strong>Forwarded</strong> to ".&sani($data->{forwarded});
             $indexpart= "forwarded$addseverity";
         } else 
                {       $cmonths= int($days/30);
@@ -198,12 +187,12 @@ for $f (@files)
                 ($pad>0 ? ' 'x$pad : '').
                 sprintf("<A href=\"../%s.html\">%d</A>",$linkto,$ref).
                 &sani(sprintf(" %-1.1s %-10.10s %-35.35s %-.25s\n",
-                                               $s_severity,
-                        $s_package,
-                        (length($s_keywords) ? $s_keywords.'/' : '').
-                        $s_subject, $s_originator));
+                                               $data->{severity},
+                        $data->{package},
+                        (length($data->{keywords}) ? $data->{keywords}.'/' : '').
+                        $data->{subject}, $data->{originator}));
             $shortindex.= $thissient;
-            $sient{"$ref $s_package"}= $thissient;
+            $sient{"$ref $data->{package}"}= $thissient;
             if ($days >= 7) 
                        {       $font= $days <= 30 ? '' :
                        $days <= 60 ? 'em' :
@@ -215,7 +204,7 @@ for $f (@files)
             if ($preserveonly) { $submitted= 'THIS IS A BUG IN THE BUG PROCESSOR'; } 
                        else 
                        {       $submitted= `TZ=GMT LANG=C \\
-                             date -d '1 Jan 1970 00:00:00 + $s_date seconds' \\
+                             date -d '1 Jan 1970 00:00:00 + $data->{date} seconds' \\
                              '+ %a, %d %b %Y %T %Z'`;
                 $? and die $?;
             }
@@ -245,12 +234,12 @@ for $f (@files)
     eval("\$iiindex$indexpart = \$indexadd.\$iiindex$indexpart; 1;") ||
         &quit("eval add to \$iiindex$indexpart failed: $@");
     if (defined($tmaint)) 
-       {       $countpermaint{$tmaint} += length($s_done) ? 0 : length($s_forwarded) ? 0 : 1;
+       {       $countpermaint{$tmaint} += length($data->{done}) ? 0 : length($data->{forwarded}) ? 0 : 1;
         eval("\$permaint${indexpart}{\$tmaint} .= \$indexadd; 1;") ||
             &quit("eval add to \$permaint${indexpart}{\$tmaint} failed: $@");
     }
     if (defined($tpack)) 
-       {       $countperpack{$tpack} += length($s_done) ? 0 : length($s_forwarded) ? 0 : 1;
+       {       $countperpack{$tpack} += length($data->{done}) ? 0 : length($data->{forwarded}) ? 0 : 1;
         eval("\$perpack${indexpart}{\$tpack} .= \$indexadd; 1;") ||
             &quit("eval add to \$perpack${indexpart}{\$tpack} failed: $@");
     }
@@ -352,7 +341,7 @@ for $f (@files)
           "$short</title>\n".
           "<link rev=\"made\" href=\"mailto:$gMaintainerEmail\">\n".
           "</head>$gHTMLStart<h1>$gProject $gBug report logs -  $short<br>\n".
-          &sani($s_subject)."</h1>".
+          &sani($data->{subject})."</h1>".
           "$descriptivehead\n".
           "\n<hr>\n".
           $log.
index d86d8389080956569982fc41c86437460ca929df..34c76b812fe2e2d17e49e9aadfffbe4c0cf7e3a1 100755 (executable)
@@ -1,5 +1,5 @@
 # -*- perl -*-
-# $Id: errorlib.in,v 1.18 2003/02/16 15:20:26 cjwatson Exp $
+# $Id: errorlib.in,v 1.19 2003/05/03 20:01:20 doogie Exp $
 
 sub F_SETLK { 6; } sub F_WRLCK{ 1; }
 $flockstruct= 'sslll'; # And there ought to be something for this too.
@@ -16,35 +16,94 @@ sub unlockreadbugmerge {
 }
 
 sub lockreadbugmerge {
-    local ($lref) = @_;
-    if (!&lockreadbug($lref)) { return 0; }
-    if (!length($s_mergedwith)) { return 1; }
+    local ($lref, $location) = @_;
+    local $data;
+    if (!($data = &lockreadbug($lref, $location))) { return ( 0, undef ); }
+    if (!length($data{mergedwith})) { return ( 1, $data ); }
     &unfilelock;
     &filelock('lock/merge');
-    if (!&lockreadbug($lref)) { &unfilelock; return 0; }
-    return 2;
+    if (!&lockreadbug($lref, $location)) { &unfilelock; return ( 0, undef ); }
+    return ( 2, $data );
 }
 
-sub lockreadbug {
-    local ($lref) = @_;
-    &filelock("lock/$lref");
+sub readbug {
+    local ($lref, $location) = @_;
     my $hash = get_hashname($lref);
-    if (!open(S,"db-h/$hash/$lref.status")) { &unfilelock; return 0; }
-    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>);
-    chop($s_mergedwith= <S>);
-    chop($s_severity= <S>);
-    chop($s_versions= <S>);
-    chop($s_fixed_versions= <S>);
+    if ($location eq 'archive') {
+        $path = 'archive';
+    } else {
+        $path = 'db-h';
+    }
+    if (!open(S,"$path/$hash/$lref.status")) { &unfilelock; return undef; }
+    my %data;
+    chop($data{originator}= <S>);
+    chop($data{date}= <S>);
+    chop($data{subject}= <S>);
+    chop($data{msgid}= <S>);
+    chop($data{package}= <S>);
+    chop($data{keywords}= <S>);
+    chop($data{done}= <S>);
+    chop($data{forwarded}= <S>);
+    chop($data{mergedwith}= <S>);
+    chop($data{severity}= <S>);
+    chop($data{versions}= <S>);
+    chop($data{fixed_versions}= <S>);
     close(S);
-       $s_severity = 'normal' if $s_severity eq '';
-    return 1;
+       $data{severity} = 'normal' if $data{severity} eq '';
+    return \%data;
+}
+
+sub lockreadbug {
+    local ($lref, $location) = @_;
+    &filelock("lock/$lref");
+    return readbug($lref, $location);
+}
+
+sub writebug {
+    local ($ref, $data, $location) = @_;
+    my $hash = get_hashname($ref);
+    my $change;
+    if ($location eq 'archive') {
+        $path = 'archive';
+    } else {
+        $path = 'db-h';
+    }
+    open(S,">$path/$hash/$ref.status.new") || &quit("opening $path/$hash/$ref.status.new: $!");
+    print(S
+          "$data->{originator}\n".
+          "$data->{date}\n".
+          "$data->{subject}\n".
+          "$data->{msgid}\n".
+          "$data->{package}\n".
+          "$data->{keywords}\n".
+          "$data->{done}\n".
+          "$data->{forwarded}\n".
+          "$data->{mergedwith}\n".
+          "$data->{severity}\n".
+          "$data->{versions}\n".
+          "$data->{fixed_versions}\n") || &quit("writing $path/$hash/$ref.status.new: $!");
+    close(S) || &quit("closing $path/$hash/$ref.status.new: $!");
+    if (-e "$path/$hash/$ref.status") {
+        $change = 'change';
+    } else {
+        $change = 'new';
+    }
+    rename("$path/$hash/$ref.status.new","$path/$hash/$ref.status") ||
+        &quit("installing new $path/$hash/$ref.status: $!");
+        &bughook($change,$ref,
+          "$data->{originator}\n".
+          "$data->{date}\n".
+          "$data->{subject}\n".
+          "$data->{msgid}\n".
+          "$data->{package}\n".
+          "$data->{keywords}\n".
+          "$data->{done}\n".
+          "$data->{forwarded}\n".
+          "$data->{mergedwith}\n".
+          "$data->{severity}\n".
+          "$data->{versions}\n".
+          "$data->{fixed_versions}\n");
+    &unfilelock;
 }
 
 sub filelock {
index 3bf368b5accbfde4688d12faa42e667f55b6021c..796f5f60b1eb8141d967ecd675d69fd1dcb19476 100755 (executable)
@@ -1,5 +1,5 @@
 #!/usr/bin/perl
-# $Id: expire.in,v 1.14 2002/11/17 22:45:16 cjwatson Exp $
+# $Id: expire.in,v 1.15 2003/05/03 20:01:20 doogie Exp $
 
 # Load modules and set envirnment
 use File::Copy;
@@ -30,30 +30,32 @@ foreach my $dir (@dirs) {
 #process each bug (ie, status file)
 while (length($ref=shift(@list))) {
        print STDERR "$ref considering\n" if $debug;
-    $bfound= &lockreadbugmerge($ref);
+    ($bfound, $data)= &lockreadbugmerge($ref);
        print STDERR "$ref read $bfound\n" if $debug;
     $bfound || next;
-       print "$ref read ok (done $s_done)\n" if $debug;
-    (&unlockreadbugmerge($bfound), next) unless length($s_done);
+       print "$ref read ok (done $data->{done})\n" if $debug;
+    (&unlockreadbugmerge($bfound), next) unless length($data->{done});
        print "$ref read done\n" if $debug;
     @aref= ($ref);
-    if (length($s_mergedwith)) { push(@aref,split / /,$s_mergedwith); }
+    if (length($data->{mergedwith})) { push(@aref,split / /,$data->{mergedwith}); }
        print "$ref aref @aref\n" if $debug;
     $oktoremove= 1;
     for $mref (@aref) {
        print "$ref $mref check\n" if $debug;
         if ($mref != $ref) {
                print "$ref $mref reading\n" if $debug;
-            &lockreadbug($mref) || die "huh ?";
+            $newdata = &lockreadbug($mref) || die "huh $mref ?";
                print "$ref $mref read ok\n" if $debug;
             $bfound++;
+        } else {
+            $newdata = $data;
         }
        print "$ref $mref read/not\n" if $debug;
         $expectmerge= join(' ',grep($_ != $mref, sort { $a <=> $b } @aref));
-        $s_mergedwith eq $expectmerge ||
-            die "$ref -> $mref: ($s_mergedwith) vs. ($expectmerge) (@aref)";
+        $newdata->{mergedwith} eq $expectmerge ||
+            die "$ref -> $mref: ($newdata->{mergedwith}) vs. ($expectmerge) (@aref)";
                print "$ref $mref merge-ok\n" if $debug;
-        length($s_done) || die "$ref -> $mref";
+        length($newdata->{done}) || die "$ref -> $mref";
                print "$ref $mref done-ok\n" if $debug;
         $days= -M "db-h/".get_hashname($mref)."/$mref.log";
                print "ref $mref days $days\n" if $debug;
@@ -71,7 +73,7 @@ while (length($ref=shift(@list))) {
                        link( "db-h/$dir/$mref.status", "archive/$dir/$mref.status" ) || copy( "db-h/$dir/$mref.status", "archive/$dir/$mref.status" );
                        link( "db-h/$dir/$mref.report", "archive/$dir/$mref.report" ) || copy( "db-h/$dir/$mref.report", "archive/$dir/$mref.report" );
                        if ( open( IDXFILE, ">>archive/index" ) ) {
-                               printf IDXFILE "%s %d %s\n", $s_package, $mref, $s_subject;
+                               printf IDXFILE "%s %d %s\n", $data->{package}, $mref, $data->{subject};
                                close IDXFILE;
                        } else { print "Unable to write to index file\n"; }
                                
index 30a58244cf4402d8cf996caf7e5ee3dc65438f0a..2d320a01ad2617b5b1c7c2f5001fe6daf90bafc3 100755 (executable)
@@ -1,5 +1,5 @@
 #!/usr/bin/perl
-# $Id: process.in,v 1.65 2003/04/24 02:24:55 cjwatson Exp $
+# $Id: process.in,v 1.66 2003/05/03 20:01:20 doogie Exp $
 #
 # Usage: process nn
 # Temps:  incoming/Pnn
@@ -179,7 +179,7 @@ if ($tryref < 0 && m/^Bug ?\#(\d+)\D/i) {
 
 if ($tryref >= 0) 
 {
-    $bfound= &lockreadbugmerge($tryref);
+    ($bfound, $data)= &lockreadbugmerge($tryref);
     if ($bfound) { 
         $ref= $tryref; 
     } else {
@@ -190,7 +190,7 @@ To: $replyto
 Subject: Unknown problem report $gBug#$tryref ($subject)
 Message-ID: <handler.x.$nn.unknown\@$gEmailDomain>
 In-Reply-To: $header{'message-id'}
-References: $header{'message-id'} $s_msgid
+References: $header{'message-id'} $data->{msgid}
 Precedence: bulk
 X-$gProject-PR-Message: error
 
@@ -237,7 +237,7 @@ if ($codeletter eq 'D' || $codeletter eq 'F')
     $markedby= $header{'from'} eq $replyto ? $replyto :
                "$header{'from'} (reply to $replyto)";
     if ($codeletter eq 'F') {
-        (&appendlog,&finish) if length($s_forwarded);
+        (&appendlog,&finish) if length($data->{forwarded});
         $receivedat= "forwarded\@$gEmailDomain";
         $markaswhat= 'forwarded';
         $set_forwarded= $header{'to'};
@@ -247,7 +247,7 @@ if ($codeletter eq 'D' || $codeletter eq 'F')
            $generalcc=''; 
         }
     } else {
-       (&appendlog,&finish) if length($s_done);
+       (&appendlog,&finish) if length($data->{done});
         $receivedat= "done\@$gEmailDomain";
         $markaswhat= 'done';
         $set_done= $header{'from'};
@@ -266,7 +266,7 @@ Subject: Message with no $gBug number ignored by $receivedat
          ($subject)
 Message-ID: <header.x.$nn.warnignore\@$gEmailDomain>
 In-Reply-To: $header{'message-id'}
-References: $header{'message-id'} $s_msgid
+References: $header{'message-id'} $data->{msgid}
 Precedence: bulk
 X-$gProject-PR-Message: error
 
@@ -311,24 +311,20 @@ END
     if (length($noticeccval)) { $noticecc= "Cc: $noticeccval\n"; }
     if (length($generalcc)) { $noticecc.= "Bcc: $generalcc\n"; }
 
-    @process= ($ref,split(/ /,$s_mergedwith));
+    @process= ($ref,split(/ /,$data->{mergedwith}));
     $orgref= $ref;
 
     for $ref (@process) {
        if ($ref != $orgref) {
            &unfilelock;
-           &lockreadbug($ref) || die "huh ? $ref from $orgref out of @process";
+           $data = &lockreadbug($ref)
+               || die "huh ? $ref from $orgref out of @process";
        }
-        $s_done= $set_done if defined($set_done);
-        $s_forwarded= $set_forwarded if defined($set_forwarded);
-       my $hash = get_hashname($ref);
-       &overwrite("db-h/$hash/$ref.status",
-                  "$s_originator\n$s_date\n$s_subject\n$s_msgid\n".
-           "$s_package\n$s_keywords\n$s_done\n$s_forwarded\n$s_mergedwith\n$s_severity\n");
-       &bughook('change',$ref,
-                  "$s_originator\n$s_date\n$s_subject\n$s_msgid\n".
-           "$s_package\n$s_keywords\n$s_done\n$s_forwarded\n$s_mergedwith\n$s_severity\n");
+        $data->{done}= $set_done if defined($set_done);
+        $data->{forwarded}= $set_forwarded if defined($set_forwarded);
+       writebug($ref, $data);
 
+       my $hash = get_hashname($ref);
         open(O,"db-h/$hash/$ref.report") || &quit("read original report: $!");
         $x= join('',<O>); close(O);
         if ($codeletter eq 'F') {
@@ -336,21 +332,21 @@ END
             &sendmessage(<<END."---------------------------------------\n".join( "\n", @msg ), '');
 From: $gMaintainerEmail ($gProject $gBug Tracking System)
 To: $replyto
-${noticecc}Subject: $gBug#$ref: marked as forwarded ($s_subject)
+${noticecc}Subject: $gBug#$ref: marked as forwarded ($data->{subject})
 Message-ID: <header.$ref.$nn.ackfwdd\@$gEmailDomain>
 In-Reply-To: $header{'message-id'}
-References: $header{'message-id'} $s_msgid
+References: $header{'message-id'} $data->{msgid}
 Precedence: bulk
 X-$gProject-PR-Message: forwarded $ref
-X-$gProject-PR-Package: $s_package
-X-$gProject-PR-Keywords: $s_keywords
+X-$gProject-PR-Package: $data->{package}
+X-$gProject-PR-Keywords: $data->{keywords}
 
 Your message dated $header{'date'}
 with message-id $header{'message-id'}
 has caused the $gProject $gBug report #$ref,
-regarding $s_subject
+regarding $data->{subject}
 to be marked as having been forwarded to the upstream software
-author(s) $s_forwarded.
+author(s) $data->{forwarded}.
 
 (NB: If you are a system administrator and have no idea what I am
 talking about this indicates a serious mail system misconfiguration
@@ -366,14 +362,14 @@ END
             &sendmessage(<<END."--------------------------------------\n".$x."---------------------------------------\n".join( "\n", @msg ), '');
 From: $gMaintainerEmail ($gProject $gBug Tracking System)
 To: $replyto
-${noticecc}Subject: $gBug#$ref: marked as done ($s_subject)
+${noticecc}Subject: $gBug#$ref: marked as done ($data->{subject})
 Message-ID: <handler.$ref.$nn.ackdone\@$gEmailDomain>
 In-Reply-To: $header{'message-id'}
-References: $header{'message-id'} $s_msgid
+References: $header{'message-id'} $data->{msgid}
 Precedence: bulk
 X-$gProject-PR-Message: closed $ref
-X-$gProject-PR-Package: $s_package
-X-$gProject-PR-Keywords: $s_keywords
+X-$gProject-PR-Package: $data->{package}
+X-$gProject-PR-Keywords: $data->{keywords}
 
 Your message dated $header{'date'}
 with message-id $header{'message-id'}
@@ -392,24 +388,24 @@ $gMaintainer
 (administrator, $gProject $gBugs database)
 
 END
-            &htmllog("Notification","sent",$s_originator
+            &htmllog("Notification","sent",$data->{originator}
                "$gBug acknowledged by developer.");
             &sendmessage(<<END.join("\n",@msg),'');
 From: $gMaintainerEmail ($gProject $gBug Tracking System)
-To: $s_originator
+To: $data->{originator}
 Subject: $gBug#$ref acknowledged by developer
          ($header{'subject'})
 Message-ID: <handler.$ref.$nn.notifdone\@$gEmailDomain>
-In-Reply-To: $s_msgid
-References: $header{'message-id'} $s_msgid
+In-Reply-To: $data->{msgid}
+References: $header{'message-id'} $data->{msgid}
 X-$gProject-PR-Message: they-closed $ref
-X-$gProject-PR-Package: $s_package
-X-$gProject-PR-Keywords: $s_keywords
+X-$gProject-PR-Package: $data->{package}
+X-$gProject-PR-Keywords: $data->{keywords}
 Reply-To: $ref\@$gEmailDomain
 
 This is an automatic notification regarding your $gBug report
-#$ref: $s_subject,
-which was filed against the $s_package package.
+#$ref: $data->{subject},
+which was filed against the $data->{package} package.
 
 It has been closed by one of the developers, namely
 $markedby.
@@ -438,7 +434,7 @@ Subject: Message with no $gBug number cannot be sent to submitter !
          ($subject)
 Message-ID: <handler.x.$nn.nonumnosub\@$gEmailDomain>
 In-Reply-To: $header{'message-id'}
-References: $header{'message-id'} $s_msgid
+References: $header{'message-id'} $data->{msgid}
 Precedence: bulk
 X-$gProject-PR-Message: error
 
@@ -483,7 +479,7 @@ Subject: Message with no Package: tag cannot be processed!
          ($subject)
 Message-ID: <handler.x.$nn.nonumnosub\@$gEmailDomain>
 In-Reply-To: $header{'message-id'}
-References: $header{'message-id'} $s_msgid
+References: $header{'message-id'} $data->{msgid}
 Precedence: bulk
 X-$gProject-PR-Message: error
 
@@ -510,54 +506,54 @@ END
        &appendlog;
        &finish;
     } else {
-       $s_package= $pheader{'package'}; 
+       $data->{package}= $pheader{'package'}; 
     }
 
-    $s_versions= '';
+    $data->{versions}= '';
     if (defined($pheader{'version'})) {
-        $s_versions = $pheader{'version'};
-        $s_versions =~ s/\s+/ /;
+        $data->{versions} = $pheader{'version'};
+        $data->{versions} =~ s/\s+/ /;
        # BUG: need to bounce unknown versions back to submitter here
     }
 
-    $s_fixed_versions= '';
+    $data->{fixed_versions}= '';
     if (defined($pheader{'fixed-in-version'})) {
-        $s_fixed_versions = $pheader{'fixed-in-version'};
-        $s_fixed_versions =~ s/\s+/ /;
+        $data->{fixed_versions} = $pheader{'fixed-in-version'};
+        $data->{fixed_versions} =~ s/\s+/ /;
     }
 
-    $s_keywords= '';
+    $data->{keywords}= '';
     if (defined($pheader{'keywords'})) {
-        $s_keywords= $pheader{'keywords'};
+        $data->{keywords}= $pheader{'keywords'};
     } elsif (defined($pheader{'tags'})) {
-        $s_keywords= $pheader{'tags'};
+        $data->{keywords}= $pheader{'tags'};
     }
-    if (length($s_keywords)) {
+    if (length($data->{keywords})) {
         my @kws;
         my %gkws = map { ($_, 1) } @gTags;
-        foreach my $kw (sort split(/[,\s]+/, lc($s_keywords))) {
+        foreach my $kw (sort split(/[,\s]+/, lc($data->{keywords}))) {
             push @kws, $kw if (defined $gkws{$kw});
         }
-        $s_keywords = join(" ", @kws);
+        $data->{keywords} = join(" ", @kws);
     }
-    $s_severity= '';
+    $data->{severity}= '';
     if (defined($pheader{'severity'}) || defined($pheader{'priority'})) {
-       $s_severity= $pheader{'severity'};
-       $s_severity= $pheader{'priority'} unless ($s_severity);
-       $s_severity =~ s/^\s*(.+)\s*$/$1/;
+       $data->{severity}= $pheader{'severity'};
+       $data->{severity}= $pheader{'priority'} unless ($data->{severity});
+       $data->{severity} =~ s/^\s*(.+)\s*$/$1/;
 
-       if (!grep($_ eq $s_severity, @severities, "$gDefaultSeverity")) {
+       if (!grep($_ eq $data->{severity}, @severities, "$gDefaultSeverity")) {
             $brokenness.= <<END;
 
 Your message specified a Severity: in the pseudo-header, but
-the severity value $s_severity was not recognised.
+the severity value $data->{severity} was not recognised.
 The default severity $gDefaultSeverity is being used instead.
 The recognised values are: $gShowSeverities.
 END
 # if we use @gSeverityList array in the above line, perl -c gives:
 # In string, @gSeverityList now must be written as \@gSeverityList at
 #          process line 452, near "$gDefaultSeverity is being used instead.
-            $s_severity= '';
+            $data->{severity}= '';
         }
     }
     &filelock("nextnumber.lock");
@@ -568,14 +564,11 @@ END
     &unfilelock;
     my $hash = get_hashname($ref);
     &overwrite("db-h/$hash/$ref.log",'');
-    &overwrite("db-h/$hash/$ref.status",
-               "$replyto\n$intdate\n$subject\n$header{'message-id'}\n".
-               "$s_package\n$s_keywords\n\n\n\n$s_severity\n$s_versions\n".
-               "$s_fixed_versions\n");
-    &bughook('new',$ref,
-               "$replyto\n$intdate\n$subject\n$header{'message-id'}\n".
-               "$s_package\n$s_keywords\n\n\n\n$s_severity\n$s_versions\n".
-               "$s_fixed_versions\n");
+    $data->{originator} = $replyto;
+    $data->{date} = $intdate;
+    $data->{subject} = $subject;
+    $data->{msgid} = $header{'message-id'};
+    writebug($ref, $data);
     &overwrite("db-h/$hash/$ref.report",
                join("\n",@msg)."\n");
 }
@@ -631,24 +624,24 @@ if (length($resentccval)) {
 }
 
 if ($codeletter eq 'U') {
-    &htmllog("Message", "sent on", $s_originator, "$gBug#$ref.");
-    &sendmessage(<<END,$s_originator,@resentccs);
+    &htmllog("Message", "sent on", $data->{originator}, "$gBug#$ref.");
+    &sendmessage(<<END,$data->{originator},@resentccs);
 Subject: $gBug#$ref: $newsubject
 Reply-To: $replyto, $ref-quiet\@$gEmailDomain
-${orgsender}Resent-To: $s_originator
+${orgsender}Resent-To: $data->{originator}
 ${resentcc}Resent-Date: $tdate
 Resent-Message-ID: <handler.$ref.$nn\@$gEmailDomain>
 Resent-Sender: $gMaintainerEmail
 X-$gProject-PR-Message: report $ref
-X-$gProject-PR-Package: $s_package
-X-$gProject-PR-Keywords: $s_keywords
+X-$gProject-PR-Package: $data->{package}
+X-$gProject-PR-Keywords: $data->{keywords}
 $fwd
 END
 } elsif ($codeletter eq 'B') {
     &htmllog($newref ? "Report" : "Information", "forwarded",
              join(', ',"$gSubmitList\@$gListDomain",@resentccs),
              "<code>$gBug#$ref</code>".
-             (length($s_package)? "; Package <code>".&sani($s_package)."</code>" : '').
+             (length($data->{package})? "; Package <code>".&sani($data->{package})."</code>" : '').
              ".");
     &sendmessage(<<END,"$gSubmitList\@$gListDomain",@resentccs);
 Subject: $gBug#$ref: $newsubject
@@ -659,8 +652,8 @@ ${resentcc}Resent-Date: $tdate
 Resent-Message-ID: <handler.$ref.$nn\@$gEmailDomain>
 Resent-Sender: $gMaintainerEmail
 X-$gProject-PR-Message: report $ref
-X-$gProject-PR-Package: $s_package
-X-$gProject-PR-Keywords: $s_keywords
+X-$gProject-PR-Package: $data->{package}
+X-$gProject-PR-Keywords: $data->{keywords}
 $fwd
 END
 } elsif (@resentccs) {
@@ -670,7 +663,7 @@ END
     &htmllog($newref ? "Report" : "Information", "forwarded",
              $resentccval,
              "<code>$gBug#$ref</code>".
-             (length($s_package)? "; Package <code>".&sani($s_package)."</code>" : '').
+             (length($data->{package})? "; Package <code>".&sani($data->{package})."</code>" : '').
              ".");
     &sendmessage(<<END,@resentccs);
 Subject: $gBug#$ref: $newsubject
@@ -681,8 +674,8 @@ Resent-Date: $tdate
 Resent-Message-ID: <handler.$ref.$nn\@$gEmailDomain>
 Resent-Sender: $gMaintainerEmail
 X-$gProject-PR-Message: report $ref
-X-$gProject-PR-Package: $s_package
-X-$gProject-PR-Keywords: $s_keywords
+X-$gProject-PR-Package: $data->{package}
+X-$gProject-PR-Keywords: $data->{keywords}
 $fwd
 END
 }
@@ -708,8 +701,8 @@ In-Reply-To: $header{'message-id'}
 References: $header{'message-id'}
 Precedence: bulk
 X-$gProject-PR-Message: ack-quiet $ref
-X-$gProject-PR-Package: $s_package
-X-$gProject-PR-Keywords: $s_keywords
+X-$gProject-PR-Package: $data->{package}
+X-$gProject-PR-Keywords: $data->{keywords}
 Reply-To: $ref-quiet\@$gEmailDomain
 
 Thank you for the problem report you have sent regarding $gProject.
@@ -738,8 +731,8 @@ In-Reply-To: $header{'message-id'}
 References: $header{'message-id'}
 Precedence: bulk
 X-$gProject-PR-Message: ack-maintonly $ref
-X-$gProject-PR-Package: $s_package
-X-$gProject-PR-Keywords: $s_keywords
+X-$gProject-PR-Package: $data->{package}
+X-$gProject-PR-Keywords: $data->{keywords}
 Reply-To: $ref-maintonly\@$gEmailDomain
 
 Thank you for the problem report you have sent regarding $gProject.
@@ -765,8 +758,8 @@ In-Reply-To: $header{'message-id'}
 References: $header{'message-id'}
 Precedence: bulk
 X-$gProject-PR-Message: ack $ref
-X-$gProject-PR-Package: $s_package
-X-$gProject-PR-Keywords: $s_keywords
+X-$gProject-PR-Package: $data->{package}
+X-$gProject-PR-Keywords: $data->{keywords}
 Reply-To: $ref\@$gEmailDomain
 
 Thank you for the problem report you have sent regarding $gProject.
@@ -800,8 +793,8 @@ In-Reply-To: $header{'message-id'}
 References: $header{'message-id'}
 Precedence: bulk
 X-$gProject-PR-Message: ack-info-quiet $ref
-X-$gProject-PR-Package: $s_package
-X-$gProject-PR-Keywords: $s_keywords
+X-$gProject-PR-Package: $data->{package}
+X-$gProject-PR-Keywords: $data->{keywords}
 Reply-To: $ref-quiet\@$gEmailDomain
 
 Thank you for the additional information you have supplied regarding
@@ -828,8 +821,8 @@ In-Reply-To: $header{'message-id'}
 References: $header{'message-id'}
 Precedence: bulk
 X-$gProject-PR-Message: ack-info-maintonly $ref
-X-$gProject-PR-Package: $s_package
-X-$gProject-PR-Keywords: $s_keywords
+X-$gProject-PR-Package: $data->{package}
+X-$gProject-PR-Keywords: $data->{keywords}
 Reply-To: $ref-maintonly\@$gEmailDomain
 
 Thank you for the additional information you have supplied regarding
@@ -853,8 +846,8 @@ In-Reply-To: $header{'message-id'}
 References: $header{'message-id'}
 Precedence: bulk
 X-$gProject-PR-Message: ack-info $ref
-X-$gProject-PR-Package: $s_package
-X-$gProject-PR-Keywords: $s_keywords
+X-$gProject-PR-Package: $data->{package}
+X-$gProject-PR-Keywords: $data->{keywords}
 Disabled-Doogie-Reply-To: $ref\@$gEmailDomain
 
 Thank you for the additional information you have supplied regarding
@@ -1001,7 +994,7 @@ sub sendmessage {
 
 sub checkmaintainers {
     return if $maintainerschecked++;
-    return if !length($s_package);
+    return if !length($data->{package});
     open(MAINT,"$gMaintainerFile") || die &quit("maintainers open: $!");
     while (<MAINT>) {
        m/^\n$/ && next;
@@ -1029,7 +1022,7 @@ sub checkmaintainers {
     }
     close(SOURCES);
     $anymaintfound=0; $anymaintnotfound=0;
-    for $p (split(m/[ \t?,()]+/,$s_package)) {
+    for $p (split(m/[ \t?,()]+/,$data->{package})) {
         $p =~ y/A-Z/a-z/;
        if (defined $gSubscriptionDomain) {
            if (defined($pkgsrc{$p})) {
index 4ea2e9c0897e9e8a5a18168c062b94b6ea75231c..d422c3d38ee30d1ab3b36a9a42196379e8200045 100755 (executable)
@@ -1,5 +1,5 @@
 #!/usr/bin/perl -w
-# $Id: rebuild.in,v 1.5 2002/11/17 22:45:16 cjwatson Exp $
+# $Id: rebuild.in,v 1.6 2003/05/03 20:01:20 doogie Exp $
 
 # Load modules and set envirnment
 use File::Copy;
@@ -11,23 +11,13 @@ require("$lib_path/errorlib");
 $ENV{'PATH'} = $lib_path.':'.$ENV{'PATH'};
 
 chdir("$gSpoolDir") || die "chdir spool: $!\n";
+my $data;
 
 sub readreport {
     my $lref = shift;
        my $path = shift;
        
-    open(S,"$path/$lref.status") || die "unable to open $path/$lref: $!\n";
-    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>);
-    chop($s_mergedwith= <S>);
-    chop($s_severity= <S>);
-    close(S);
+    $data = readbug($lref);
     return 1;
 }
 
@@ -53,7 +43,7 @@ if ( $archive eq 'db' )
        {       my $ref = shift @list;
                print STDERR "$ref considering\n" if $debug;
        readreport($ref, $path);
-               printf IDXFILE "%s %d %s\n", $s_package, $ref, $s_subject;
+               printf IDXFILE "%s %d %s\n", $data->{package}, $ref, $data->{subject};
     }
 }
 else
@@ -74,7 +64,7 @@ for ($subdir=0; $subdir<100; $subdir++ )
        {       my $ref = shift @list;
                print STDERR "$ref considering\n" if $debug;
        readreport($ref, $path);
-               printf IDXFILE "%s %d %s\n", $s_package, $ref, $s_subject;
+               printf IDXFILE "%s %d %s\n", $data->{package}, $ref, $data->{subject};
     }
 }
 
index 8c59c419a2a93fc4b21364481dc499b7dcd2323f..3ac382c5fa9a5e89a5a266d771b538dba1cdf0a3 100755 (executable)
@@ -1,5 +1,5 @@
 #!/usr/bin/perl
-# $Id: service.in,v 1.72 2003/03/27 23:29:19 cjwatson Exp $
+# $Id: service.in,v 1.73 2003/05/03 20:01:20 doogie Exp $
 # ^ more or less ^
 #
 # Usage: service <code>.nn
@@ -243,29 +243,29 @@ END
        $ref= $1;
        if (&setbug) {
            &transcript("'close' is deprecated; see http://$gWebDomain/Developer$gHTMLSuffix#closing.\n");
-           if (length($s_done)) {
+           if (length($data->{done})) {
                &transcript("$gBug is already closed, cannot re-close.\n\n");
                 &nochangebug;
             } else {
-                $action= "$gBug closed, send any further explanations to $s_originator";
+                $action= "$gBug closed, send any further explanations to $data->{originator}";
                 do {
-                    &addmaintainers($s_package);
+                    &addmaintainers($data->{package});
                                        if ( length( $gDoneList ) > 0 && length( $gListDomain ) >
                                        0 ) { &addccaddress("$gDoneList\@$gListDomain"); }
-                    $s_done= $replyto;
+                    $data->{done}= $replyto;
                    $message= <<END;
 From: $gMaintainerEmail ($gProject $gBug Tracking System)
-To: $s_originator
+To: $data->{originator}
 Subject: $gBug#$ref acknowledged by developer
          ($header{'subject'})
-References: $header{'message-id'} $s_msgid
-In-Reply-To: $s_msgid
+References: $header{'message-id'} $data->{msgid}
+In-Reply-To: $data->{msgid}
 Message-ID: <handler.$ref.$nn.notifdonectrl.$midix\@$gEmailDomain>
 Reply-To: $ref\@$gEmailDomain
 
 This is an automatic notification regarding your $gBug report
-#$ref: $s_subject,
-which was filed against the $s_package package.
+#$ref: $data->{subject},
+which was filed against the $data->{package} package.
 
 It has been marked as closed by one of the developers, namely
 $replyto.
@@ -277,7 +277,7 @@ $gMaintainer
 (administrator, $gProject $gBugs database)
 
 END
-                    &sendmailmessage($message,$s_originator);
+                    &sendmailmessage($message,$data->{originator});
                 } while (&getnextbug);
             }
         }
@@ -286,16 +286,16 @@ END
         $ref= $1; $newpackage= $2;
        $newpackage =~ y/A-Z/a-z/;
         if (&setbug) {
-            if (length($s_package)) {
-                $action= "$gBug reassigned from package \`$s_package'".
+            if (length($data->{package})) {
+                $action= "$gBug reassigned from package \`$data->{package}'".
                          " to \`$newpackage'.";
             } else {
                 $action= "$gBug assigned to package \`$newpackage'.";
             }
             do {
-                &addmaintainers($s_package);
+                &addmaintainers($data->{package});
                 &addmaintainers($newpackage);
-                $s_package= $newpackage;
+                $data->{package}= $newpackage;
             } while (&getnextbug);
         }
     } elsif (m/^reopen\s+\#?(-?\d+)$/i ? ($noriginator='', 1) :
@@ -305,7 +305,7 @@ END
         $ok++;
         $ref= $1;
         if (&setbug) {
-            if (!length($s_done)) {
+            if (!length($data->{done})) {
                 &transcript("$gBug is already open, cannot reopen.\n\n");
                 &nochangebug;
             } else {
@@ -313,9 +313,9 @@ END
                     $noriginator eq '' ? "$gBug reopened, originator not changed." :
                         "$gBug reopened, originator set to $noriginator.";
                 do {
-                    &addmaintainers($s_package);
-                    $s_originator= $noriginator eq '' ?  $s_originator : $noriginator;
-                    $s_done= '';
+                    &addmaintainers($data->{package});
+                    $data->{originator}= $noriginator eq '' ?  $data->{originator} : $noriginator;
+                    $data->{done}= '';
                 } while (&getnextbug);
             }
         }
@@ -328,13 +328,13 @@ END
         }
         if (&getbug) {
             &foundbug;
-            &addmaintainers($s_package);
-            $oldsubmitter= $s_originator;
-            $s_originator= $newsubmitter;
+            &addmaintainers($data->{package});
+            $oldsubmitter= $data->{originator};
+            $data->{originator}= $newsubmitter;
             $action= "Changed $gBug submitter from $oldsubmitter to $newsubmitter.";
             &savebug;
             &transcript("$action\n");
-            if (length($s_done)) {
+            if (length($data->{done})) {
                 &transcript("(By the way, that $gBug is currently marked as done.)\n");
             }
             &transcript("\n");
@@ -343,13 +343,13 @@ From: $gMaintainerEmail ($gProject $gBug Tracking System)
 To: $oldsubmitter
 Subject: $gBug#$ref submitter address changed
          ($header{'subject'})
-References: $header{'message-id'} $s_msgid
-In-Reply-To: $s_msgid
+References: $header{'message-id'} $data->{msgid}
+In-Reply-To: $data->{msgid}
 Message-ID: <handler.$ref.$nn.newsubmitter.$midix\@$gEmailDomain>
 Reply-To: $ref\@$gEmailDomain
 
 The submitter address recorded for your $gBug report
-#$ref: $s_subject
+#$ref: $data->{subject}
 has been changed.
 
 The new submitter address for this report is
@@ -371,34 +371,34 @@ END
         $ok++;
         $ref= $1; $whereto= $2;
         if (&setbug) {
-            if (length($s_forwarded)) {
-    $action= "Forwarded-to-address changed from $s_forwarded to $whereto.";
+            if (length($data->{forwarded})) {
+    $action= "Forwarded-to-address changed from $data->{forwarded} to $whereto.";
             } else {
     $action= "Noted your statement that $gBug has been forwarded to $whereto.";
             }
-            if (length($s_done)) {
+            if (length($data->{done})) {
                 $extramessage= "(By the way, this $gBug is currently marked as done.)\n";
             }
             do {
-                &addmaintainers($s_package);
+                &addmaintainers($data->{package});
                if (length($gFowardList)>0 && length($gListDomain)>0 ) {
                     &addccaddress("$gFowardList\@$gListDomain"); 
                }
-                $s_forwarded= $whereto;
+                $data->{forwarded}= $whereto;
             } while (&getnextbug);
         }
     } elsif (m/^notforwarded\s+\#?(-?\d+)$/i) {
         $ok++;
         $ref= $1;
         if (&setbug) {
-            if (!length($s_forwarded)) {
+            if (!length($data->{forwarded})) {
                 &transcript("$gBug is not marked as having been forwarded.\n\n");
                 &nochangebug;
             } else {
-    $action= "Removed annotation that $gBug had been forwarded to $s_forwarded.";
+    $action= "Removed annotation that $gBug had been forwarded to $data->{forwarded}.";
                 do {
-                    &addmaintainers($s_package);
-                    $s_forwarded= '';
+                    &addmaintainers($data->{package});
+                    $data->{forwarded}= '';
                 } while (&getnextbug);
             }
         }
@@ -414,12 +414,12 @@ END
             &transcript("Severity level \`$newseverity' is obsolete. " .
                         "$gObsoleteSeverities{$newseverity}\n\n");
         } elsif (&setbug) {
-            $printseverity= $s_severity;
+            $printseverity= $data->{severity};
             $printseverity= "$gDefaultSeverity" if $printseverity eq '';
            $action= "Severity set to \`$newseverity'.";
            do {
-                &addmaintainers($s_package);
-                $s_severity= $newseverity;
+                &addmaintainers($data->{package});
+                $data->{severity}= $newseverity;
             } while (&getnextbug);
         }
     } elsif (m/^tags?\s+\#?(-?\d+)\s+(([=+-])\s*)?(\S.*)?$/i) {
@@ -445,10 +445,10 @@ END
                        "Recognized are: ".join(' ', @gTags).".\n\n");
        }
        if (&setbug) {
-           if ($s_keywords eq '') {
+           if ($data->{keywords} eq '') {
                &transcript("There were no tags set.\n");
            } else {
-               &transcript("Tags were: $s_keywords\n");
+               &transcript("Tags were: $data->{keywords}\n");
            }
            if ($addsub eq "set") {
                $action= "Tags set to: " . join(", ", @okaytags);
@@ -458,20 +458,20 @@ END
                $action= "Tags removed: " . join(", ", @okaytags);
            }
            do {
-                &addmaintainers($s_package);
-               $s_keywords = '' if ($addsub eq "set");
+                &addmaintainers($data->{package});
+               $data->{keywords} = '' if ($addsub eq "set");
                if ($addsub eq "sub") {
                    foreach my $t (@badtags) {
-                       $s_keywords = join ' ', grep $_ ne $t, 
-                           split ' ', $s_keywords;
+                       $data->{keywords} = join ' ', grep $_ ne $t, 
+                           split ' ', $data->{keywords};
                    }
                }
                foreach my $t (@okaytags) {
-                   $s_keywords = join ' ', grep $_ ne $t, 
-                       split ' ', $s_keywords;
-                   $s_keywords = "$t $s_keywords" unless($addsub eq "sub");
+                   $data->{keywords} = join ' ', grep $_ ne $t, 
+                       split ' ', $data->{keywords};
+                   $data->{keywords} = "$t $data->{keywords}" unless($addsub eq "sub");
                }
-               $s_keywords =~ s/\s*$//;
+               $data->{keywords} =~ s/\s*$//;
             } while (&getnextbug);
        }
     } elsif (m/^retitle\s+\#?(-?\d+)\s+(\S.*\S)\s*$/i) {
@@ -482,12 +482,12 @@ END
        }
         if (&getbug) {
             &foundbug;
-            &addmaintainers($s_package);
-            $s_subject= $newtitle;
+            &addmaintainers($data->{package});
+            $data->{subject}= $newtitle;
             $action= "Changed $gBug title.";
             &savebug;
             &transcript("$action\n");
-            if (length($s_done)) {
+            if (length($data->{done})) {
                 &transcript("(By the way, that $gBug is currently marked as done.)\n");
             }
             &transcript("\n");
@@ -498,17 +498,17 @@ END
        $ok++;
        $ref= $1;
        if (&setbug) {
-           if (!length($s_mergedwith)) {
+           if (!length($data->{mergedwith})) {
                &transcript("$gBug is not marked as being merged with any others.\n\n");
                &nochangebug;
            } else {
                 $mergelowstate eq 'locked' || die "$mergelowstate ?";
                $action= "Disconnected #$ref from all other report(s).";
-               @newmergelist= split(/ /,$s_mergedwith);
+               @newmergelist= split(/ /,$data->{mergedwith});
                 $discref= $ref;
                 do {
-                    &addmaintainers($s_package);
-                   $s_mergedwith= ($ref == $discref) ? ''
+                    &addmaintainers($data->{package});
+                   $data->{mergedwith}= ($ref == $discref) ? ''
                         : join(' ',grep($_ ne $ref,@newmergelist));
                 } while (&getnextbug);
            }
@@ -525,21 +525,21 @@ END
            next if grep($_ eq $ref,@newmergelist);
            if (!&getbug) { &notfoundbug; @newmergelist=(); last }
             &foundbug;
-            &transcript("D| adding $ref ($s_mergedwith)\n") if $dl;
+            &transcript("D| adding $ref ($data->{mergedwith})\n") if $dl;
            $mismatch= '';
-           &checkmatch('package','m_package',$s_package);
-           &checkmatch('forwarded addr','m_forwarded',$s_forwarded);
-           $s_severity = '$gDefaultSeverity' if $s_severity eq '';
-           &checkmatch('severity','m_severity',$s_severity);
-           &checkmatch('done mark','m_done',length($s_done) ? 'done' : 'open');
-           foreach my $t (split /\s+/, $s_keywords) { $tags{$t} = 1; }
+           &checkmatch('package','m_package',$data->{package});
+           &checkmatch('forwarded addr','m_forwarded',$data->{forwarded});
+           $data->{severity} = '$gDefaultSeverity' if $data->{severity} eq '';
+           &checkmatch('severity','m_severity',$data->{severity});
+           &checkmatch('done mark','m_done',length($data->{done}) ? 'done' : 'open');
+           foreach my $t (split /\s+/, $data->{keywords}) { $tags{$t} = 1; }
            if (length($mismatch)) {
                &transcript("Mismatch - only $gBugs in same state can be merged:\n".
                             $mismatch."\n");
                &cancelbug; @newmergelist=(); last;
            }
             push(@newmergelist,$ref);
-            push(@tomerge,split(/ /,$s_mergedwith));
+            push(@tomerge,split(/ /,$data->{mergedwith}));
            &cancelbug;
        }
        if (@newmergelist) {
@@ -547,9 +547,9 @@ END
             $action= "Merged @newmergelist.";
            for $ref (@newmergelist) {
                &getbug || die "huh ?  $gBug $ref disappeared during merge";
-                &addmaintainers($s_package);
-               $s_mergedwith= join(' ',grep($_ ne $ref,@newmergelist));
-               $s_keywords= join(' ', keys %tags);
+                &addmaintainers($data->{package});
+               $data->{mergedwith}= join(' ',grep($_ ne $ref,@newmergelist));
+               $data->{keywords}= join(' ', keys %tags);
                &savebug;
            }
            &transcript("$action\n\n");
@@ -564,7 +564,7 @@ END
 
        $ref = $origref;
        if (&setbug) {
-           if (length($s_mergedwith)) {
+           if (length($data->{mergedwith})) {
                &transcript("$gBug is marked as being merged with others.\n\n");
                &nochangebug;
            } else {
@@ -592,7 +592,7 @@ END
                    copy("db-h/$ohash/$origref.log", "db-h/$hash/$ref.log");
                    copy("db-h/$ohash/$origref.status", "db-h/$hash/$ref.status");
                    copy("db-h/$ohash/$origref.report", "db-h/$hash/$ref.report");
-                   &bughook('new', $ref, "$s_originator\n$s_date\n$s_subject\n$s_msgid\n$s_package\n$s_keywords\n$s_done\n$s_forwarded\n$s_mergedwith\n$s_severity\n");
+                   &bughook('new', $ref, "$data->{originator}\n$data->{date}\n$data->{subject}\n$data->{msgid}\n$data->{package}\n$data->{keywords}\n$data->{done}\n$data->{forwarded}\n$data->{mergedwith}\n$data->{severity}\n");
 
                    $ref++;
                }
@@ -773,7 +773,7 @@ sub setbug {
         &dlex("setbug => 0s");
         return 0;
     }
-    @thisbugmergelist= split(/ /,$s_mergedwith);
+    @thisbugmergelist= split(/ /,$data->{mergedwith});
     if (!@thisbugmergelist) {
         &foundbug;
         $manybugs= 0;
@@ -835,7 +835,7 @@ sub getnextbug {
 #    endmerge
 
 sub notfoundbug { &transcript("$gBug number $ref not found.\n\n"); }
-sub foundbug { &transcript("$gBug#$ref: $s_subject\n"); }
+sub foundbug { &transcript("$gBug#$ref: $data->{subject}\n"); }
 
 sub getmerge {
     &dlen("getmerge");
@@ -856,7 +856,7 @@ sub endmerge {
 sub getbug {
     &dlen("getbug $ref");
     $lowstate eq 'idle' || die "$state ?";
-    if (&lockreadbug($ref)) {
+    if (($data = &lockreadbug($ref))) {
         $sref= $ref;
         $lowstate= "open";
         &dlex("getbug => 1");
@@ -891,37 +891,7 @@ sub savebug {
           "\3\n".
           "\7\n",@{escapelog(@log)},"\n\3\n") || &quit("writing db-h/$hash/$ref.log: $!");
     close(L) || &quit("closing db-h/$hash/$ref.log: $!");
-    open(S,">db-h/$hash/$ref.status.new") || &quit("opening db-h/$hash/$ref.status.new: $!");
-    print(S
-          "$s_originator\n".
-          "$s_date\n".
-          "$s_subject\n".
-          "$s_msgid\n".
-          "$s_package\n".
-          "$s_keywords\n".
-          "$s_done\n".
-          "$s_forwarded\n".
-          "$s_mergedwith\n".
-          "$s_severity\n".
-          "$s_versions\n".
-         "$s_fixed_versions\n") || &quit("writing db-h/$hash/$ref.status.new: $!");
-    close(S) || &quit("closing db-h/$hash/$ref.status.new: $!");
-    rename("db-h/$hash/$ref.status.new","db-h/$hash/$ref.status") ||
-        &quit("installing new db-h/$hash/$ref.status: $!");
-       &bughook('change',$ref,
-          "$s_originator\n".
-          "$s_date\n".
-          "$s_subject\n".
-          "$s_msgid\n".
-          "$s_package\n".
-          "$s_keywords\n".
-          "$s_done\n".
-          "$s_forwarded\n".
-          "$s_mergedwith\n".
-         "$s_severity\n".
-         "$s_versions\n".
-         "$s_fixed_versions\n");
-    &unfilelock;
+    writebug($ref, $data);
     $lowstate= "idle";
     &dlex("savebug");
 }
index d3108a36d57df4965f355472b29be0e4a82c55b4..2e1155b4c733b4c92c628e86257bd47db8608ec6 100755 (executable)
@@ -1,5 +1,5 @@
 #!/usr/bin/perl
-# $Id: summary.in,v 1.7 2003/01/08 12:47:56 cjwatson Exp $
+# $Id: summary.in,v 1.8 2003/05/03 20:01:20 doogie Exp $
 
 $config_path = '/etc/debbugs';
 $lib_path = '/usr/lib/debbugs';
@@ -49,16 +49,16 @@ $head= $mode eq 'bymaint'
 $amonths=-1;
 
 while (length($f=shift(@list))) {
-    if (!lockreadbug($f)) { next; }
-    $_= $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" :
@@ -68,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");
     }