X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=scripts%2Fexpire.in;h=26cf7e5da338422a57aafe3e821af2df6f328bbf;hb=aca80d5890ef1ed561bbbf33c555bef93a1cea4b;hp=d85a41ab120581f324b9c4d114caf1c45167449e;hpb=b2bdb713926e641e8f7ea6a11d9666157696197a;p=debbugs.git diff --git a/scripts/expire.in b/scripts/expire.in index d85a41a..26cf7e5 100755 --- a/scripts/expire.in +++ b/scripts/expire.in @@ -1,16 +1,19 @@ #!/usr/bin/perl -# $Id: expire.in,v 1.9 2001/08/19 06:36:43 doogie Exp $ +# $Id: expire.in,v 1.20 2004/01/13 18:48:22 cjwatson Exp $ -# Load modules and set envirnment +# Load modules and set environment use File::Copy; -$config_path = '/org/bugs.debian.org/etc'; -$lib_path = '/org/bugs.debian.org/scripts'; +$config_path = '/etc/debbugs'; +$lib_path = '/usr/lib/debbugs'; require("$config_path/config"); 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 @@ -23,63 +26,61 @@ opendir(DIR,"db-h") || &quit("opendir db: $!\n"); close(DIR); foreach my $dir (@dirs) { opendir(DIR,$dir); - push @list, sort { $a <=> $b } grep(s/\.status$//,grep(m/^\d+\.status$/,readdir(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; - $bfound= &lockreadbugmerge($ref); +while (length($ref=shift(@list))) { + print STDERR "$ref considering\n" if $debug; + ($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 ?"; - print "$ref $mref read ok\n" if $debug; + for $mref (@aref) { + print "$ref $mref check\n" if $debug; + if ($mref != $ref) { + print "$ref $mref reading\n" if $debug; + $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; + 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; if ($days <= $gRemoveAge) - { print "$ref $mref saved\n" if $debug; $oktoremove= 0;} + { print "$ref $mref saved\n" if $debug; $oktoremove= 0; } } - if ($oktoremove) - { 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"`; - copy( "db-h/$dir/$mref.log", "archive/$dir/$mref.log" ); - copy( "db-h/$dir/$mref.status", "archive/$dir/$mref.status" ); - 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; - close IDXFILE; - } else { print "Unable to write to index file\n"; } - - 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: $!"); + if ($oktoremove) { + 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.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;