all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
* ls-lisp.el and w32-symlinks.el
@ 2005-11-17 19:30 Lars Hansen
  2005-11-17 22:37 ` Lennart Borgman
  0 siblings, 1 reply; 5+ messages in thread
From: Lars Hansen @ 2005-11-17 19:30 UTC (permalink / raw)


[-- Attachment #1: Type: text/plain, Size: 1100 bytes --]

I have looked on symlink handling in ls-lisp.el, and that made me wonder
what the stub `ls-lisp-parse-symlink' was all about. Since the comment
mentions the module w32-symlinks.el from
http://centaur.maths.qmw.ac.uk/Emacs/ (not part of Emacs), I looked into
that as well.
w32-symlinks.el uses filename magic to handle symlinks on w32, but there
is a number of bugs and shortcomings. I have fixed those, and as a
consequence w32-symlinks.el becomes a stand-alone module and
`ls-lisp-parse-symlink' is no longer needed. Therefore I suggest the
attached patch to ls-lisp.el. The patch also makes `ls-lisp-dirs-first'
recognize symlinks to directories.

If there are no objections, I will commit in a few days.

I have e-mailed my patched version of w32-symlinks.el to Francis J.
Wright some time ago asking him to put it on his web page, but that has
not happened (yet). If any of you want it, I can e-mail it to you. With
my patches w32-symlinks.el seems pretty mature ;-) so maybe it should
become part of Emacs (not that I really care personally). But I don't
know about possible legal implications.

[-- Attachment #2: ls-lisp.1.57.patch --]
[-- Type: text/x-patch, Size: 3859 bytes --]

*** 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 <F.J.Wright@maths.qmw.ac.uk>, 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 <F.J.Wright@maths.qmw.ac.uk>, 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)
- 
  \f
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  
--- 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 ----

[-- Attachment #3: Type: text/plain, Size: 142 bytes --]

_______________________________________________
Emacs-devel mailing list
Emacs-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/emacs-devel

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: ls-lisp.el and w32-symlinks.el
  2005-11-17 19:30 ls-lisp.el and w32-symlinks.el Lars Hansen
@ 2005-11-17 22:37 ` Lennart Borgman
  2005-11-17 22:43   ` Lars Hansen
  2005-11-22 19:36   ` Lars Hansen
  0 siblings, 2 replies; 5+ messages in thread
From: Lennart Borgman @ 2005-11-17 22:37 UTC (permalink / raw)
  Cc: emacs-devel

Lars Hansen wrote:

>I have e-mailed my patched version of w32-symlinks.el to Francis J.
>Wright some time ago asking him to put it on his web page, but that has
>not happened (yet). If any of you want it, I can e-mail it to you. With
>my patches w32-symlinks.el seems pretty mature ;-) so maybe it should
>become part of Emacs (not that I really care personally). But I don't
>know about possible legal implications.
>  
>
If you can't get in contact with Francis you can perhaps put the file on 
EmacsWiki?

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: ls-lisp.el and w32-symlinks.el
  2005-11-17 22:37 ` Lennart Borgman
@ 2005-11-17 22:43   ` Lars Hansen
  2005-11-22 19:36   ` Lars Hansen
  1 sibling, 0 replies; 5+ messages in thread
From: Lars Hansen @ 2005-11-17 22:43 UTC (permalink / raw)
  Cc: emacs-devel

Lennart Borgman wrote:

> If you can't get in contact with Francis you can perhaps put the file
> on EmacsWiki?

He did reply. But his web page still links to the old file.

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: ls-lisp.el and w32-symlinks.el
  2005-11-17 22:37 ` Lennart Borgman
  2005-11-17 22:43   ` Lars Hansen
@ 2005-11-22 19:36   ` Lars Hansen
  2005-11-22 19:47     ` Lars Hansen
  1 sibling, 1 reply; 5+ messages in thread
From: Lars Hansen @ 2005-11-22 19:36 UTC (permalink / raw)
  Cc: emacs-devel

Lennart Borgman wrote:

> If you can't get in contact with Francis you can perhaps put the file
> on EmacsWiki?

I have not comitted my patch to ls-lisp.el and placed my patched version
of w32-symlinks.el on the EmacsWiki.

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: ls-lisp.el and w32-symlinks.el
  2005-11-22 19:36   ` Lars Hansen
@ 2005-11-22 19:47     ` Lars Hansen
  0 siblings, 0 replies; 5+ messages in thread
From: Lars Hansen @ 2005-11-22 19:47 UTC (permalink / raw)
  Cc: emacs-devel

I wrote:

>I have not comitted my patch to ls-lisp.el and placed my patched version
>of w32-symlinks.el on the EmacsWiki.
>  
>
That should be: I have *now* comitted ...

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2005-11-22 19:47 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-11-17 19:30 ls-lisp.el and w32-symlinks.el Lars Hansen
2005-11-17 22:37 ` Lennart Borgman
2005-11-17 22:43   ` Lars Hansen
2005-11-22 19:36   ` Lars Hansen
2005-11-22 19:47     ` Lars Hansen

Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.