From 5eba3394e0720dd90109fd2076748f38e2b581b9 Mon Sep 17 00:00:00 2001 From: Lars Hansen Date: Tue, 22 Nov 2005 19:25:50 +0000 Subject: [PATCH] (ls-lisp-parse-symlink): Delete. (ls-lisp-classify, ls-lisp-format): Delete call to ls-lisp-parse-symlink. (ls-lisp-handle-switches): Handle symlinks to directories as directories when ls-lisp-dirs-first in non-nil. --- lisp/ChangeLog | 7 +++++++ lisp/ls-lisp.el | 31 +++++++++---------------------- 2 files changed, 16 insertions(+), 22 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 3a9e3f9c83d..6c914d440fb 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,10 @@ +2005-11-22 Lars Hansen + * ls-lisp.el (ls-lisp-parse-symlink): Delete. + (ls-lisp-classify, ls-lisp-format): Delete call to + ls-lisp-parse-symlink. + (ls-lisp-handle-switches): Handle symlinks to directories as + directories when ls-lisp-dirs-first in non-nil. + 2005-11-21 Luc Teirlinck * startup.el (command-line): Make sure that loaddefs.el is handled diff --git a/lisp/ls-lisp.el b/lisp/ls-lisp.el index 5f5a53b0df0..0da64128118 100644 --- a/lisp/ls-lisp.el +++ b/lisp/ls-lisp.el @@ -45,8 +45,6 @@ ;; * A few obscure ls switches are still ignored: see the docstring of ;; `insert-directory'. -;; * Generally only numeric uid/gid. - ;; TO DO ============================================================= ;; Complete handling of F switch (if/when possible). @@ -61,8 +59,8 @@ ;; Revised by Andrew Innes and Geoff Volker (and maybe others). ;; Modified by Francis J. Wright , mainly -;; to support many more ls options, "platform emulation", hooks for -;; external symbolic link support and more robust sorting. +;; to support many more ls options, "platform emulation" and more +;; robust sorting. ;;; Code: @@ -175,14 +173,6 @@ current year. The OLD-TIME-FORMAT is used for older files. To use ISO (or (featurep 'ls-lisp) ; FJW: unless this file is being reloaded! (setq original-insert-directory (symbol-function 'insert-directory))) -;; This stub is to allow ls-lisp to parse symbolic links via another -;; library such as w32-symlinks.el from -;; http://centaur.maths.qmw.ac.uk/Emacs/: -(defun ls-lisp-parse-symlink (file-name) - "This stub may be redefined to parse FILE-NAME as a symlink. -It should return nil or the link target as a string." - nil) - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -429,7 +419,9 @@ SWITCHES is a list of characters. Default sorting is alphabetic." ;; symbolic link, or nil. (let (el dirs files) (while file-alist - (if (eq (cadr (setq el (car file-alist))) t) ; directory + (if (or (eq (cadr (setq el (car file-alist))) t) ; directory + (and (stringp (cadr el)) + (file-directory-p (cadr el)))) ; symlink to a directory (setq dirs (cons el dirs)) (setq files (cons el files))) (setq file-alist (cdr file-alist))) @@ -455,12 +447,11 @@ links, `|' for FIFOs, `=' for sockets, and nothing for regular files. \[But FIFOs and sockets are not recognized.] FILEDATA has the form (filename . `file-attributes'). Its `cadr' is t for directory, string (name linked to) for symbolic link, or nil." - (let ((dir (cadr filedata)) (file-name (car filedata))) - (cond ((or dir - ;; Parsing .lnk files here is perhaps overkill! - (setq dir (ls-lisp-parse-symlink file-name))) + (let ((file-name (car filedata)) + (type (cadr filedata))) + (cond (type (cons - (concat file-name (if (eq dir t) "/" "@")) + (concat file-name (if (eq type t) "/" "@")) (cdr filedata))) ((string-match "x" (nth 9 filedata)) (cons @@ -506,10 +497,6 @@ SWITCHES, TIME-INDEX and NOW give the full switch list and time data." ;; t for directory, string (name linked to) ;; for symbolic link, or nil. (drwxrwxrwx (nth 8 file-attr))) ; attribute string ("drwxrwxrwx") - (and (null file-type) - ;; Maybe no kernel support for symlinks, so... - (setq file-type (ls-lisp-parse-symlink file-name)) - (aset drwxrwxrwx 0 ?l)) ; symbolic link - update attribute string (concat (if (memq ?i switches) ; inode number (format " %6d" (nth 10 file-attr))) ;; nil is treated like "" in concat -- 2.39.5