[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
w3m-dtree falls into an infinite recursion (was: Re: Re: use 'dirlist.cgi' when local directory)
中川です。Subject 変えました。
w3m-dtree が無限ループに陥る件ですが、何となく原因がわかったように思
います。一部 emacs for OS/2 のバグですが、Unixen でも陥る場合があるは
ずです。
;; w3m-cgi の方はとりあえず野宮さんのレポート待ち、ということで後回し。
今回私がはまった原因は以下の通りです。
(1) テストに使ったのがたまたま home diretory (h:/user/nakagawa) だった
(2) h:/user/nakagawa/DOS/OLD/WORD/SBY_ICMC/FS/IIJIMA/~$IIJIMA.DOT
というファイル(M$-Word 6.0 のロックファイルらしい)があった
(3) 多分 emacs for OS/2 のバグですが、
(expand-file-name "~$IIJIMA.DOT"
"h:/user/nakagawa/DOS/OLD/WORD/SBY_ICMC/FS/IIJIMA/")
-> "h:/user/takayuki"
となる(user の概念がないので、~ で始まるファイル名はとりあえ
ず home dir に expand する(しかない)ので)
(4) 再度 "h:/user/takayuki" を掘りに行って無限ループ
;; ~ で始まるファイルの扱いが Meadow でどうなっているか、どなたかご
;; 教示いただけると幸いです。
Unixen でも、たとえば www の mirror か何かを行って、foo さんの hoge
directory (~foo) の下に
~foo/www.foo_site.com/~foo/
なんていうファイル/ディレクトリができることは充分考えられる訳で、
OS/2 以外でもはまる可能性は多いにあると思います。
で、解決策は w3m-dtree-create-sub で directory-files を呼ぶ時に full
path を返すようにして、expand-file-name を使うのをやめ、ファイル名が必
要なら file-name-nondirectory を使って取り出す、ということになるのでは
ないかと。あと、現在の directory-files の第 3 引数のパターンでは "..."
なんてディレクトリを作ると(普通は絶対やらないでしょうけど)無視されま
すね。
;; w3m-dree-create-sub の書き直しは、しばしお待ちを。
From: NAKAGAWA Takayuki <tknakaga@kanagawa.hitachi.co.jp>
Subject: [emacs-w3m:00940] Re: use 'dirlist.cgi' when local directory
Date: Fri, 25 May 2001 16:55:54 +0900 (JST)
Message-ID: <200105250755.QAA03345@kanagw970.kanagawa.hitachi.co.jp>
白> # directory の深さ方向分再帰呼び出しをするのですが、もともと
白> # max-lisp-eval-depth を越えるような directory の深さでは遅くて
白> # 使い物にならないので、手抜きをしています。
白> '1' が帰るなら、『絶えず子供がいる』状態なだけで処理が遅くなるだ
白> けだと思うのですが。なんで無限 loop に入るんだろう?リンクをたど
白> ると無限につながっている『子が親を呼ぶ状態』とか無いですか?
expand-file-name の仕様により、『子が親を呼ぶ状態』が出来ていたよう
です。
ではでは。
--
中川貴之 (株)日立製作所 エンタープライズサーバ事業部 Nセ2G