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

ftp の失敗



寺西さんの http://www.gohome.org/elpoint/ を読んで感動して、導入
しようと思い、上記のページの

<a href="ftp://ftp.gohome.org/pub/elisp/elpoint/elpoint-0.1.0.tar.gz">elpoint-0.1.0.tar.gz</a>

でリターンしたところエラーになりました。調べていったところ(途中
の簡単な問題(*1)はおいといて)、最終的に w3m-goto-ftp-url() で

(file-directory-p "/anonymous@ftp.gohome.org:/pub/elisp/elpoint/elpoint-0.1.0.tar.gz")
=> t

となるのが大問題だということがわかりました。Emacs21, Meadow とも
に 't' になります。
XEmacs だと 'nil' になるので ange-ftp より efs の方が賢いのはわ
かったのですが ^^;;

もしかして、こうなるのはぼくだけかしら?

いろいろ試したところ、以下のようにすればうまくいくようなのですが、
危なそうなパターンで追試して貰えませんでしょうか?

(defun w3m-file-directory-p (file)
  (when (file-exists-p file)
    (let (dirp (i 10))
      (catch 'loop
	(while (> i 0)
	  (setq dirp (car (file-attributes file)))
	  (if (stringp dirp)
	      (setq file (expand-file-name
			  dirp
			  (file-name-directory (directory-file-name file)))
		    i (1- i))
	    (throw 'loop dirp)))))))

(w3m-file-directory-p "/anonymous@ftp.gohome.org:/pub/elisp/elpoint/elpoint-0.1.0.tar.gz")
=> nil
(w3m-file-directory-p "/anonymous@ftp.gohome.org:/pub/elisp/elpoint/")
=> t
(w3m-file-directory-p "/anonymous@ftp.m17n.org:/pub/linux-sh")
=> t
(w3m-file-directory-p "/anonymous@ftp.mew.org:/pub/Mew/mew-current.tar.gz")
=> nil
(w3m-file-directory-p "/anonymous@ftp.mew.org:/pub/Mew/incm-0.5.tar.gz")
=> nil
(w3m-file-directory-p "/anonymous@ftp.gnu.org:/non-gnu")
=> t
(w3m-file-directory-p "/anonymous@ftp.gnu.org:/non-gnu/")
=> t

ちなみに、file-chase-links() を使っていないのは、Meadow で動かな
かったからです。うーむ。

# gohome を例にあげているのは他意はありません。(_ _)
# 他のところでもこうなります。

## おいら XTT なんて動かないぞ、ってちょっと悔しいだけです ^^;;

-- 
白井秀行 (mailto:shirai@rdmg.mgcs.mei.co.jp)

(*1) 以下のようにしておかないとだめ、このパターン、ほかにもないかなぁ。

(defun w3m-local-content-type (url)
  (if (file-directory-p
       (if (w3m-url-local-p url)
	   (w3m-url-to-file-name url)
	 url))
      "text/html"
    (catch 'type-detected