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)