From: Michael Albinus Date: Tue, 14 Apr 2009 14:36:38 +0000 (+0000) Subject: * net/tramp.el (tramp-handle-dired-recursive-delete-directory): X-Git-Tag: emacs-pretest-23.0.93~137 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=260821d3d5413544906ac427f7df9f14826ec0de;p=emacs.git * net/tramp.el (tramp-handle-dired-recursive-delete-directory): Fix an error in flushing cache data. (tramp-handle-process-file): Flush all file cache values for the connection, because the remote process could have changed them. Suggested by Stefan Monnier . Handle QUIT. --- diff --git a/lisp/net/tramp.el b/lisp/net/tramp.el index 5339d14c344..bb1d1416d1a 100644 --- a/lisp/net/tramp.el +++ b/lisp/net/tramp.el @@ -3468,9 +3468,9 @@ be a local filename. The method used must be an out-of-band method." "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 filename) + (tramp-flush-directory-property v localname) ;; Run a shell command 'rm -r ' - ;; Code shamelessly stolen for the dired implementation and, um, hacked :) + ;; Code shamelessly stolen from the dired implementation and, um, hacked :) (unless (file-exists-p filename) (tramp-error v 'file-error "No such directory: %s" filename)) ;; Which is better, -r or -R? (-r works for me ) @@ -3896,7 +3896,12 @@ beginning of local filename are not substituted." (with-current-buffer outbuf (insert output-string))) (when display (display-buffer outbuf)))) - ;; When the user did interrupt, we should do it also. + ;; When the user did interrupt, we should do it also. We use + ;; return code -1 as marker. + (quit + (kill-buffer (tramp-get-connection-buffer v)) + (setq ret -1)) + ;; Handle errors. (error (kill-buffer (tramp-get-connection-buffer v)) (setq ret 1))) @@ -3905,10 +3910,14 @@ beginning of local filename are not substituted." (unless ret (setq ret (tramp-send-command-and-check v nil))) ;; Provide error file. (when tmpstderr (rename-file tmpstderr (cadr destination) t)) - ;; Cleanup. + ;; Cleanup. We remove all file cache values for the connection, + ;; because the remote process could have changed them. (when tmpinput (delete-file tmpinput)) + (tramp-flush-directory-property v "") ;; Return exit status. - ret))) + (if (equal ret -1) + (keyboard-quit) + ret)))) (defun tramp-local-call-process (program &optional infile destination display &rest args)