/usr/lib/debbugs/expire is in debbugs 2.4.1.1.
This file is owned by root:root, with mode 0o755.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 | #!/usr/bin/perl
# $Id: expire.in,v 1.16 2003/05/25 13:17:14 cjwatson Exp $
# Load modules and set envirnment
use File::Copy;
$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'};
chdir("$gSpoolDir") || die "chdir spool: $!\n";
#global variables
$debug = 0;
defined($startdate= time) || &quit("failed to get time: $!");
#get list of bugs (ie, status files)
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);
}
#process each bug (ie, status file)
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 $data->{done})\n" if $debug;
(&unlockreadbugmerge($bfound), next) unless length($data->{done});
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;
$oktoremove= 1;
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;
$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;
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; }
}
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.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 unlocking $bfound\n" if $debug;
for ($i=0; $i<$bfound; $i++) { &unfilelock; }
print "$ref unlocking done\n" if $debug;
}
close(STDOUT) || &quit("close stdout: $!");
|