Function: tramp-sh-handle-file-truename
tramp-sh-handle-file-truename is a byte-compiled function defined in
tramp-sh.el.gz.
Signature
(tramp-sh-handle-file-truename FILENAME)
Documentation
Like file-truename for Tramp files.
Source Code
;; Defined in /usr/src/emacs/lisp/net/tramp-sh.el.gz
(defun tramp-sh-handle-file-truename (filename)
"Like `file-truename' for Tramp files."
(tramp-skeleton-file-truename filename
(cond
;; Use GNU readlink --canonicalize-missing where available.
((tramp-get-remote-readlink v)
(tramp-maybe-send-script
v tramp-readlink-file-truename "tramp_readlink_file_truename")
(tramp-send-command-and-check
v (format "tramp_readlink_file_truename %s"
(tramp-shell-quote-argument localname)))
(with-current-buffer (tramp-get-connection-buffer v)
(goto-char (point-min))
(tramp-set-file-property
v localname "file-symlink-marker" (read (current-buffer)))
;; We cannot call `read', the file name isn't quoted.
(forward-line)
(buffer-substring (point) (line-end-position))))
;; Use Perl implementation.
((and (tramp-get-remote-perl v)
(tramp-get-connection-property v "perl-file-spec")
(tramp-get-connection-property v "perl-cwd-realpath"))
(tramp-maybe-send-script
v tramp-perl-file-truename "tramp_perl_file_truename")
(tramp-send-command-and-check
v (format "tramp_perl_file_truename %s"
(tramp-shell-quote-argument localname)))
(with-current-buffer (tramp-get-connection-buffer v)
(goto-char (point-min))
(tramp-set-file-property
v localname "file-symlink-marker" (read (current-buffer)))
(read (current-buffer))))
;; Do it yourself.
(t (tramp-file-local-name
(tramp-handle-file-truename filename))))))