Function: tramp-skeleton-directory-files

tramp-skeleton-directory-files is a macro defined in tramp.el.gz.

Signature

(tramp-skeleton-directory-files DIRECTORY &optional FULL MATCH NOSORT COUNT &rest BODY)

Documentation

Skeleton for tramp-*-handle-directory-files.

BODY is the backend specific code.

Source Code

;; Defined in /usr/src/emacs/lisp/net/tramp.el.gz
(defmacro tramp-skeleton-directory-files
    (directory &optional full match nosort count &rest body)
  "Skeleton for `tramp-*-handle-directory-files'.
BODY is the backend specific code."
  (declare (indent 5) (debug t))
  `(or
    (with-parsed-tramp-file-name (expand-file-name ,directory) nil
      (tramp-barf-if-file-missing v ,directory
	(when (file-directory-p ,directory)
	  (setf ,directory
		(file-name-as-directory (expand-file-name ,directory)))
	  (let ((temp
		 (with-tramp-file-property v localname "directory-files" ,@body))
		result item)
	    (while temp
	      (setq item (directory-file-name (pop temp)))
	      (when (or (null ,match) (string-match-p ,match item))
		(push (if ,full (concat ,directory item) item)
		      result)))
	    (unless ,nosort
              (setq result (sort result #'string<)))
	    (when (and (natnump ,count) (> ,count 0))
	      (setq result (tramp-compat-ntake ,count result)))
	    result))))

    ;; Error handling.
    (if (not (file-exists-p ,directory))
	(tramp-error
	 (tramp-dissect-file-name ,directory) 'file-missing ,directory)
      nil)))