Function: tramp-handle-file-truename

tramp-handle-file-truename is a byte-compiled function defined in tramp.el.gz.

Signature

(tramp-handle-file-truename FILENAME)

Documentation

Like file-truename for Tramp files.

Source Code

;; Defined in /usr/src/emacs/lisp/net/tramp.el.gz
(defun tramp-handle-file-truename (filename)
  "Like `file-truename' for Tramp files."
  (tramp-skeleton-file-truename filename
    (let ((result (directory-file-name localname))
	  (numchase 0)
	  ;; Don't make the following value larger than necessary.
	  ;; People expect an error message in a timely fashion when
	  ;; something is wrong; otherwise they might think that Emacs
	  ;; is hung.  Of course, correctness has to come first.
	  (numchase-limit 20)
	  ;; Unquoting could enable encryption.
	  tramp-crypt-enabled
	  symlink-target)
      (while (and (setq symlink-target
			(file-symlink-p (tramp-make-tramp-file-name v result)))
		  (< numchase numchase-limit))
	(setq numchase (1+ numchase)
	      result
	      (if (tramp-tramp-file-p symlink-target)
		  (file-name-quote symlink-target 'top)
		(tramp-drop-volume-letter
		 (expand-file-name
		  symlink-target (file-name-directory result)))))
	(when (>= numchase numchase-limit)
	  (tramp-error
	   v 'file-error
	   "Maximum number (%d) of symlinks exceeded" numchase-limit)))
      (directory-file-name result))))