changeset 103531:74d482177a44

* net/tramp-smb.el (tramp-smb-file-name-handler-alist): Add handler for `dired-uncache'. (tramp-smb-handle-file-local-copy): Cleanup in case of error.
author Michael Albinus <michael.albinus@gmx.de>
date Mon, 22 Jun 2009 21:08:29 +0000
parents bd92ac143136
children 898b2151d69f
files lisp/net/tramp-smb.el
diffstat 1 files changed, 7 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/net/tramp-smb.el	Mon Jun 22 21:07:52 2009 +0000
+++ b/lisp/net/tramp-smb.el	Mon Jun 22 21:08:29 2009 +0000
@@ -139,7 +139,7 @@
     (directory-files-and-attributes . tramp-smb-handle-directory-files-and-attributes)
     (dired-call-process . ignore)
     (dired-compress-file . ignore)
-    ;; `dired-uncache' performed by default handler
+    (dired-uncache . tramp-handle-dired-uncache)
     ;; `expand-file-name' not necessary because we cannot expand "~/"
     (file-accessible-directory-p . tramp-smb-handle-file-directory-p)
     (file-attributes . tramp-smb-handle-file-attributes)
@@ -375,16 +375,18 @@
 (defun tramp-smb-handle-file-local-copy (filename)
   "Like `file-local-copy' for Tramp files."
   (with-parsed-tramp-file-name filename nil
+    (unless (file-exists-p filename)
+      (tramp-error
+       v 'file-error
+       "Cannot make local copy of non-existing file `%s'" filename))
     (let ((file (tramp-smb-get-localname localname t))
 	  (tmpfile (tramp-compat-make-temp-file filename)))
-      (unless (file-exists-p filename)
-	(tramp-error
-	 v 'file-error
-	 "Cannot make local copy of non-existing file `%s'" filename))
       (tramp-message v 4 "Fetching %s to tmp file %s..." filename tmpfile)
       (if (tramp-smb-send-command v (format "get \"%s\" %s" file tmpfile))
 	  (tramp-message
 	   v 4 "Fetching %s to tmp file %s...done" filename tmpfile)
+	;; Oops, an error.  We shall cleanup.
+	(delete-file tmpfile)
 	(tramp-error
 	 v 'file-error
 	 "Cannot make local copy of file `%s'" filename))