[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: w3m-dtree falls into an infinite recursion (was: Re: Re: use 'dirlist.cgi' when local directory)
中川です。
w3m-dtree を一応直してみました。"." と ".." の取り除き方が美しくない
ですけど。私のぐちゃぐちゃの home dir でちゃんと directory tree が表示
されました。
やはり、深さ方向に制限がほしいのと、子ディレクトリがない時はファイル
一覧を見せて欲しいような。って元の dirlist.cgi が良いと言ってるのと余
り変わらないかも。
;; 手を入れると急に態度がでかくなります。
From: NAKAGAWA Takayuki <tknakaga@kanagawa.hitachi.co.jp>
Subject: [emacs-w3m:00941] w3m-dtree falls into an infinite recursion (was: Re: Re: use 'dirlist.cgi' when local directory)
Date: Fri, 25 May 2001 17:28:35 +0900 (JST)
Message-ID: <200105250828.RAA07754@kanagw970.kanagawa.hitachi.co.jp>
中> 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 引数のパターンでは "..."
中> なんてディレクトリを作ると(普通は絶対やらないでしょうけど)無視されま
中> すね。
ではでは。
--
中川貴之 (株)日立製作所 エンタープライズサーバ事業部 Nセ2G
cd j:/usr/local/emacs-20.x/site-lisp/emacs-w3m.010525/
diff -u -a "j:/usr/local/emacs-20.x/site-lisp/emacs-w3m.010525/w3m-dtree.el.ORG" "j:/usr/local/emacs-20.x/site-lisp/emacs-w3m.010525/w3m-dtree.el"
--- j:/usr/local/emacs-20.x/site-lisp/emacs-w3m.010525/w3m-dtree.el.ORG Thu May 24 09:58:04 2001
+++ j:/usr/local/emacs-20.x/site-lisp/emacs-w3m.010525/w3m-dtree.el Fri May 25 17:37:06 2001
@@ -87,21 +87,24 @@
(/= (nth 1 (file-attributes (, path))) 2)))))
(defun w3m-dtree-create-sub (path allfiles dirprefix fileprefix indent)
- (let ((files (directory-files path nil "[^.]"))
+ (let ((files (directory-files path t))
(indent-sub1 (aref w3m-dtree-indent-strings 0))
(indent-sub2 (aref w3m-dtree-indent-strings 2))
file fullpath tmp)
+ (setq files (delete (concat (file-name-as-directory path) ".")
+ (delete (concat (file-name-as-directory path) "..")
+ files)))
(unless allfiles
(setq tmp files)
(while (setq file (car tmp))
- (unless (file-directory-p (expand-file-name file path))
+ (unless (file-directory-p file)
(setq files (delete file files)))
(setq tmp (cdr tmp))))
- (while (setq file (car files))
+ (while (setq fullpath (car files))
(when (= (length files) 1)
(setq indent-sub1 (aref w3m-dtree-indent-strings 1))
(setq indent-sub2 (aref w3m-dtree-indent-strings 3)))
- (setq fullpath (expand-file-name file path))
+ (setq file (file-name-nondirectory fullpath))
(cond
((or (not allfiles) (file-directory-p fullpath))
(insert (format "%s%s%s<A HREF=\"%s%s\">%s</A>\n"
Diff finished at Fri May 25 17:49:55