Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
-use DateTime::Format::ISO8601;
+use DateTime::Format::RFC3339;
our $slop;
our @intervals;
our $slop;
our @intervals;
+sub badusage ($) {
+ print STDERR "bad usage: $_[0]\n$usage" or die $!;
+ exit 8;
+}
+
- my $parser = DateTime::Format::ISO8601->new;
+ my $parser = DateTime::Format::RFC3339->new;
foreach my $f (<[0-9]*>) {
if ($f !~ m/^ \d\d\d\d - \d\d - \d\d
foreach my $f (<[0-9]*>) {
if ($f !~ m/^ \d\d\d\d - \d\d - \d\d
(?: [-+] \d{1,2} \:? \d\d )? )? /x) {
print STDERR "ignoring $f\n";
}
(?: [-+] \d{1,2} \:? \d\d )? )? /x) {
print STDERR "ignoring $f\n";
}
- my $t = $parser->parse_time($f) // confess;
- my $t = $t->epoch() // confess;
- push @files, { F => $f, T => $t, U => [] ];
+ $!=0; $?=0; my $t = `date -d '$&' +%s`;
+ die "date(!) failed on $&: $? $!" if $! || $?;
+ chomp $t or confess;
+ push @files, { F => $f, T => $t, U => [] };
my $n = $int->{Number};
my $d = $int->{Interval};
my $spec = $int->{Spec};
my $n = $int->{Number};
my $d = $int->{Interval};
my $spec = $int->{Spec};
- my $start_age = $int->{Number+1) * $interval;
+ my $start_age = ($n+1) * $d;
my $i = 0;
# find $i, the youngest which is at least $number x $interval
my $i = 0;
# find $i, the youngest which is at least $number x $interval
- push $files[$i]{U}, $spec;
+ push @{ $files[$i]{U} }, $spec;
# find $j, the closest to $i which is at least $d-slop younger
my $j = $i;
# find $j, the closest to $i which is at least $d-slop younger
my $j = $i;
}
foreach (@files) {
next if @{$_->{U}};
}
foreach (@files) {
next if @{$_->{U}};
- print "remove $_>{F}\n";
+ print "remove $_->{F}\n";
if ($rm) {
my $r= system 'rm', ($recurse ? ('-r') : ()), "--", $_->{F};
die "run rm: $!\n" unless defined($r) && $r >= 0;
if ($rm) {
my $r= system 'rm', ($recurse ? ('-r') : ()), "--", $_->{F};
die "run rm: $!\n" unless defined($r) && $r >= 0;
foreach (@ARGV) {
m/^(\d+)x(\d+)$/ or badusage "bad <number>x<interval> $_";
foreach (@ARGV) {
m/^(\d+)x(\d+)$/ or badusage "bad <number>x<interval> $_";
- push @intervals, { Spec => $&, N => $1, I => $2 ];
+ push @intervals, { Spec => $&, N => $1, I => $2 };
-foreach $int (@intervals) { flag $int }
+foreach (@intervals) { flag $_ }