Re: Dired bug: infinite recursion
sandy@ibm550.sissa.it
Sat, 3 Sep 1994 22:30:40 +0200
>>>>> On Sat, 3 Sep 1994 04:23:15 -0700,
Jared_Rhine@hmc.edu said:
> I tried a relative symlink and got:
[an infinite recursion]
Here's a patched version of dired-make-relative-symlink. Just replace
the existing def in dired.el with this one. It was another typo.
Thanks for catching it.
--sandy
(defun dired-make-relative-symlink (target linkname
&optional ok-if-already-exists)
"Make a relative symbolic link pointing to TARGET with name LINKNAME.
Three arguments: FILE1 FILE2 &optional OK-IF-ALREADY-EXISTS
The link is relative (if possible), for example
\"/vol/tex/bin/foo\" \"/vol/local/bin/foo\"
results in
\"../../tex/bin/foo\" \"/vol/local/bin/foo\""
(interactive
(let ((target (read-string "Make relative symbolic link to file: ")))
(list
target
(read-file-name (format "Make relsymlink to file %s: " target))
0)))
(let* ((target (expand-file-name target))
(linkname (expand-file-name linkname))
(handler (or (find-file-name-handler
linkname 'dired-make-relative-symlink)
(find-file-name-handler
target 'dired-make-relative-symlink))))
(if handler
(funcall handler 'dired-make-relative-symlink target linkname
ok-if-already-exists)
(setq target (directory-file-name target)
linkname (directory-file-name linkname))
(make-symbolic-link
(dired-make-relative target (file-name-directory linkname) t)
linkname ok-if-already-exists))))