+2013-11-11 Michael Albinus <michael.albinus@gmx.de>
+
+ * net/tramp-sh.el (tramp-do-copy-or-rename-file-via-buffer)
+ (tramp-sh-handle-file-local-copy): Don't write a message when
+ saving temporary files.
+
+ * net/tramp-smb.el (tramp-smb-handle-copy-directory): Fix bug when
+ both directories are remote.
+ (tramp-smb-handle-directory-files): Do not return double entries.
+ Do not expand full file names.
+ (tramp-smb-handle-insert-directory): Accept nil SWITCHES.
+ (tramp-smb-handle-write-region): Implement APPEND.
+ (tramp-smb-get-stat-capability): Fix a stupid bug.
+
2013-11-11 Stefan Monnier <monnier@iro.umontreal.ca>
* bindings.el (ctl-x-map): Bind C-x SPC to rectangle-mark-mode.
;; `jka-compr-inhibit' to t.
(let ((coding-system-for-write 'binary)
(jka-compr-inhibit t))
- (write-region (point-min) (point-max) newname)))
+ (write-region (point-min) (point-max) newname nil 'no-message)))
;; KEEP-DATE handling.
(when keep-date (set-file-times newname (nth 5 (file-attributes filename))))
;; Set the mode.
;; epa-file gets confused.
(let (file-name-handler-alist
(coding-system-for-write 'binary))
- (write-region (point-min) (point-max) tmpfile)))
+ (write-region
+ (point-min) (point-max) tmpfile nil 'no-message)))
;; If tramp-decoding-function is not defined for this
;; method, we invoke tramp-decoding-command instead.
(let (file-name-handler-alist
(coding-system-for-write 'binary))
(with-current-buffer (tramp-get-buffer v)
- (write-region (point-min) (point-max) tmpfile2)))
+ (write-region
+ (point-min) (point-max) tmpfile2 nil 'no-message)))
(unwind-protect
(tramp-call-local-coding-command
loc-dec tmpfile2 tmpfile)
(tramp-compat-temporary-file-directory)))))
(unwind-protect
(progn
+ (make-directory tmpdir)
(tramp-compat-copy-directory
- dirname tmpdir keep-date parents)
+ dirname tmpdir keep-date 'parents)
(tramp-compat-copy-directory
- tmpdir newname keep-date parents))
+ (expand-file-name (file-name-nondirectory dirname) tmpdir)
+ newname keep-date parents))
(tramp-compat-delete-directory tmpdir 'recursive))))
;; We can copy recursively.
(directory &optional full match nosort)
"Like `directory-files' for Tramp files."
(let ((result (mapcar 'directory-file-name
- (file-name-all-completions "" directory))))
+ (file-name-all-completions "" directory)))
+ res)
;; Discriminate with regexp.
(when match
(setq result
(when full
(setq result
(mapcar
- (lambda (x) (expand-file-name x directory))
+ (lambda (x) (format "%s/%s" directory x))
result)))
;; Sort them if necessary.
(unless nosort (setq result (sort result 'string-lessp)))
- ;; That's it.
- result))
+ ;; Remove double entries.
+ (dolist (elt result res)
+ (add-to-list 'res elt 'append))))
(defun tramp-smb-handle-expand-file-name (name &optional dir)
"Like `expand-file-name' for Tramp files."
(filename switches &optional wildcard full-directory-p)
"Like `insert-directory' for Tramp files."
(setq filename (expand-file-name filename))
+ (unless switches (setq switches ""))
(if full-directory-p
;; Called from `dired-add-entry'.
(setq filename (file-name-as-directory filename))
"Like `write-region' for Tramp files."
(setq filename (expand-file-name filename))
(with-parsed-tramp-file-name filename nil
- (unless (eq append nil)
- (tramp-error
- v 'file-error "Cannot append to file using Tramp (`%s')" filename))
;; XEmacs takes a coding system as the seventh argument, not `confirm'.
(when (and (not (featurep 'xemacs))
confirm (file-exists-p filename))
(tramp-flush-file-property v localname)
(let ((curbuf (current-buffer))
(tmpfile (tramp-compat-make-temp-file filename)))
+ (when (and append (file-exists-p filename))
+ (copy-file filename tmpfile 'ok))
;; We say `no-message' here because we don't want the visited file
;; modtime data to be clobbered from the temp file. We call
;; `set-visited-file-modtime' ourselves later on.
;; When we are not logged in yet, we return nil.
(if (and (tramp-smb-get-share vec)
(let ((p (tramp-get-connection-process vec)))
- p (processp p) (memq (process-status p) '(run open))))
+ (and p (processp p) (memq (process-status p) '(run open)))))
(with-tramp-connection-property
(tramp-get-connection-process vec) "stat-capability"
(tramp-smb-send-command vec "stat \"/\""))))