# HG changeset patch # User Michael Albinus # Date 1254411296 0 # Node ID 4eaec3ddca1cf5af85c894b322dbf1360c52182a # Parent 05719e53cf8bdc8fd96ba4071ec6bbc6631bb74f * net/tramp.el (tramp-handle-make-directory): Flush upper directory's file properties. (tramp-handle-delete-directory): Handle optional parameter RECURSIVE. (tramp-handle-dired-recursive-delete-directory): Flush directory properties after the remove command only. diff -r 05719e53cf8b -r 4eaec3ddca1c lisp/net/tramp.el --- a/lisp/net/tramp.el Thu Oct 01 15:33:44 2009 +0000 +++ b/lisp/net/tramp.el Thu Oct 01 15:34:56 2009 +0000 @@ -3583,6 +3583,7 @@ "Like `make-directory' for Tramp files." (setq dir (expand-file-name dir)) (with-parsed-tramp-file-name dir nil + (tramp-flush-directory-property v (file-name-directory localname)) (save-excursion (tramp-barf-unless-okay v @@ -3591,14 +3592,17 @@ (tramp-shell-quote-argument localname)) "Couldn't make directory %s" dir)))) -(defun tramp-handle-delete-directory (directory) +(defun tramp-handle-delete-directory (directory &optional recursive) "Like `delete-directory' for Tramp files." (setq directory (expand-file-name directory)) (with-parsed-tramp-file-name directory nil (tramp-flush-directory-property v localname) (unless (zerop (tramp-send-command-and-check v - (format "rmdir %s" (tramp-shell-quote-argument localname)))) + (format + "%s %s" + (if recursive "rm -rf" "rmdir") + (tramp-shell-quote-argument localname)))) (tramp-error v 'file-error "Couldn't delete %s" directory)))) (defun tramp-handle-delete-file (filename) @@ -3620,7 +3624,6 @@ "Recursively delete the directory given. This is like `dired-recursive-delete-directory' for Tramp files." (with-parsed-tramp-file-name filename nil - (tramp-flush-directory-property v localname) ;; Run a shell command 'rm -r ' ;; Code shamelessly stolen from the dired implementation and, um, hacked :) (unless (file-exists-p filename) @@ -3635,6 +3638,7 @@ ;; This might take a while, allow it plenty of time. (tramp-wait-for-output (tramp-get-connection-process v) 120) ;; Make sure that it worked... + (tramp-flush-directory-property v localname) (and (file-exists-p filename) (tramp-error v 'file-error "Failed to recursively delete %s" filename))))