(let* ((modes (tramp-default-file-modes
filename (and (eq mustbenew 'excl) 'nofollow)))
- ;; We use this to save the value of
- ;; `last-coding-system-used' after writing the tmp
- ;; file. At the end of the function, we set
- ;; `last-coding-system-used' to this saved value. This
- ;; way, any intermediary coding systems used while
- ;; talking to the remote shell or suchlike won't hose
- ;; this variable. This approach was snarfed from
- ;; ange-ftp.el.
- coding-system-used
;; Write region into a tmp file. This isn't really
;; needed if we use an encoding function, but currently
;; we use it always because this makes the logic
((error quit)
(setq tramp-temp-buffer-file-name nil)
(delete-file tmpfile)
- (signal (car err) (cdr err))))
+ (signal (car err) (cdr err)))))
- ;; Now, `last-coding-system-used' has the right value.
- ;; Remember it.
- (setq coding-system-used last-coding-system-used))
+ ;; Now, `last-coding-system-used' has the right value.
+ ;; Remember it.
+ (setq coding-system-used last-coding-system-used)
;; The permissions of the temporary file should be set. If
;; FILENAME does not exist (eq modes nil) it has been
v 'file-error
(concat "Method `%s' should specify both encoding and "
"decoding command or an scp program")
- method))))
-
- ;; Make `last-coding-system-used' have the right value.
- (when coding-system-used
- (setq last-coding-system-used coding-system-used)))))))
+ method)))))))))
(defvar tramp-vc-registered-file-names nil
"List used to collect file names, which are checked during `vc-registered'.")
;; VISIT, for example `jka-compr-handler'. We must respect this.
;; See Bug#55166.
`(let* ((filename (expand-file-name ,filename))
- (lockname (file-truename (or ,lockname filename)))
- (handler (and (stringp ,visit)
- (let ((inhibit-file-name-handlers
- `(tramp-file-name-handler
- tramp-crypt-file-name-handler
- . inhibit-file-name-handlers))
- (inhibit-file-name-operation 'write-region))
- (find-file-name-handler ,visit 'write-region)))))
+ (lockname (file-truename (or ,lockname filename)))
+ (handler (and (stringp ,visit)
+ (let ((inhibit-file-name-handlers
+ `(tramp-file-name-handler
+ tramp-crypt-file-name-handler
+ . inhibit-file-name-handlers))
+ (inhibit-file-name-operation 'write-region))
+ (find-file-name-handler ,visit 'write-region))))
+ ;; We use this to save the value of
+ ;; `last-coding-system-used' after writing the tmp file. At
+ ;; the end of the function, we set `last-coding-system-used'
+ ;; to this saved value. This way, any intermediary coding
+ ;; systems used while talking to the remote shell or
+ ;; suchlike won't hose this variable. This approach was
+ ;; snarfed from ange-ftp.el.
+ coding-system-used)
(with-parsed-tramp-file-name filename nil
(if handler
(progn
;; likely that it is needed shortly after `write-region'.
(tramp-set-file-property v localname "file-exists-p" t)
- ;; We must protect `last-coding-system-used', now we have
- ;; set it to its correct value.
- (let (last-coding-system-used (need-chown t))
+ (let ((need-chown t))
;; Set file modification time.
(when (or (eq ,visit t) (stringp ,visit))
(when-let ((file-attr (file-attributes filename 'integer)))
(tramp-set-file-uid-gid filename uid gid))
;; Set extended attributes. We ignore possible errors,
- ;; because ACL strings could be incompatible.
+ ;; because ACL strings or SELinux contexts could be incompatible.
(when attributes
(ignore-errors
(set-file-extended-attributes filename attributes)))
(when (and (null noninteractive)
(or (eq ,visit t) (string-or-null-p ,visit)))
(tramp-message v 0 "Wrote %s" filename))
- (run-hooks 'tramp-handle-write-region-hook)))))))
+ (run-hooks 'tramp-handle-write-region-hook))))
+
+ ;; Make `last-coding-system-used' have the right value.
+ (when coding-system-used
+ (setq last-coding-system-used coding-system-used)))))
;;; Common file name handler functions for different backends:
;; `set-visited-file-modtime' ourselves later on.
(let (create-lockfiles)
(write-region start end tmpfile append 'no-message))
+ ;; Now, `last-coding-system-used' has the right value. Remember it.
+ (setq coding-system-used last-coding-system-used)
(condition-case nil
(rename-file tmpfile filename 'ok-if-already-exists)
(error