changeset 2630:47cf3a387530

* files.el (insert-directory): Undo change of March 23; dereferencing links is inappropriate for dired. * files.el (abbreviate-file-name): If abbreviated-home-dir ends with a slash, don't remove the corresponding slash from filename when we collapse the home directory to ~.
author Jim Blandy <jimb@redhat.com>
date Mon, 03 May 1993 03:37:22 +0000
parents 137117f5c44c
children 1e3d854828fc
files lisp/files.el
diffstat 1 files changed, 23 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/files.el	Mon May 03 03:36:19 1993 +0000
+++ b/lisp/files.el	Mon May 03 03:37:22 1993 +0000
@@ -481,7 +481,18 @@
     ;; make it start with `~' instead.
     (if (string-match abbreviated-home-dir filename)
 	(setq filename
-	      (concat "~" (substring filename (match-end 0)))))
+	      (concat "~"
+		      ;; If abbreviated-home-dir ends with a slash,
+		      ;; don't remove the corresponding slash from
+		      ;; filename.  On MS-DOS and OS/2, you can have
+		      ;; home directories like "g:/", in which it is
+		      ;; important not to remove the slash.  And what
+		      ;; about poor root on Unix systems?
+		      (if (eq ?/ (aref abbreviated-home-dir
+				       (1- (length abbreviated-home-dir))))
+			  "/"
+			"")
+		      (substring filename (match-end 0)))))
     filename))
 
 (defvar find-file-not-true-dirname-list nil
@@ -1778,13 +1789,17 @@
 			    "-c" (concat insert-directory-program
 					 " -d " switches " "
 					 (file-name-nondirectory file))))
-	  ;; Chase links till we reach a non-link.
-	  ;; This used to be commented out, but Barry Margolin says:
-	  ;; SunOS 4.1.3 (and SV and POSIX?) lists the link
-	  ;; if we give a link to a directory - yuck!
-	  (let (symlink)
-	    (while (setq symlink (file-symlink-p file))
-	      (setq file symlink)))
+	  ;; Barry Margolin says: "SunOS 4.1.3 (and SV and POSIX?)
+	  ;; lists the link if we give a link to a directory - yuck!"
+	  ;; That's why we used to chase symlinks.  But we don't want
+	  ;; to chase links before passing the filename to ls; that
+	  ;; would mean that our line of output would not display
+	  ;; FILE's name as given.  To really address the problem that
+	  ;; SunOS 4.1.3 has, we need to find the right switch to get
+	  ;; a descripton of the link itself.
+	  ;; (let (symlink)
+	  ;;   (while (setq symlink (file-symlink-p file))
+	  ;;     (setq file symlink)))
 	  (call-process insert-directory-program nil t nil switches file))))))
 
 (defun save-buffers-kill-emacs (&optional arg)