[Message Prev][Message Next][Thread Prev][Thread Next][Message Index][Thread Index]
Re: r4200 で ange-ftp 不可
- X-ml-count: 7305
- Subject: Re: r4200 で ange-ftp 不可
- From: Hideyuki SHIRAI (白井秀行) <shirai@xxxxxxxxxxx>
- Date: Tue, 08 May 2007 16:59:24 +0900 (JST)
- X-mailer: Mew version 5.2.50 on Emacs 22.1.50 / Mule 5.0 (SAKAKI)
From: 小関 吉則 (KOSEKI Yoshinori) <kose@xxxxxxxxxxx> さん曰く
Subject: Re: r4200 で ange-ftp 不可
Message-ID: <20070508m2y7jz7pjs.00kose@xxxxxxxxxx>
Date: Tue, 08 May 2007 16:16:55 +0900
> 水口> Netinstall した Meadow-3.00-dev を r4200-1 にバージョンアップしたら、
> 水口> ange-ftp が動かなくなってしまいました。
>
> [...]
>
> 水口> (setq ange-ftp-ftp-program-name "c:/usr/cygwin/bin/ftp.exe")
> この設定をしないで default (ange-ftp-ftp-program-name が
> "ftp") のままでは動きますか?
いや、水口さんっていうぐらい ^^;;; だから
>> (setq ange-ftp-try-passive-mode t)
なので、その ftp.exe はだめでしょう。どうにかしないと思いつつ早
数年。
## そんなのばっかりなんだけど。。。
水口さんの使われた r4177 => r4200 間での変更はよくわかりませんが、
ange-ftp の ange-ftp-start-process() を読むとこんなことが起こっ
ているようです。
;; Meadow3 (r4204) で実行
;; (1)
(let (proc)
(modify-coding-system-alist 'process "cat" '(shift_jis-unix . shift_jis-unix))
(setq proc (start-process "hoge" (current-buffer) "cat" "-"))
;; (set-process-coding-system proc 'shift_jis-unix)
(process-send-string proc "hoge1\n")
(accept-process-output proc)
(process-send-string proc "hoge2\n")
(accept-process-output proc)
(process-send-eof proc))
hoge1
hoge2
;; (2)
(let (proc)
(modify-coding-system-alist 'process "cat" '(shift_jis-unix . shift_jis-unix))
(setq proc (start-process "hoge" (current-buffer) "cat" "-"))
(set-process-coding-system proc 'shift_jis-unix)
(process-send-string proc "hoge1\n")
(accept-process-output proc)
(process-send-string proc "hoge2\n")
(accept-process-output proc)
(process-send-eof proc))
hoge1^M
hoge2^M
(2) では set-process-coding-system で decode だけ変えているので
すが、 出力に ^M がつくということは、set-process-coding-system()
で encode 側も default-coding-system に変わっちゃったんだと思わ
れます。または、SYSTEM-EOL-TYPE か?
Meadow だけじゃなくて、SYSTEM-EOL が LF な UNIX マシンでも
(let (proc)
(modify-coding-system-alist 'process "cat" '(shift_jis-dos . shift_jis-dos))
(setq proc (start-process "hoge" (current-buffer) "cat" "-"))
(set-process-coding-system proc 'shift_jis-unix 'shift_jis-dos)
(process-send-string proc "hoge1\n")
(accept-process-output proc)
(process-send-string proc "hoge2\n")
(accept-process-output proc)
(process-send-eof proc))
と
(let (proc)
(modify-coding-system-alist 'process "cat" '(shift_jis-dos . shift_jis-dos))
(setq proc (start-process "hoge" (current-buffer) "cat" "-"))
(set-process-coding-system proc 'shift_jis-unix)
(process-send-string proc "hoge1\n")
(accept-process-output proc)
(process-send-string proc "hoge2\n")
(accept-process-output proc)
(process-send-eof proc))
で挙動が違うので、そういうもの(あるいは Emacs のバグ?)なのだと
思います。
じゃ、ange-ftp はどうするかというと、動作未確認ですが、
(defadvice ange-ftp-start-process (after set-encode activate)
"Fix process-coding-system for Windows"
(let ((proc ad-return-value))
(set-process-coding-system proc 'raw-text-dos 'shift_jis-unix)))
~~~~~~~~~~~~ これで良いのかはわかりません
でどうかしら?
ところで cygwin の FTP の入力って LF じゃないとダメなんですか?
--
白井秀行 (mailto:shirai@xxxxxxxxxxx)