Mercurial > emacs
comparison lisp/net/tramp-smb.el @ 100923:7bf074994867
* net/tramp-smb.el (tramp-smb-handle-copy-file)
(tramp-smb-handle-rename-file, tramp-smb-handle-write-region):
Delete temporary file in case of error.
author | Michael Albinus <michael.albinus@gmx.de> |
---|---|
date | Mon, 05 Jan 2009 19:40:00 +0000 |
parents | 51f12f881f02 |
children | 3b92ee10ce02 |
comparison
equal
deleted
inserted
replaced
100922:2b84620022aa | 100923:7bf074994867 |
---|---|
214 | 214 |
215 (let ((tmpfile (file-local-copy filename))) | 215 (let ((tmpfile (file-local-copy filename))) |
216 | 216 |
217 (if tmpfile | 217 (if tmpfile |
218 ;; Remote filename. | 218 ;; Remote filename. |
219 (rename-file tmpfile newname ok-if-already-exists) | 219 (condition-case err |
220 (rename-file tmpfile newname ok-if-already-exists) | |
221 (error (delete-file tmpfile) | |
222 (signal (car err) (cdr err)))) | |
220 | 223 |
221 ;; Remote newname. | 224 ;; Remote newname. |
222 (when (file-directory-p newname) | 225 (when (file-directory-p newname) |
223 (setq newname (expand-file-name | 226 (setq newname (expand-file-name |
224 (file-name-nondirectory filename) newname))) | 227 (file-name-nondirectory filename) newname))) |
546 newname (expand-file-name newname)) | 549 newname (expand-file-name newname)) |
547 | 550 |
548 (let ((tmpfile (file-local-copy filename))) | 551 (let ((tmpfile (file-local-copy filename))) |
549 | 552 |
550 (if tmpfile | 553 (if tmpfile |
551 ;; remote filename | 554 ;; Remote filename. |
552 (rename-file tmpfile newname ok-if-already-exists) | 555 (condition-case err |
553 | 556 (rename-file tmpfile newname ok-if-already-exists) |
554 ;; remote newname | 557 (error (delete-file tmpfile) |
558 (signal (car err) (cdr err)))) | |
559 | |
560 ;; Remote newname. | |
555 (when (file-directory-p newname) | 561 (when (file-directory-p newname) |
556 (setq newname (expand-file-name | 562 (setq newname (expand-file-name |
557 (file-name-nondirectory filename) newname))) | 563 (file-name-nondirectory filename) newname))) |
558 | 564 |
559 (with-parsed-tramp-file-name newname nil | 565 (with-parsed-tramp-file-name newname nil |
616 (if confirm ; don't pass this arg unless defined for backward compat. | 622 (if confirm ; don't pass this arg unless defined for backward compat. |
617 (list start end tmpfile append 'no-message lockname confirm) | 623 (list start end tmpfile append 'no-message lockname confirm) |
618 (list start end tmpfile append 'no-message lockname))) | 624 (list start end tmpfile append 'no-message lockname))) |
619 | 625 |
620 (tramp-message v 5 "Writing tmp file %s to file %s..." tmpfile filename) | 626 (tramp-message v 5 "Writing tmp file %s to file %s..." tmpfile filename) |
621 (if (tramp-smb-send-command v (format "put %s \"%s\"" tmpfile file)) | 627 (unwind-protect |
622 (tramp-message | 628 (if (tramp-smb-send-command v (format "put %s \"%s\"" tmpfile file)) |
623 v 5 "Writing tmp file %s to file %s...done" tmpfile filename) | 629 (tramp-message |
624 (tramp-error v 'file-error "Cannot write `%s'" filename)) | 630 v 5 "Writing tmp file %s to file %s...done" tmpfile filename) |
625 | 631 (tramp-error v 'file-error "Cannot write `%s'" filename)) |
626 (delete-file tmpfile) | 632 (delete-file tmpfile)) |
633 | |
627 (unless (equal curbuf (current-buffer)) | 634 (unless (equal curbuf (current-buffer)) |
628 (tramp-error | 635 (tramp-error |
629 v 'file-error | 636 v 'file-error |
630 "Buffer has changed from `%s' to `%s'" curbuf (current-buffer))) | 637 "Buffer has changed from `%s' to `%s'" curbuf (current-buffer))) |
631 (when (eq visit t) | 638 (when (eq visit t) |