Kristofer <[email protected]> writes:
> Hello!
Hi Kristofer,
> But I noticed recently a regression in tramp-sh-handle-file-local-copy
> on the recent master of TRAMP.
> The "let* statement in the beginning of the function was replaced with
> and "if-let". The problem for me is that tramp-inline-coding returns
> nil for me, but instead I just set tramp-copy-size-limit to nil and
> use pscp or psftp for copying.
>
> Do we really need to even check for remote encoding and local encoding
> if tramp-copy-size-limit is set to nil and we are going to do and "out
> of bounds" copy anyways?
Does the appended patch fixes it for you?
> Best Regards
> Kristofer
Best regards, Michael.
diff --git a/lisp/tramp-sh.el b/lisp/tramp-sh.el
index 4a9cf2e6..3e34b696 100644
--- a/lisp/tramp-sh.el
+++ b/lisp/tramp-sh.el
@@ -3269,13 +3269,12 @@ implementation will be used."
(defun tramp-sh-handle-file-local-copy (filename)
"Like `file-local-copy' for Tramp files."
(tramp-skeleton-file-local-copy filename
- (if-let ((size (file-attribute-size (file-attributes filename)))
- (rem-enc (tramp-get-inline-coding v "remote-encoding" size))
- (loc-dec (tramp-get-inline-coding v "local-decoding" size)))
+ (if-let ((size (file-attribute-size (file-attributes filename))))
+ (let (rem-enc loc-dec)
(condition-case err
(cond
- ;; Empty file.
+ ;; Empty file. Nothing to copy.
((zerop size))
;; `copy-file' handles direct copy and out-of-band methods.
@@ -3284,7 +3283,8 @@ implementation will be used."
(copy-file filename tmpfile 'ok-if-already-exists 'keep-time))
;; Use inline encoding for file transfer.
- (rem-enc
+ ((and (setq rem-enc (tramp-get-inline-coding v "remote-encoding" size))
+ (setq loc-dec (tramp-get-inline-coding v "local-decoding" size)))
(with-tramp-progress-reporter
v 3
(format-message
@@ -3343,7 +3343,7 @@ implementation will be used."
;; Error handling.
((error quit)
(delete-file tmpfile)
- (signal (car err) (cdr err))))
+ (signal (car err) (cdr err)))))
;; Impossible to copy. Trigger `file-missing' error.
(setq tmpfile nil))))