chiark / gitweb /
expire-iso8601: break out do_rm and rename to .rm
[chiark-utils.git] / scripts / expire-iso8601
index 6e6da6f52aae60ee1d2a4ce86080003f76371ff3..a36729860079d715388c309487f28984a455070b 100755 (executable)
@@ -183,6 +183,15 @@ sub flag ($) {
   }
 }
 
+sub do_rm ($) {
+  my ($fn) = @_;
+  if ($rm) {
+    my $r= system 'rm', ($recurse ? ('-r') : ()), "--", $fn;
+    die "run rm: $!\n" unless defined($r) && $r >= 0;
+    exit 12 if $r;
+  }
+}
+
 sub implement () {
   foreach (reverse @files) {
     next unless @{$_->{U}};
@@ -194,9 +203,9 @@ sub implement () {
     printf "remove %s - age %.1f\n",
       $_->{F}, $_->{A};
     if ($rm) {
-      my $r= system 'rm', ($recurse ? ('-r') : ()), "--", $_->{F};
-      die "run rm: $!\n" unless defined($r) && $r >= 0;
-      exit 12 if $r;
+      my $tmp = "$_->{F}.rm";
+      rename $_->{F}, $tmp or die "rename $_->{F} to $tmp: $!\n";
+      do_rm($tmp);
     }
   }
 }