Function: tramp-skeleton-file-truename

tramp-skeleton-file-truename is a macro defined in tramp.el.gz.

Signature

(tramp-skeleton-file-truename FILENAME &rest BODY)

Documentation

Skeleton for tramp-*-handle-file-truename.

BODY is the backend specific code.

Source Code

;; Defined in /usr/src/emacs/lisp/net/tramp.el.gz
(defmacro tramp-skeleton-file-truename (filename &rest body)
  "Skeleton for `tramp-*-handle-file-truename'.
BODY is the backend specific code."
  (declare (indent 1) (debug (form body)))
  ;; Preserve trailing "/".
  `(funcall
    (if (directory-name-p ,filename) #'file-name-as-directory #'identity)
    ;; Quote properly.
    (funcall
     (if (file-name-quoted-p ,filename) #'file-name-quote #'identity)
     (with-parsed-tramp-file-name
	 (file-name-unquote (expand-file-name ,filename)) nil
       (tramp-make-tramp-file-name
	v
	(with-tramp-file-property v localname "file-truename"
	  (let (result)
	    (setq result (progn ,@body))
	    ;; Detect cycle.
	    (when (and (file-symlink-p ,filename)
		       (string-equal result localname))
	      (tramp-error
	       v 'file-error
	       "Apparent cycle of symbolic links for %s" ,filename))
	    ;; If the resulting localname looks remote, we must quote
	    ;; it for security reasons.
	    (when (tramp-tramp-file-p result)
	      (setq result (file-name-quote result 'top)))
	    result)))))))