# HG changeset patch # User Michael Albinus # Date 1239719798 0 # Node ID 3f05108a52f18d82dc0e54591dd2ba963efe0cdc # Parent ed58adc8f9aad02036183360ddc40a2d0c1143cc * 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 -r ed58adc8f9aa -r 3f05108a52f1 lisp/net/tramp.el --- a/lisp/net/tramp.el Tue Apr 14 13:58:35 2009 +0000 +++ b/lisp/net/tramp.el Tue Apr 14 14:36:38 2009 +0000 @@ -3468,9 +3468,9 @@ "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 @@ (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 @@ (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)