*** ls-lisp.1.57.el 2005-08-08 14:15:26.000000000 +0200 --- ls-lisp.1.57.patched.el 2005-11-10 15:49:59.000000000 +0100 *************** *** 45,52 **** ;; * 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). --- 45,50 ---- *************** *** 61,68 **** ;; 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. ;;; Code: --- 59,66 ---- ;; Revised by Andrew Innes and Geoff Volker (and maybe others). ;; Modified by Francis J. Wright , mainly ! ;; to support many more ls options, "platform emulation" and more ! ;; robust sorting. ;;; Code: *************** *** 175,188 **** (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) - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; --- 173,178 ---- *************** *** 429,435 **** ;; symbolic link, or nil. (let (el dirs files) (while file-alist ! (if (eq (cadr (setq el (car file-alist))) t) ; directory (setq dirs (cons el dirs)) (setq files (cons el files))) (setq file-alist (cdr file-alist))) --- 419,427 ---- ;; symbolic link, or nil. (let (el dirs files) (while file-alist ! (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,466 **** \[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))) (cons ! (concat file-name (if (eq dir t) "/" "@")) (cdr filedata))) ((string-match "x" (nth 9 filedata)) (cons --- 447,457 ---- \[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 ((file-name (car filedata)) ! (type (cadr filedata))) ! (cond (type (cons ! (concat file-name (if (eq type t) "/" "@")) (cdr filedata))) ((string-match "x" (nth 9 filedata)) (cons *************** *** 506,515 **** ;; 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 --- 497,502 ----