[Date Prev][Date Next][Thread Prev][][Date Index][Thread Index]

Re: use 'dirlist.cgi' when local directory



中川です。

  いまいちちゃんと裸の w3m を設定してないので(私だけらしいんですが最
新版 w3m をターミナルで使うと画面表示がおかしくなる、そのため旧版を併
用)、野宮さんからのレポートをお待ちしているのですが。

# 召喚します>野宮さん。

From: Hideyuki SHIRAI (白井秀行) <shirai@rdmg.mgcs.mei.co.jp>
Subject: [emacs-w3m:00938] Re: use 'dirlist.cgi' when local directory
Date: Fri, 25 May 2001 16:00:50 +0900 (JST)
Message-ID: <20010525.160050.74167809.shirai@rdmg.mgcs.mei.co.jp>

中> 中川@ OS/2 残党です。召喚されてきました。
白> # 召喚しました ^^;
# 連鎖召喚>野宮さん。

白>> 'w3m-cgi だと、dirlist.cgi を使った表示になります。
白>> ## OS/2 はどっちがいいのかしら?

中>   w3m-dtree: OS/2 では、file-attributes の link count は常に 1 を返す
中> (stat がさぼっている)ため、w3m-dtree は動きません(無限再帰に入るら
中> しく、max-lisp-eval-depth を越える)。w3m-dtree-has-child 書き替え要。

白> # directory の深さ方向分再帰呼び出しをするのですが、もともと
白> # max-lisp-eval-depth を越えるような directory の深さでは遅くて
白> # 使い物にならないので、手抜きをしています。
白> '1' が帰るなら、『絶えず子供がいる』状態なだけで処理が遅くなるだ
白> けだと思うのですが。なんで無限 loop に入るんだろう?リンクをたど
白> ると無限につながっている『子が親を呼ぶ状態』とか無いですか?

  ううむ。file-attributes の nlink とは別の原因のようです。以前から懸
案ではあったので、os2-get-true-file-link-count が non-nil、または
w32-get-true-file-link-count が(boundp で)non-nil の場合に正しい
nlink を数える file-attributes をでっちあげて、w3m-dtree-has-child が
それらしい値を返すことを確認してから再挑戦してみたのですが、症状は変わ
りませんでした。

  次に、w3m-dtree-create-sub に debug-on-entry かけて見たのですが、ど
うも同じ所をぐるぐる回っているような。引き数をリストに残すようにして走
らせてみた所、最初が
 ("h:/user/nakagawa/" reload "about://dtree" "file://" " "))
で、その後何故か(*Occur* バッファから抜粋したので最初に行番号付き)
  162: ("h:/user/nakagawa" reload "about://dtree" "file://" " |  |           |  |  ")
  323: ("h:/user/nakagawa" reload "about://dtree" "file://" " |  |           |  |  |  |           |  |  ")
  484: ("h:/user/nakagawa" reload "about://dtree" "file://" " |  |           |  |  |  |           |  |  |  |           |  |  ")
  645: ("h:/user/nakagawa" reload "about://dtree" "file://" " |  |           |  |  |  |           |  |  |  |           |  |  |  |           |  |  ")
  806: ("h:/user/nakagawa" reload "about://dtree" "file://" " |  |           |  |  |  |           |  |  |  |           |  |  |  |           |  |  |  |           |  |  ")
  980: ("h:/user/nakagawa" nil "about://dtree" "file://" " |  |              ")
 1022: ("h:/user/nakagawa" nil "about://dtree" "file://" " |  |              |  |              ")
 1064: ("h:/user/nakagawa" nil "about://dtree" "file://" " |  |              |  |              |  |              ")
 1106: ("h:/user/nakagawa" nil "about://dtree" "file://" " |  |              |  |              |  |              |  |              ")
 1148: ("h:/user/nakagawa" nil "about://dtree" "file://" " |  |              |  |              |  |              |  |              |  |              ")
 1190: ("h:/user/nakagawa" nil "about://dtree" "file://" " |  |              |  |              |  |              |  |              |  |              |  |              ")
 1232: ("h:/user/nakagawa" nil "about://dtree" "file://" " |  |              |  |              |  |              |  |              |  |              |  |              |  |              ")

  という具合に同じ所を掘っているようです。確かに『子が親を呼ぶ状態』で
はあるのですが。どこかに "~/" に expand されるようなディレクトリでもあ
るのでしょうか。

白> # os/2 に link があるかどうかは知らないのですが ^^;;

  残念ながら hard link, symbolic link 共にありません。デスクトップ
(WorkPlace Shell) 上のオブジェクトには「シャドウ」という強力なものがあ
るんですが(Windows のショートカットと違って切れない)。

中>   w3m-cgi: 動くはずなんですが(裸の w3m ではちゃんと動く)、何故か 
中> w3m.el からは
中> 	w3m: Can't load file:///h|/user/nakagawa/
中>   と蹴飛ばされます。
白> これ、Win32 でも一緒ですね。w3m 自体が drive letter を扱ってくれ
白> ないようなので、裸の w3m でもだめです。

  OS/2 だと裸なら良いんですよ、これが。なぜ emacs 内からだと駄目なのか、
切り分けが全くできません。当初 perl script に端末(OS/2 の仮想端末は出
来がいまいち)を仮定しているのかな、と思ってソースを見たのですが、そん
な処理はなさそうに思いますし。w3m-process-connection-type,
w3m-async-exec の組み合わせ 4 通りは試しました。w3m 内から子プロセスを
呼ぶ処理に問題があるとすると、私の手には負えないかも。

中> ;;   正式版から移行して戸惑った点:w3m-profile-directory 等の初期値が
中> ;; 変わって、~/.w3m.exe/ ディレクトリなんてないよ、エラーが多発。
中> ;; Windows 系の人は戸惑わなかったのかな。
白> ## いろんな w3m を同時に使っているので、UNIX で使って、まず、そ
白> ## の辺の変数を設定してしまいました。で、その設定を Win32 に
白> ## copy したので、気付きませんでした。

  普通は .exe まで指定しないものかもしれません。私は最初に書いた理由で
フルパスで書いているので、つい .exe までつけてしまいました。

ではでは。

--
  中川貴之  (株)日立製作所 エンタープライズサーバ事業部 Nセ2G