]> git.donarmstrong.com Git - debbugs.git/commitdiff
[project @ 2002-11-05 08:25:03 by ajt]
authorajt <>
Tue, 5 Nov 2002 16:25:03 +0000 (08:25 -0800)
committerajt <>
Tue, 5 Nov 2002 16:25:03 +0000 (08:25 -0800)
abstract out some of the code for updating index.db.realtime so we can
update an index.archive.realtime easily too

scripts/errorlib.in

index 0f5ae90a21fd37bf2b71b6371336f2d507e0f15e..ffb874c68ebe09560da7137c5925badd909cb1da 100755 (executable)
@@ -1,5 +1,5 @@
 # -*- perl -*-
-# $Id: errorlib.in,v 1.11 2002/11/02 09:21:42 ajt Exp $
+# $Id: errorlib.in,v 1.12 2002/11/05 08:25:03 ajt Exp $
 
 sub F_SETLK { 6; } sub F_WRLCK{ 1; }
 $flockstruct= 'sslll'; # And there ought to be something for this too.
@@ -103,23 +103,47 @@ sub sani {
     $out;
 }
 
+sub update_realtime {
+       my ($file, $bug, $new) = @_;
+
+       # update realtime index.db
+
+       open(IDXDB, "<$file") or die "Couldn't open $file";
+       open(IDXNEW, ">$file.new");
+
+       my $line;
+       while($line = <IDXDB>) {
+               my @line = split /\s/, $line;
+               last if ($line[1] == $ref);
+               print IDXNEW $line;
+       }
+
+       if ($new eq "NOCHANGE") {
+               print IDXNEW $line;
+       } elsif ($new eq "REMOVE") {
+               0;
+       } else {
+               print IDXNEW $new;
+       }
+
+       print IDXNEW while(<IDXDB>);
+
+       close(IDXNEW);
+       close(IDXDB);
+
+       rename("$file.new", $file);
+
+       return $line;
+}
+
 sub bughook {
        my ( $type, $ref ) = ( shift, shift );
        &filelock("debbugs.trace.lock");
+
        &appendfile("debbugs.trace","$type $ref\n",@_);
-       my @stuff=split/\n/, "$_[0]\n\n\n\n\n\n\n";
 
-       my $hash = get_hashname($ref); # unused
+       my @stuff=split/\n/, "$_[0]\n\n\n\n\n\n\n";
 
-       # update realtime index.db
-       open(IDXDB, "</org/bugs.debian.org/spool/index.db.realtime")
-               or open(IDXDB, "</org/bugs.debian.org/spool/index.db");
-       open(IDXNEW, ">/org/bugs.debian.org/spool/index.db.realtime.new");
-       while(my $line = <IDXDB>) {
-               @line = split /\s/, $line;
-               last if ($line[1] == $ref);
-               print IDXNEW $line;
-       }
        my $firstpkg;
        my $whendone = "open";
        my $severity = $gDefaultSeverity;
@@ -128,15 +152,11 @@ sub bughook {
        $whendone = "done" if length $stuff[6];
        $severity = $stuff[9] if length $stuff[9];
 
-       printf IDXNEW "%s %d %d %s [%s] %s %s\n",
+       my $k = sprintf "%s %d %d %s [%s] %s %s\n",
                        $firstpkg, $ref, $stuff[1], $whendone, $stuff[0],
                        $severity, $stuff[5];
-       print IDXNEW while(<IDXDB>);
-       close(IDXNEW);
-       close(IDXDB);
-       rename("/org/bugs.debian.org/spool/index.db.realtime.new",
-               "/org/bugs.debian.org/spool/index.db.realtime");
 
+       update_realtime("/org/bugs.debian.org/spool/index.db", $ref, $k);
 
        &unfilelock;
 }