Function: tramp-get-ls-command

tramp-get-ls-command is a byte-compiled function defined in tramp-sh.el.gz.

Signature

(tramp-get-ls-command VEC)

Documentation

Determine remote ls command.

Source Code

;; Defined in /usr/src/emacs/lisp/net/tramp-sh.el.gz
(defun tramp-get-ls-command (vec)
  "Determine remote `ls' command."
  (with-tramp-connection-property vec "ls"
    (tramp-message vec 5 "Finding a suitable `ls' command")
    (or
     (catch 'ls-found
       (dolist (cmd
		;; Prefer GNU ls on *BSD and macOS.
                (if (tramp-check-remote-uname vec tramp-bsd-unames)
		    '("gls" "ls" "gnuls") '("ls" "gnuls" "gls")))
	 (let ((dl (tramp-get-remote-path vec))
	       result)
	   (while (and dl (setq result (tramp-find-executable vec cmd dl t t)))
	     ;; Check parameters.  On busybox, "ls" output coloring is
	     ;; enabled by default sometimes.  So we try to disable it
	     ;; when possible.  $LS_COLORING is not supported there.
	     ;; Some "ls" versions are sensitive to the order of
	     ;; arguments, they fail when "-al" is after the
	     ;; "--color=never" argument (for example on FreeBSD).
	     (when (tramp-send-command-and-check
		    vec (format "%s -lnd /" result))
	       (when (and (tramp-send-command-and-check
			   vec (format
				"%s --color=never -al %s"
				result (tramp-get-remote-null-device vec)))
			  (not (string-match-p
				"\e"
				(tramp-get-buffer-string
				 (tramp-get-buffer vec)))))
		 (setq result (concat result " --color=never")))
	       (throw 'ls-found result))
	     (setq dl (cdr dl))))))
     (tramp-error vec 'file-error "Couldn't find a proper `ls' command"))))