changeset 3212:cd8f8468a190

(Info-insert-dir): Ignore duplicate directories.
author Richard M. Stallman <rms@gnu.org>
date Fri, 28 May 1993 18:35:23 +0000
parents 4a1a003ded62
children 1fdd5c6dc6ba
files lisp/info.el
diffstat 1 files changed, 28 insertions(+), 25 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/info.el	Fri May 28 17:23:47 1993 +0000
+++ b/lisp/info.el	Fri May 28 18:35:23 1993 +0000
@@ -287,36 +287,39 @@
   (if Info-dir-contents
       (insert Info-dir-contents)
     (let ((dirs Info-directory-list)
-	  buffers buffer others nodes)
+	  buffers buffer others nodes dirs-done)
 
       ;; Search the directory list for the directory file.
       (while dirs
-	;; Try several variants of specified name.
-	;; Try upcasing, appending `.info', or both.
-	(let* (temp
-	       (buffer
-		(cond
-		 ((progn (setq temp (expand-file-name "DIR" (car dirs)))
-			 (file-exists-p temp))
-		  (find-file-noselect temp))
-		 ((progn (setq temp (expand-file-name "dir" (car dirs)))
-			 (file-exists-p temp))
-		  (find-file-noselect temp))
-		 ((progn (setq temp (expand-file-name "DIR.INFO" (car dirs)))
-			 (file-exists-p temp))
-		  (find-file-noselect temp))
-		 ((progn (setq temp (expand-file-name "dir.info" (car dirs)))
-			 (file-exists-p temp))
-		  (find-file-noselect temp)))))
-	  (if buffer (setq buffers (cons buffer buffers)))
-	  (setq dirs (cdr dirs))))
+	(or (member (file-truename (expand-file-name (car dirs))) dirs-done)
+	    (member (directory-file-name (file-truename (expand-file-name (car dirs))))
+		    dirs-done)
+	    ;; Try several variants of specified name.
+	    ;; Try upcasing, appending `.info', or both.
+	    (let* (temp
+		   (buffer
+		    (cond
+		     ((progn (setq temp (expand-file-name "DIR" (car dirs)))
+			     (file-exists-p temp))
+		      (find-file-noselect temp))
+		     ((progn (setq temp (expand-file-name "dir" (car dirs)))
+			     (file-exists-p temp))
+		      (find-file-noselect temp))
+		     ((progn (setq temp (expand-file-name "DIR.INFO" (car dirs)))
+			     (file-exists-p temp))
+		      (find-file-noselect temp))
+		     ((progn (setq temp (expand-file-name "dir.info" (car dirs)))
+			     (file-exists-p temp))
+		      (find-file-noselect temp)))))
+	      (setq dirs-done
+		    (cons (file-truename (expand-file-name (car dirs)))
+			  dirs-done))
+	      (if buffer (setq buffers (cons buffer buffers)))))
+	(setq dirs (cdr dirs)))
 
       ;; Distinguish the dir file that comes with Emacs from all the
-      ;; others.  [This sounds like baloney - who knows what order
-      ;; Info-directory-list is in, especially after checking the
-      ;; INFOPATH variable, and why should Emacs's dir be special?  If
-      ;; you understand what this comment should have said, please
-      ;; change it.]
+      ;; others.  Yes, that is really what this is supposed to do.
+      ;; If it doesn't work, fix it.
       (setq buffer (car buffers)
 	    others (cdr buffers))