added a date stamp in safedel for the output file names, annotated where i got it...
[feisty_meow.git] / scripts / files / safedel.pl
index 44288b414e9d1cd6dadffcf68e57b1083a25919f..c95e6621f8671d45cbf7387d772ac3179f565848 100644 (file)
 ###############################################################################
 
 require Cwd;
-require "ctime.pl";
 require "filename_helper.pl";
 require "inc_num.pl";
-require "importenv.pl";
 require "zap_the_dir.pl";
 
+use Env qw(TMP OS);
+
 #hmmm: need a usage statement.
 
 if ($#ARGV < 0) {
   die "Too few arguments to command.";
 }
 
-$DEV_NULL = "&> /dev/null";
+$DEV_NULL = "> /dev/null 2> /dev/null";
 if ($OS eq "UNIX") {
   $FIND_ENDING = "';'";
   $zip = "zip -y ";
@@ -72,9 +72,15 @@ sub safedel {
 #  print "final list of whackees: @to_delete\n";
 
   # we store the deleted files in a directory under the temporary directory.
-  $temp_subdir = $TMP . "/zz_del_keep";
+  if (! -d $TMP) { 
+    mkdir "$TMP", 0700;
+    if (! -d $TMP) {
+      die "the TMP directory $TMP could not be created!\n";
+    }
+  }
+  $temp_subdir = $TMP . "/zz_safedel_keep";
   if (! -d $temp_subdir) {
-    mkdir "$temp_subdir", 0777;
+    mkdir "$temp_subdir", 0700;
       # create the subdirectory under temp if missing.
     if (! -d $temp_subdir) {
       die "the directory $temp_subdir could not be created!\n";
@@ -96,36 +102,49 @@ sub safedel {
       print "ignoring attempt to remove current or parent directory.\n";
       next;
     }
-    $tempfile = $temp_subdir . "/temp" . "$number";
-#   print "tempfile is $tempfile; file is $file.\n";
+
+#hmmm: extract this shared bit of code as new method (also in shared snarfer)
+    $date_tool = "date";
+    local($datestamp) = `$date_tool +%Y-%m-%d-%H%M`;
+    while ($datestamp =~ /[\r\n]$/) { chop $datestamp; }
+    $tempfile = $temp_subdir . "/deleted-#$number-" . $datestamp;
+#print "tempfile is $tempfile; file is $file.\n";
+
     if (-d $file) {
       # ensure there aren't any read only files.
       system("chmod -R u+rw \"$file\"");
       # store the directory in the trash storage.
-      system("$zip -rm$use_path $tempfile \"$file$wildcard\" $DEV_NULL");
+      system("$zip -rm $use_path $tempfile \"$file$wildcard\" $DEV_NULL");
         # zip up the files into the safekeeper directory.
       # recursively unlink in case zip doesn't remove the empty dir.
       if (-d $file) {
         # remove the directory itself if possible, since zip did not.
         &recursively_zap_dirs($file);
       }
-      push(@deleted, "$file");
+      push(@deleted, "\"$file\"");
     } elsif (-f $file) {
       # store the file in the trash storage.
       system("chmod u+rw \"$file\"");
+
+#print "about to run: system [$zip -m$use_path $tempfile '$file' $DEV_NULL]";
       system("$zip -m$use_path $tempfile \"$file\" $DEV_NULL");
-      push(@deleted, "$file");
+      push(@deleted, "\"$file\"");
     } else {
       print "$0 cannot find \"$file\" to delete it.\n";
     }
   }
   if (@deleted) {
     print "Trashed [@deleted].\n";
-    open(REPORT, ">>$TMP/zz_safedel.rpt");
+    open(REPORT, ">>$TMP/zz_safedel_report.txt");
 
-    local($printable_date) = &ctime(time);
+    local($printable_date) = scalar(localtime());
+#&ctime(time);
     $printable_date =~ s/\n//g;
-    print REPORT $printable_date . " -- safedel: \"temp" . $number . ".zip\" <= [@deleted]\n";
+    local($just_archived_filename) = `basename "$tempfile"`;
+    while ($just_archived_filename =~ /[\r\n]$/) { chop $just_archived_filename; }
+    print REPORT "\n";
+    print REPORT $printable_date . " -- created \"" . $just_archived_filename . ".zip\"\n";
+    print REPORT $printable_date . " -- from [@deleted]\n";
     close(REPORT);
   } else {
     print "No files were deleted.\n";