our $recurse = 1;
our $unit = 86400;
our $slop;
+our $debug;
our @intervals;
sub badusage ($) {
$_->{A} = ($newest_t - $_->{T}) / $unit foreach @files;
$slop /= $unit;
-# print DEBUG Dumper(\@files, \@intervals);
+ print DEBUG Dumper(\@files, \@intervals) if $debug >= 2;
}
sub flag ($) {
my ($int) = @_;
my $n = $int->{N};
my $d = $int->{D};
- my $dmin = $d - $slop;
+ my $dmax = $d + $slop;
my $spec = $int->{Spec};
my $start_age = ($n+1) * $d;
my $i = 0;
- print DEBUG "FLAG $spec sa=$start_age dmin=$dmin\n";
+ print DEBUG "FLAG $spec sa=$start_age dmax=$dmax\n";
# find $i, the youngest which is at least $number x $interval
for (;;) {
for (;;) {
push @{ $files[$i]{U} }, $spec;
- # find $j, the closest to $i which is at least $d-slop younger
+ # find $j, the closest to $i which is no more than $dmax younger
my $j = $i;
for (;;) {
$j--;
- last if $j < 0;
- last if $files[$j];
- my $dt = $files[$i]{A} - $files[$j]{A};
- print DEBUG "j #$j $files[$j]{A} dt=$dt\n";
- last if $dt >= $dmin;
+ last if $j <= 0;
+ my $ndt = $files[$i]{A} - $files[$j-1]{A};
+ print DEBUG "j #$j $files[$j]{A} ndt=$ndt\n";
+ last if $ndt > $dmax;
}
last if $j < 0;
while (m/^-./) {
if (s/^-n/-/) { $rm=0; }
elsif (s/-r/-/) { $recurse=1; }
- elsif (s/-D/-/) { open DEBUG, ">&STDERR" or die $!; DEBUG->autoflush(1) }
+ elsif (s/-D/-/) { $debug++; }
elsif (s/-u(\d+)$//) { $unit=$1; }
elsif (s/-s(\d+)$//) { $slop=$1; }
else { badusage "unknown short option $_" }
badusage "too few arguments" unless @ARGV;
+if ($debug) {
+ open DEBUG, ">&STDERR" or die $!;
+ DEBUG->autoflush(1);
+}
+
$slop //= $unit * 0.1;
foreach (@ARGV) {