(eshell/cat): Do a quick test if something is a regular file, before

checking if it is a directory or symlink. This avoids a call to
eshell-file-attributes, which can be expensive in some situations.
This commit is contained in:
John Wiegley 2001-10-17 02:00:20 +00:00
parent ef94bd99e4
commit 9f89e09863

View file

@ -572,9 +572,12 @@ symlink, then revert to the system's definition of cat."
(if (or eshell-in-pipeline-p
(catch 'special
(eshell-for arg args
(unless (let ((attrs (eshell-file-attributes arg)))
(and attrs (memq (aref (nth 8 attrs) 0)
'(?d ?l ?-))))
(unless (or (and (stringp arg)
(> (length arg) 0)
(eq (aref arg 0) ?-))
(let ((attrs (eshell-file-attributes arg)))
(and attrs (memq (aref (nth 8 attrs) 0)
'(?d ?l ?-)))))
(throw 'special t)))))
(let ((ext-cat (eshell-search-path "cat")))
(if ext-cat