Function: tramp-handle-make-auto-save-file-name
tramp-handle-make-auto-save-file-name is a byte-compiled function
defined in tramp.el.gz.
Signature
(tramp-handle-make-auto-save-file-name)
Documentation
Like make-auto-save-file-name for Tramp files.
Returns a file name in tramp-auto-save-directory for autosaving
this file, if that variable is non-nil.
Source Code
;; Defined in /usr/src/emacs/lisp/net/tramp.el.gz
(defun tramp-handle-make-auto-save-file-name ()
"Like `make-auto-save-file-name' for Tramp files.
Returns a file name in `tramp-auto-save-directory' for autosaving
this file, if that variable is non-nil."
(with-parsed-tramp-file-name buffer-file-name nil
(when (stringp tramp-auto-save-directory)
(setq tramp-auto-save-directory
(expand-file-name tramp-auto-save-directory)))
;; Create directory.
(unless (or (null tramp-auto-save-directory)
(file-exists-p tramp-auto-save-directory))
(with-file-modes #o0700
(make-directory tramp-auto-save-directory t)))
(let ((system-type
(if (and (stringp tramp-auto-save-directory)
(tramp-tramp-file-p tramp-auto-save-directory))
'not-windows
system-type))
(auto-save-file-name-transforms
(if (null tramp-auto-save-directory)
auto-save-file-name-transforms))
(filename buffer-file-name)
(buffer-file-name
(if (null tramp-auto-save-directory)
buffer-file-name
(expand-file-name
(tramp-subst-strs-in-string
'(("_" . "|")
("/" . "_a")
(":" . "_b")
("|" . "__")
("[" . "_l")
("]" . "_r"))
(tramp-compat-file-name-unquote (buffer-file-name)))
tramp-auto-save-directory)))
result)
(prog1 ;; Run plain `make-auto-save-file-name'.
(setq result (tramp-run-real-handler #'make-auto-save-file-name nil))
;; Protect against security hole.
(when (and (not tramp-allow-unsafe-temporary-files)
auto-save-default
(file-in-directory-p result temporary-file-directory)
(= (or (file-attribute-user-id
(file-attributes filename 'integer))
tramp-unknown-id-integer)
tramp-root-id-integer)
(not (with-tramp-connection-property
(tramp-get-process v) "unsafe-temporary-file"
(yes-or-no-p
(concat
"Autosave file on local temporary directory, "
"do you want to continue?")))))
(tramp-error v 'file-error "Unsafe autosave file name"))))))