]> git.eshelyaron.com Git - emacs.git/commitdiff
(eshell/cat): Do a quick test if something is a regular file, before
authorJohn Wiegley <johnw@newartisans.com>
Wed, 17 Oct 2001 02:00:20 +0000 (02:00 +0000)
committerJohn Wiegley <johnw@newartisans.com>
Wed, 17 Oct 2001 02:00:20 +0000 (02:00 +0000)
checking if it is a directory or symlink. This avoids a call to
eshell-file-attributes, which can be expensive in some situations.

lisp/eshell/em-unix.el

index c568a4286f4cf39878957af8525a321f5fbd7953..2fb08d290c73f54a57e2f8e3e8984f5c00f5e660 100644 (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