Function: tramp-get-file-property

tramp-get-file-property is an autoloaded and byte-compiled function defined in tramp-cache.el.gz.

Signature

(tramp-get-file-property KEY FILE PROPERTY DEFAULT)

Documentation

Get the PROPERTY of FILE from the cache context of KEY.

Return DEFAULT if not set.

Source Code

;; Defined in /usr/src/emacs/lisp/net/tramp-cache.el.gz
;;;###tramp-autoload
(defun tramp-get-file-property (key file property default)
  "Get the PROPERTY of FILE from the cache context of KEY.
Return DEFAULT if not set."
  ;; Unify localname.  Remove hop from `tramp-file-name' structure.
  (setq file (tramp-compat-file-name-unquote file)
	key (copy-tramp-file-name key))
  (setf (tramp-file-name-localname key)
	(tramp-run-real-handler #'directory-file-name (list file))
	(tramp-file-name-hop key) nil)
  (let* ((hash (tramp-get-hash-table key))
	 (cached (and (hash-table-p hash) (gethash property hash)))
	 (cached-at (and (consp cached) (format-time-string "%T" (car cached))))
	 (value default)
	 cache-used)

    (when ;; We take the value only if there is any, and
	  ;; `remote-file-name-inhibit-cache' indicates that it is
	  ;; still valid.  Otherwise, DEFAULT is set.
	(and (consp cached)
	     (or (null remote-file-name-inhibit-cache)
		 (and (integerp remote-file-name-inhibit-cache)
		      (time-less-p
		       nil
		       (time-add (car cached) remote-file-name-inhibit-cache)))
		 (and (consp remote-file-name-inhibit-cache)
		      (time-less-p
		       remote-file-name-inhibit-cache (car cached)))))
      (setq value (cdr cached)
	    cache-used t))

    (tramp-message
     key 8 "%s %s %s; inhibit: %s; cache used: %s; cached at: %s"
     file property value remote-file-name-inhibit-cache cache-used cached-at)
    ;; For analysis purposes, count the number of getting this file attribute.
    (when (>= tramp-verbose 10)
      (let* ((var (intern (concat "tramp-cache-get-count-" property)))
	     (val (or (and (boundp var) (numberp (symbol-value var))
			   (symbol-value var))
		      0)))
	(set var (1+ val))))
    value))