comparison lisp/net/tramp-smb.el @ 108244:2ee48fcc701c

Add FORCE argument to `delete-file'. * net/ange-ftp.el (ange-ftp-del-tmp-name): Make it a defun, forcing to delete the temporary file. (ange-ftp-delete-file): Add FORCE arg. (ange-ftp-rename-remote-to-remote) (ange-ftp-rename-local-to-remote, ange-ftp-rename-remote-to-local) (ange-ftp-load, ange-ftp-compress, ange-ftp-uncompress): Force file deletion. * net/tramp-compat.el (tramp-compat-delete-file): New defun. * net/tramp.el (tramp-handle-delete-file): Add FORCE arg. (tramp-handle-make-symbolic-link, tramp-handle-load) (tramp-do-copy-or-rename-file-via-buffer) (tramp-do-copy-or-rename-file-directly) (tramp-do-copy-or-rename-file-out-of-band) (tramp-handle-process-file, tramp-handle-call-process-region) (tramp-handle-shell-command, tramp-handle-file-local-copy) (tramp-handle-insert-file-contents, tramp-handle-write-region) (tramp-delete-temp-file-function): Use `tramp-compat-delete-file'. * net/tramp-fish.el (tramp-fish-handle-delete-file): Add FORCE arg. (tramp-fish-handle-make-symbolic-link) (tramp-fish-handle-process-file): Use `tramp-compat-delete-file'. * net/tramp-ftp.el (tramp-ftp-file-name-handler): Use `tramp-compat-delete-file'. * net/tramp-gvfs.el (tramp-gvfs-handle-delete-file): Add FORCE arg. (tramp-gvfs-handle-write-region): Use `tramp-compat-delete-file'. * net/tramp-imap.el (tramp-imap-handle-delete-file): Add FORCE arg. (tramp-imap-do-copy-or-rename-file): Use `tramp-compat-delete-file'. * net/tramp-smb.el (tramp-smb-handle-delete-file): Add FORCE arg. (tramp-smb-handle-copy-file, tramp-smb-handle-file-local-copy) (tramp-smb-handle-rename-file, tramp-smb-handle-write-region): Use `tramp-compat-delete-file'.
author Michael Albinus <michael.albinus@gmx.de>
date Wed, 05 May 2010 12:20:23 +0200
parents 93125d6fab29
children bfc1be04834c
comparison
equal deleted inserted replaced
108243:be3f6d650654 108244:2ee48fcc701c
340 (if tmpfile 340 (if tmpfile
341 ;; Remote filename. 341 ;; Remote filename.
342 (condition-case err 342 (condition-case err
343 (rename-file tmpfile newname ok-if-already-exists) 343 (rename-file tmpfile newname ok-if-already-exists)
344 ((error quit) 344 ((error quit)
345 (delete-file tmpfile) 345 (tramp-compat-delete-file tmpfile 'force)
346 (signal (car err) (cdr err)))) 346 (signal (car err) (cdr err))))
347 347
348 ;; Remote newname. 348 ;; Remote newname.
349 (when (file-directory-p newname) 349 (when (file-directory-p newname)
350 (setq newname (expand-file-name 350 (setq newname (expand-file-name
402 (goto-char (point-min)) 402 (goto-char (point-min))
403 (search-forward-regexp tramp-smb-errors nil t) 403 (search-forward-regexp tramp-smb-errors nil t)
404 (tramp-error 404 (tramp-error
405 v 'file-error "%s `%s'" (match-string 0) directory)))))) 405 v 'file-error "%s `%s'" (match-string 0) directory))))))
406 406
407 (defun tramp-smb-handle-delete-file (filename) 407 (defun tramp-smb-handle-delete-file (filename &optional force)
408 "Like `delete-file' for Tramp files." 408 "Like `delete-file' for Tramp files."
409 (setq filename (expand-file-name filename)) 409 (setq filename (expand-file-name filename))
410 (when (file-exists-p filename) 410 (when (file-exists-p filename)
411 (with-parsed-tramp-file-name filename nil 411 (with-parsed-tramp-file-name filename nil
412 ;; We must also flush the cache of the directory, because 412 ;; We must also flush the cache of the directory, because
609 (if (tramp-smb-send-command 609 (if (tramp-smb-send-command
610 v (format "get \"%s\" \"%s\"" (tramp-smb-get-localname v) tmpfile)) 610 v (format "get \"%s\" \"%s\"" (tramp-smb-get-localname v) tmpfile))
611 (tramp-message 611 (tramp-message
612 v 4 "Fetching %s to tmp file %s...done" filename tmpfile) 612 v 4 "Fetching %s to tmp file %s...done" filename tmpfile)
613 ;; Oops, an error. We shall cleanup. 613 ;; Oops, an error. We shall cleanup.
614 (delete-file tmpfile) 614 (tramp-compat-delete-file tmpfile 'force)
615 (tramp-error 615 (tramp-error
616 v 'file-error "Cannot make local copy of file `%s'" filename)) 616 v 'file-error "Cannot make local copy of file `%s'" filename))
617 tmpfile))) 617 tmpfile)))
618 618
619 ;; This function should return "foo/" for directories and "bar" for 619 ;; This function should return "foo/" for directories and "bar" for
856 (if tmpfile 856 (if tmpfile
857 ;; Remote filename. 857 ;; Remote filename.
858 (condition-case err 858 (condition-case err
859 (rename-file tmpfile newname ok-if-already-exists) 859 (rename-file tmpfile newname ok-if-already-exists)
860 ((error quit) 860 ((error quit)
861 (delete-file tmpfile) 861 (tramp-compat-delete-file tmpfile 'force)
862 (signal (car err) (cdr err)))) 862 (signal (car err) (cdr err))))
863 863
864 ;; Remote newname. 864 ;; Remote newname.
865 (when (file-directory-p newname) 865 (when (file-directory-p newname)
866 (setq newname (expand-file-name 866 (setq newname (expand-file-name
879 v (format "put %s \"%s\"" filename (tramp-smb-get-localname v))) 879 v (format "put %s \"%s\"" filename (tramp-smb-get-localname v)))
880 (tramp-message 880 (tramp-message
881 v 0 "Copying file %s to file %s...done" filename newname) 881 v 0 "Copying file %s to file %s...done" filename newname)
882 (tramp-error v 'file-error "Cannot rename `%s'" filename))))) 882 (tramp-error v 'file-error "Cannot rename `%s'" filename)))))
883 883
884 (delete-file filename)) 884 (tramp-compat-delete-file filename 'force))
885 885
886 (defun tramp-smb-handle-set-file-modes (filename mode) 886 (defun tramp-smb-handle-set-file-modes (filename mode)
887 "Like `set-file-modes' for Tramp files." 887 "Like `set-file-modes' for Tramp files."
888 (with-parsed-tramp-file-name filename nil 888 (with-parsed-tramp-file-name filename nil
889 (when (tramp-smb-get-cifs-capabilities v) 889 (when (tramp-smb-get-cifs-capabilities v)
943 (if (tramp-smb-send-command 943 (if (tramp-smb-send-command
944 v (format "put %s \"%s\"" tmpfile (tramp-smb-get-localname v))) 944 v (format "put %s \"%s\"" tmpfile (tramp-smb-get-localname v)))
945 (tramp-message 945 (tramp-message
946 v 5 "Writing tmp file %s to file %s...done" tmpfile filename) 946 v 5 "Writing tmp file %s to file %s...done" tmpfile filename)
947 (tramp-error v 'file-error "Cannot write `%s'" filename)) 947 (tramp-error v 'file-error "Cannot write `%s'" filename))
948 (delete-file tmpfile)) 948 (tramp-compat-delete-file tmpfile 'force))
949 949
950 (unless (equal curbuf (current-buffer)) 950 (unless (equal curbuf (current-buffer))
951 (tramp-error 951 (tramp-error
952 v 'file-error 952 v 'file-error
953 "Buffer has changed from `%s' to `%s'" curbuf (current-buffer))) 953 "Buffer has changed from `%s' to `%s'" curbuf (current-buffer)))