[Date Prev][Date Next][Thread Prev][][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