* eshell/em-unix.el (eshell/rm): Make -f ignore missing files.
authorGlenn Morris <rgm@gnu.org>
Sun, 15 Sep 2013 00:35:54 +0000 (17:35 -0700)
committerGlenn Morris <rgm@gnu.org>
Sun, 15 Sep 2013 00:35:54 +0000 (17:35 -0700)
Does not work until bug=15379 gets fixed.

Fixes: debbugs:15373

lisp/ChangeLog
lisp/eshell/em-unix.el

index f63a0d6..e151ca9 100644 (file)
@@ -1,5 +1,8 @@
 2013-09-15  Glenn Morris  <rgm@gnu.org>
 
+       * eshell/em-unix.el (eshell/rm):
+       Make -f ignore missing files.  (Bug#15373)
+
        * eshell/esh-cmd.el (eshell--local-vars): New variable.  (Bug#15372)
        (eshell-rewrite-for-command): Add for loop vars to eshell--local-vars.
        * eshell/esh-var.el (eshell-get-variable): Respect eshell--local-vars.
index 52d2b4d..5792fe1 100644 (file)
@@ -284,18 +284,21 @@ Remove (unlink) the FILE(s).")
                                             entry)))))
           (eshell-funcalln 'unintern entry)))
        ((stringp entry)
-        (if (and (file-directory-p entry)
-                 (not (file-symlink-p entry)))
-            (if (or em-recursive
-                    eshell-rm-removes-directories)
-                (if (or em-preview
-                        (not em-interactive)
-                        (y-or-n-p
-                         (format "rm: descend into directory `%s'? "
-                                 entry)))
+        ;; -f should silently ignore missing files (bug#15373).
+        (unless (and force-removal
+                     (not (file-exists-p entry)))
+          (if (and (file-directory-p entry)
+                   (not (file-symlink-p entry)))
+              (if (or em-recursive
+                      eshell-rm-removes-directories)
+                  (if (or em-preview
+                          (not em-interactive)
+                          (y-or-n-p
+                           (format "rm: descend into directory `%s'? "
+                                   entry)))
                     (eshell-remove-entries nil (list entry) t))
-              (eshell-error (format "rm: %s: is a directory\n" entry)))
-          (eshell-remove-entries nil (list entry) t)))))
+                (eshell-error (format "rm: %s: is a directory\n" entry)))
+            (eshell-remove-entries nil (list entry) t))))))
      (setq args (cdr args)))
    nil))