[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] /srv/bzr/emacs/trunk r99511: * net/tramp.el (tramp-do-copy
From: |
Michael Albinus |
Subject: |
[Emacs-diffs] /srv/bzr/emacs/trunk r99511: * net/tramp.el (tramp-do-copy-or-rename-file-out-of-band): Fix |
Date: |
Tue, 16 Feb 2010 17:03:29 +0100 |
User-agent: |
Bazaar (2.0.3) |
------------------------------------------------------------
revno: 99511
committer: Michael Albinus <address@hidden>
branch nick: trunk
timestamp: Tue 2010-02-16 17:03:29 +0100
message:
* net/tramp.el (tramp-do-copy-or-rename-file-out-of-band): Fix
errors in copying directories.
(tramp-handle-add-name-to-file, tramp-handle-copy-directory)
(tramp-do-copy-or-rename-file, tramp-handle-delete-directory)
(tramp-handle-delete-file)
(tramp-handle-dired-recursive-delete-directory)
(tramp-handle-write-region): Flush also the cache for the upper
directory.
modified:
lisp/ChangeLog
lisp/net/tramp.el
=== modified file 'lisp/ChangeLog'
--- a/lisp/ChangeLog 2010-02-16 14:40:45 +0000
+++ b/lisp/ChangeLog 2010-02-16 16:03:29 +0000
@@ -1,3 +1,14 @@
+2010-02-16 Michael Albinus <address@hidden>
+
+ * net/tramp.el (tramp-do-copy-or-rename-file-out-of-band): Fix
+ errors in copying directories.
+ (tramp-handle-add-name-to-file, tramp-handle-copy-directory)
+ (tramp-do-copy-or-rename-file, tramp-handle-delete-directory)
+ (tramp-handle-delete-file)
+ (tramp-handle-dired-recursive-delete-directory)
+ (tramp-handle-write-region): Flush also the cache for the upper
+ directory.
+
2010-02-16 Chong Yidong <address@hidden>
* simple.el (save-interprogram-paste-before-kill): Doc fix.
=== modified file 'lisp/net/tramp.el'
--- a/lisp/net/tramp.el 2010-02-15 15:04:53 +0000
+++ b/lisp/net/tramp.el 2010-02-16 16:03:29 +0000
@@ -3420,6 +3420,7 @@
(tramp-error
v2 'file-error
"add-name-to-file: file %s already exists" newname))
+ (tramp-flush-file-property v2 (file-name-directory v2-localname))
(tramp-flush-file-property v2 v2-localname)
(tramp-barf-unless-okay
v1
@@ -3478,7 +3479,13 @@
'copy dirname newname keep-date))
;; We must do it file-wise.
(tramp-run-real-handler
- 'copy-directory (list dirname newname keep-date parents))))))
+ 'copy-directory (list dirname newname keep-date parents)))
+
+ ;; When newname did exist, we have wrong cached values.
+ (when t2
+ (with-parsed-tramp-file-name newname nil
+ (tramp-flush-file-property v (file-name-directory localname))
+ (tramp-flush-file-property v localname))))))
(defun tramp-handle-rename-file
(filename newname &optional ok-if-already-exists)
@@ -3583,11 +3590,13 @@
;; In case of `rename', we must flush the cache of the source file.
(when (and t1 (eq op 'rename))
(with-parsed-tramp-file-name filename nil
+ (tramp-flush-file-property v (file-name-directory localname))
(tramp-flush-file-property v localname)))
;; When newname did exist, we have wrong cached values.
(when t2
(with-parsed-tramp-file-name newname nil
+ (tramp-flush-file-property v (file-name-directory localname))
(tramp-flush-file-property v localname)))
(with-parsed-tramp-file-name (if t1 filename newname) nil
@@ -3789,7 +3798,13 @@
;; Both are Tramp files. We shall optimize it, when the
;; methods for filename and newname are the same.
- (let ((tmpfile (tramp-compat-make-temp-file localname)))
+ (let ((tmpfile
+ (if (file-regular-p filename)
+ (tramp-compat-make-temp-file localname)
+ (make-temp-name
+ (expand-file-name
+ tramp-temp-name-prefix
+ (tramp-compat-temporary-file-directory))))))
(unwind-protect
(progn
(tramp-do-copy-or-rename-file-out-of-band
@@ -3798,7 +3813,9 @@
'rename tmpfile newname keep-date))
;; Save exit.
(condition-case nil
- (delete-file tmpfile)
+ (if (file-regular-p tmpfile)
+ (delete-file tmpfile)
+ (delete-directory tmpfile 'recursive))
(error))))
;; Expand hops. Might be necessary for gateway methods.
@@ -3913,7 +3930,9 @@
;; If the operation was `rename', delete the original file.
(unless (eq op 'copy)
- (delete-file filename)))))
+ (if (file-regular-p filename)
+ (delete-file filename)
+ (delete-directory filename 'recursive))))))
(defun tramp-handle-make-directory (dir &optional parents)
"Like `make-directory' for Tramp files."
@@ -3932,6 +3951,7 @@
"Like `delete-directory' for Tramp files."
(setq directory (expand-file-name directory))
(with-parsed-tramp-file-name directory nil
+ (tramp-flush-file-property v (file-name-directory localname))
(tramp-flush-directory-property v localname)
(unless (zerop (tramp-send-command-and-check
v
@@ -3945,6 +3965,7 @@
"Like `delete-file' for Tramp files."
(setq filename (expand-file-name filename))
(with-parsed-tramp-file-name filename nil
+ (tramp-flush-file-property v (file-name-directory localname))
(tramp-flush-file-property v localname)
(unless (zerop (tramp-send-command-and-check
v
@@ -3974,6 +3995,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-file-property v (file-name-directory localname))
(tramp-flush-directory-property v localname)
(and (file-exists-p filename)
(tramp-error
@@ -4953,11 +4975,9 @@
(or (file-directory-p localname)
(file-writable-p localname)))))
;; Short track: if we are on the local host, we can run directly.
- (progn
- (tramp-run-real-handler
- 'write-region
- (list start end localname append 'no-message lockname confirm))
- (tramp-flush-file-property v localname))
+ (tramp-run-real-handler
+ 'write-region
+ (list start end localname append 'no-message lockname confirm))
(let ((rem-dec (tramp-get-remote-coding v "remote-decoding"))
(loc-enc (tramp-get-local-coding v "local-encoding"))
@@ -5121,8 +5141,7 @@
" decode using `%s' failed")
filename rem-dec)))
(tramp-message
- v 5 "Decoding region into remote file %s...done" filename)
- (tramp-flush-file-property v localname))
+ v 5 "Decoding region into remote file %s...done" filename))
;; Save exit.
(delete-file tmpfile)))
@@ -5139,6 +5158,9 @@
(when coding-system-used
(set 'last-coding-system-used coding-system-used))))
+ (tramp-flush-file-property v (file-name-directory localname))
+ (tramp-flush-file-property v localname)
+
;; We must protect `last-coding-system-used', now we have set it
;; to its correct value.
(let (last-coding-system-used (need-chown t))
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] /srv/bzr/emacs/trunk r99511: * net/tramp.el (tramp-do-copy-or-rename-file-out-of-band): Fix,
Michael Albinus <=