changeset 17431:cc5b0995866f

(dired-noselect): Avoid calling file-directory-p when the initial argument was syntactically a directory name.
author Richard M. Stallman <rms@gnu.org>
date Sun, 13 Apr 1997 04:26:38 +0000
parents de68258fef5f
children 5d2e0051fe39
files lisp/dired.el
diffstat 1 files changed, 11 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/dired.el	Sun Apr 13 03:09:23 1997 +0000
+++ b/lisp/dired.el	Sun Apr 13 04:26:38 1997 +0000
@@ -410,16 +410,24 @@
   (or dir-or-list (setq dir-or-list default-directory))
   ;; This loses the distinction between "/foo/*/" and "/foo/*" that
   ;; some shells make:
-  (let (dirname)
+  (let (dirname initially-was-dirname)
     (if (consp dir-or-list)
 	(setq dirname (car dir-or-list))
       (setq dirname dir-or-list))
+    (setq initially-was-dirname
+	  (string= (file-name-as-directory dirname) dirname))
     (setq dirname (abbreviate-file-name
 		   (expand-file-name (directory-file-name dirname))))
     (if find-file-visit-truename
 	(setq dirname (file-truename dirname)))
-    (if (file-directory-p dirname)
-	(setq dirname (file-name-as-directory dirname)))
+    ;; If the argument was syntactically  a directory name not a file name,
+    ;; or if it happens to name a file that is a directory,
+    ;; convert it syntactically to a directory name.
+    ;; The reason for checking initially-was-dirname
+    ;; and not just file-directory-p
+    ;; is that file-directory-p is slow over ftp.
+    (if (or initially-was-dirname (file-directory-p dirname))
+	(setq dirname  (file-name-as-directory dirname)))
     (if (consp dir-or-list)
 	(setq dir-or-list (cons dirname (cdr dir-or-list)))
       (setq dir-or-list dirname))