]> git.donarmstrong.com Git - debbugs.git/blobdiff - scripts/expire.in
fix bug in getversions
[debbugs.git] / scripts / expire.in
index d2284036212650886099c51a0793ac204c960734..97b4dbc06aa648541fc425a0fba27bd8505cab78 100755 (executable)
@@ -1,8 +1,9 @@
 #!/usr/bin/perl
-# $Id: expire.in,v 1.16 2003/05/25 13:17:14 cjwatson Exp $
+# $Id: expire.in,v 1.23 2005/08/09 23:12:07 cjwatson Exp $
 
-# Load modules and set envirnment
+# Load modules and set environment
 use File::Copy;
+use File::Path;
 $config_path = '/etc/debbugs';
 $lib_path = '/usr/lib/debbugs';
 
@@ -11,6 +12,9 @@ require("$config_path/text");
 require("$lib_path/errorlib");
 $ENV{'PATH'} = $lib_path.':'.$ENV{'PATH'};
 
+# No $gRemoveAge means "never expire".
+exit 0 unless $gRemoveAge;
+
 chdir("$gSpoolDir") || die "chdir spool: $!\n";
 
 #global variables
@@ -22,66 +26,71 @@ opendir(DIR,"db-h") || &quit("opendir db: $!\n");
 @dirs = sort { $a <=> $b } grep(s,^,db-h/,, grep(m/^\d+$/,readdir(DIR)));
 close(DIR);
 foreach my $dir (@dirs) {
-       opendir(DIR,$dir);
-       push @list, sort { $a <=> $b } grep(s/\.status$//,grep(m/^\d+\.status$/,readdir(DIR)));
-       close(DIR);
+    opendir(DIR,$dir);
+    push @list, sort { $a <=> $b } grep(s/\.summary$//,grep(m/^\d+\.summary$/,readdir(DIR)));
+    close(DIR);
 }
 
 #process each bug (ie, status file)
 while (length($ref=shift(@list))) {
-       print STDERR "$ref considering\n" if $debug;
+    print "$ref considering\n" if $debug;
     ($bfound, $data)= &lockreadbugmerge($ref);
-       print STDERR "$ref read $bfound\n" if $debug;
+    print "$ref read $bfound\n" if $debug;
     $bfound || next;
-       print "$ref read ok (done $data->{done})\n" if $debug;
+    print "$ref read ok (done $data->{done})\n" if $debug;
     (&unlockreadbugmerge($bfound), next) unless length($data->{done});
-       print "$ref read done\n" if $debug;
+    print "$ref read done\n" if $debug;
     @aref= ($ref);
-    if (length($data->{mergedwith})) { push(@aref,split / /,$data->{mergedwith}); }
-       print "$ref aref @aref\n" if $debug;
+    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;
+        print "$ref $mref check\n" if $debug;
         if ($mref != $ref) {
-               print "$ref $mref reading\n" if $debug;
+            print "$ref $mref reading\n" if $debug;
             $newdata = &lockreadbug($mref) || die "huh $mref ?";
-               print "$ref $mref read ok\n" if $debug;
+            print "$ref $mref read ok\n" if $debug;
             $bfound++;
         } else {
             $newdata = $data;
         }
-       print "$ref $mref read/not\n" if $debug;
+        print "$ref $mref read/not\n" if $debug;
         $expectmerge= join(' ',grep($_ != $mref, sort { $a <=> $b } @aref));
         $newdata->{mergedwith} eq $expectmerge ||
             die "$ref -> $mref: ($newdata->{mergedwith}) vs. ($expectmerge) (@aref)";
-               print "$ref $mref merge-ok\n" if $debug;
+        print "$ref $mref merge-ok\n" if $debug;
         length($newdata->{done}) || die "$ref -> $mref";
-               print "$ref $mref done-ok\n" if $debug;
+        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;
-        if ($days <= $gRemoveAge) 
-               { print "$ref $mref saved\n" if $debug; $oktoremove= 0; }
+        print "ref $mref days $days\n" if $debug;
+        if ($days <= $gRemoveAge) {
+            print "$ref $mref saved\n" if $debug;
+            $oktoremove= 0;
+        }
     }
     if ($oktoremove) {
-       print "$ref removing\n" if $debug;
+        print "$ref removing\n" if $debug;
         for $mref (@aref) {
-               print "$ref removing $mref\n" if $debug;
-               my $dir = get_hashname($mref);
-               if ( $gSaveOldBugs ) {
-                       `mkdir -p "archive/$dir"`;
-                       link( "db-h/$dir/$mref.log", "archive/$dir/$mref.log" ) || copy( "db-h/$dir/$mref.log", "archive/$dir/$mref.log" );
-                       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" );
-                       print("archived $mref to archive/$dir (from $ref)\n") || &quit("output old: $!");
-               }
-               unlink("db-h/$dir/$mref.log", "db-h/$dir/$mref.status", "db-h/$dir/$mref.report");
-               print("deleted $mref (from $ref)\n") || &quit("output old: $!");
-               bughook_archive($mref);
+            print "$ref removing $mref\n" if $debug;
+            my $dir = get_hashname($mref);
+            if ($gSaveOldBugs) {
+                mkpath("archive/$dir");
+                link( "db-h/$dir/$mref.log", "archive/$dir/$mref.log" ) || copy( "db-h/$dir/$mref.log", "archive/$dir/$mref.log" );
+                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.summary", "archive/$dir/$mref.summary" ) || copy( "db-h/$dir/$mref.summary", "archive/$dir/$mref.summary" );
+                link( "db-h/$dir/$mref.report", "archive/$dir/$mref.report" ) || copy( "db-h/$dir/$mref.report", "archive/$dir/$mref.report" );
+                print("archived $mref to archive/$dir (from $ref)\n") || &quit("output old: $!");
+            }
+            unlink("db-h/$dir/$mref.log", "db-h/$dir/$mref.status", "db-h/$dir/$mref.summary", "db-h/$dir/$mref.report");
+            print("deleted $mref (from $ref)\n") || &quit("output old: $!");
+            bughook_archive($mref);
         }
     }
-       print "$ref unlocking $bfound\n" if $debug;
+    print "$ref unlocking $bfound\n" if $debug;
     for ($i=0; $i<$bfound; $i++) { &unfilelock; }
-       print "$ref unlocking done\n" if $debug;
+    print "$ref unlocking done\n" if $debug;
 }
 
 close(STDOUT) || &quit("close stdout: $!");