[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: tramp (2.0.29); erroneous error message: File is a symlink to a none
From: |
Kai Großjohann |
Subject: |
Re: tramp (2.0.29); erroneous error message: File is a symlink to a nonexistent target |
Date: |
Mon, 31 Mar 2003 22:40:35 +0200 |
User-agent: |
Gnus/5.090017 (Oort Gnus v0.17) Emacs/21.3.50 (gnu/linux) |
address@hidden writes:
> I have this directory listing in dired:
>
> /address@hidden:/app/lsidsp02/cronusprod:
> total 1040
> [...]
> drwxrwxr-x 3 cronusprod cronus 512 Sep 11 2002 data
> [...]
> lrwxrwxrwx 1 cronusprod cronus 11 Mar 28 11:33 var -> data/idcnae
> lrwxrwxrwx 1 cronusprod cronus 13 Mar 28 11:31 var- ->
> ./data/idcnae
> lrwxrwxrwx 1 cronusprod cronus 36 Jul 4 2002 var-- ->
> /app/lsidsp02/cronusprod/data/idcnae
>
> This is a part of the customization buffer for tramp-default-method-alist:
>
> Tramp Default Method Alist: Hide
> INS DEL List:
> Host regexp: lsidsp02.str.allianz
> User regexp: cronusprod
> Method: ftp
>
> If I try to visit var or var- or var--, I always get this,
> and I did not have this problem when using old ftp-ange:
>
> dired-find-file: File is a symlink to a nonexistent target
Before Michael's fix, I also got that. But now I get something weird
instead.
This directory listing:
/ftp:address@hidden:/home/kai/tmp/ange-ftp-test:
total 8
drwxrwx--- 2 kai kai 4096 Mar 31 23:09 .
drwxrwx--- 5 kai kai 4096 Mar 31 23:02 ..
lrwxrwxrwx 1 kai kai 7 Mar 31 23:02 x -> ../auto
lrwxrwxrwx 1 kai kai 4 Mar 31 23:03 y -> /tmp
lrwxrwxrwx 1 kai kai 4 Mar 31 23:05 y- -> /tmp
lrwxrwxrwx 1 kai kai 4 Mar 31 23:05 y-- -> /tmp
lrwxrwxrwx 1 kai kai 11 Mar 31 23:09 z -> /tmp/kaifoo
Then I hit `f' on the `z' line. Then I get a prompt for "passwd for
address@hidden"!
Using debug-on-quit and hitting C-g at that spot shows that
something got really confused: Emacs is thinking the name is
different than it should be. It's constructing user kai at host ftp
from the name /ftp:address@hidden:/home...
It seems that ange-ftp-name-format has the right value, though.
What's going on?
I traced it with edebug, but couldn't find anything. These functions
are invoked so _often_, I can't make out which is the important
function call.
Debugger entered--Lisp error: (quit)
read-passwd("passwd for address@hidden (default same as address@hidden): "
nil "**CENSORED**")
(if other (read-passwd (format "passwd for address@hidden (default same as
address@hidden): " user host user other) nil (ange-ftp-lookup-passwd other
user)) (read-passwd (format "Password for address@hidden: " user host)))
(let* ((other ...) (passwd ...)) (ange-ftp-set-passwd host user passwd)
passwd)
(cond ((ange-ftp-lookup-passwd host user)) ((and ...
ange-ftp-default-password ...) ange-ftp-default-password) ((and ...
ange-ftp-netrc-default-password ...) ange-ftp-netrc-default-password) ((and ...
ange-ftp-generate-anonymous-password) (if ...
ange-ftp-generate-anonymous-password user-mail-address)) (t (let* ... ...
passwd)))
ange-ftp-get-passwd("ftp" "kai")
(ange-ftp-quote-string (ange-ftp-get-passwd host user))
(let ((pass ...) (account ...)) (setq proc (ange-ftp-start-process host user
name)) (if (and ... ange-ftp-gateway-host) (ange-ftp-smart-login host user pass
account proc) (ange-ftp-normal-login host user pass account proc))
(ange-ftp-guess-hash-mark-size proc) (ange-ftp-guess-host-type host user) (let*
(... ...) (if passive ...)) (let (... ...) (run-hooks ...)))
(if (and proc (memq ... ...)) proc (if proc (delete-process proc)) (let (...
...) (setq proc ...) (if ... ... ...) (ange-ftp-guess-hash-mark-size proc)
(ange-ftp-guess-host-type host user) (let* ... ...) (let ... ...)) proc)
(let* ((name ...) (proc ...)) (if (and proc ...) proc (if proc ...) (let ...
... ... ... ... ... ...) proc))
ange-ftp-get-process("ftp" "kai")
(and user (ange-ftp-get-process host user) (eq host ange-ftp-host-cache))
(cond ((null host) (quote unix)) ((eq host ange-ftp-host-cache)
ange-ftp-host-type-cache) ((and user ... ...) ange-ftp-host-type-cache) (t
(setq ange-ftp-host-cache host ange-ftp-host-type-cache ...)))
ange-ftp-host-type("ftp" "kai")
(let* ((host-type ...) (fix-name-func ...) (key ...) (res ...)) (or res
(progn ... ... ... res)))
ange-ftp-expand-dir("ftp" "kai" "~")
(let ((dir ...)) (if dir (setq name ...) (error "Unable to obtain CWD")))
(cond ((string-match "^/" name) name) ((string-match "^~[^/]*" name) (let*
... ...)) (t (let ... ...)))
(let ((host ...) (user ...) (name ...)) (cond (... name) (... ...) (t ...))
(if (not ...) (progn ... ...)) (ange-ftp-replace-name-component n name))
(if parsed (let (... ... ...) (cond ... ... ...) (if ... ...)
(ange-ftp-replace-name-component n name)) (if (eq ... 47)
(ange-ftp-real-expand-file-name n) (ange-ftp-real-expand-file-name ... ...)))
(let ((parsed ...)) (if parsed (let ... ... ... ...) (if ... ... ...)))
ange-ftp-canonize-filename("/ftp:address@hidden:/home/kai/tmp/ange-ftp-test/z")
(cond ((eq ... 126) (ange-ftp-real-expand-file-name name)) ((eq ... 47)
(ange-ftp-canonize-filename name)) ((and ... ...) (ange-ftp-canonize-filename
name)) ((and ... ...) (ange-ftp-real-expand-file-name name default)) ((zerop
...) (ange-ftp-canonize-filename default)) ((ange-ftp-canonize-filename ...)))
(progn (setq default (or default default-directory)) (cond (... ...) (...
...) (... ...) (... ...) (... ...) (...)))
(unwind-protect (progn (setq default ...) (cond ... ... ... ... ... ...))
(set-match-data save-match-data-internal))
(let ((save-match-data-internal ...)) (unwind-protect (progn ... ...)
(set-match-data save-match-data-internal)))
(save-match-data (setq default (or default default-directory)) (cond (...
...) (... ...) (... ...) (... ...) (... ...) (...)))
ange-ftp-expand-file-name("/ftp:address@hidden:/home/kai/tmp/ange-ftp-test/z"
nil)
apply(ange-ftp-expand-file-name
("/ftp:address@hidden:/home/kai/tmp/ange-ftp-test/z" nil))
(progn (apply fn args))
(unwind-protect (progn (apply fn args)) (set-match-data
save-match-data-internal))
(let ((save-match-data-internal ...)) (unwind-protect (progn ...)
(set-match-data save-match-data-internal)))
(save-match-data (apply fn args))
(if fn (save-match-data (apply fn args)) (ange-ftp-run-real-handler operation
args))
(let ((fn ...)) (if fn (save-match-data ...) (ange-ftp-run-real-handler
operation args)))
ange-ftp-hook-function(expand-file-name
"/ftp:address@hidden:/home/kai/tmp/ange-ftp-test/z" nil)
apply(ange-ftp-hook-function expand-file-name
("/ftp:address@hidden:/home/kai/tmp/ange-ftp-test/z" nil))
(let* ((inhibit-file-name-handlers ...) (inhibit-file-name-operation
operation)) (apply (quote ange-ftp-hook-function) operation args))
(cond ((and ... ...) (apply ... operation args)) (t (let* ... ...)))
(let ((ange-ftp-name-format ...)) (cond (... ...) (t ...)))
(progn (or (boundp ...) (require ...)) (let (...) (cond ... ...)))
(unwind-protect (progn (or ... ...) (let ... ...)) (set-match-data
save-match-data-internal))
(let ((save-match-data-internal ...)) (unwind-protect (progn ... ...)
(set-match-data save-match-data-internal)))
(save-match-data (or (boundp ...) (require ...)) (let (...) (cond ... ...)))
tramp-ftp-file-name-handler(expand-file-name
"/ftp:address@hidden:/home/kai/tmp/ange-ftp-test/z" nil)
apply(tramp-ftp-file-name-handler expand-file-name
("/ftp:address@hidden:/home/kai/tmp/ange-ftp-test/z" nil))
(cond (foreign (apply foreign operation args)) (fn (apply ... args)) (t
(tramp-run-real-handler operation args)))
(let* ((fn ...) (filename ...) (foreign ...)) (cond (foreign ...) (fn ...) (t
...)))
(progn (let* (... ... ...) (cond ... ... ...)))
(unwind-protect (progn (let* ... ...)) (set-match-data
save-match-data-internal))
(let ((save-match-data-internal ...)) (unwind-protect (progn ...)
(set-match-data save-match-data-internal)))
(save-match-data (let* (... ... ...) (cond ... ... ...)))
tramp-file-name-handler(expand-file-name
"/ftp:address@hidden:/home/kai/tmp/ange-ftp-test/z" nil)
expand-file-name("/ftp:address@hidden:/home/kai/tmp/ange-ftp-test/z")
recentf-add-file("/ftp:address@hidden:/home/kai/tmp/ange-ftp-test/z")
recentf-add-file-hook()
run-hooks(find-file-hook)
after-find-file(nil t)
find-file-noselect-1(#<buffer z>
"/ftp:address@hidden:/home/kai/tmp/ange-ftp-test/z" nil nil
"/ftp:address@hidden:/home/kai/tmp/ange-ftp-test/z" (2 -1))
find-file-noselect("/ftp:address@hidden:/home/kai/tmp/ange-ftp-test/z" nil
nil nil)
ad-Orig-find-file("/ftp:address@hidden:/home/kai/tmp/ange-ftp-test/z" nil)
(setq ad-return-value (ad-Orig-find-file filename wildcards))
(let (ad-return-value) (setq ad-return-value (ad-Orig-find-file filename
wildcards)) ad-return-value)
find-file("/ftp:address@hidden:/home/kai/tmp/ange-ftp-test/z")
dired-find-file()
call-interactively(dired-find-file)
--
A preposition is not a good thing to end a sentence with.