[Message Prev][Message Next][Thread Prev][Thread Next][Message Index][Thread Index]
Re: coding-system on ange-ftp
- X-ml-count: 575
- Subject: Re: coding-system on ange-ftp
- From: Keiichi Suzuki <keiichi@xxxxxxxxx>
- Date: 13 May 1999 10:04:17 +0900
- User-agent: Nana-gnus/6.12.16 SEMI/1.13.4 (Terai) FLIM/1.12.6 (Family-Kōenmae) Emacs/20.3.8 (i386-*-nt4.0) MULE/4.0 (HANANOEN) Meadow/1.04 Alpha1 (TSUTSUJI)
>>>>> meadow-users-jp の No. 574
>>>>> Message-Id: <199905121548.AAA06325@xxxxxxxxxx> で、
>>>>> "深川" == "T.Fukagawa" <fukagawa@xxxxxxxxxxxxx>さま曰く...
深川> ftp> ls "-al /kiwi/usr/bruce/coding/1\\222\\262\\363/." c:/tmp/ange-ftpa68761
深川> ^^^^^^^^^^^^^^^^^^ ここの部分は、
深川> cs-alist で指定した coding-system とは関係しないのでしょうか。
深川> もし、ご存知でしたら、教えてください。
うーむ、 ange-ftp が `\' でエスケープしようとするのですね。
;; 詰めが甘くて済みません。 ^^;;;;
このとき Meadow 1.01 では文字単位ではなく byte 単位で判定されてしまうの
でこういうことになってしまうのでしょう。
GNU Emacs 20.4 系列ではこういうことは起きないのですが、"1\回" のようにや
はり余計な `\' が入ってしまいます。
ということで、昨日のものに加えてさらに ange-ftp-quote-string() を置き換
えてしまいます。
;; 例によって cs-list の内容はいじってください。
これで問題になることはめったにないと思いますが、もし、何らかの状況でおか
しくなることがあれば、 ange-ftp-quote-string() の再定義はやめるようにし
てください。
;; 本当は host ごとにエスケープするのかしないのかを制御する方が良いのか
;; もしれませんが、面倒なのでとりあえずパスします。 ^^;;;;
(eval-after-load "ange-ftp"
'(progn
(defun my-internal-ange-ftp-mode-hook ()
(let* ((cs-alist '(("host1" . (euc-japan euc-japan))
("host2" . (sjis sjis))))
(cs (assoc host cs-alist)))
(and cs (apply 'set-process-coding-system proc (cdr cs)))))
(add-hook 'ange-ftp-process-startup-hook 'my-internal-ange-ftp-mode-hook)
(defun ange-ftp-quote-string (string)
"Quote any characters in STRING that may confuse the ftp process."
(apply (function concat)
(mapcar (function
;; This is said to be wrong; ftp is said to
;; need quoting only for ", and that by doubling it.
;; But experiment says this kind of quoting is correct
;; when talking to ftp on GNU/Linux systems.
(lambda (char)
(if (or (<= char ? )
(= char ?\")
(= char ?\\))
(vector ?\\ char)
(vector char))))
string)))
))
--
鈴木圭一 / keiichi@xxxxxxxxx
PGP finger print (DH/DSS)
0B32 B37E 6DE9 3BC1 68A4 4089 7AAF 2B03 ECBD 614B