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))))))