[Message Prev][Message Next][Thread Prev][Thread Next][Message Index][Thread Index]
Re: about pcl-cvs
- X-ml-count: 1876
- Subject: Re: about pcl-cvs
- From: MIYOSHI Masanori <miyoshi@xxxxxxxxx>
- Date: 30 Jan 2000 18:21:39 +0900
- User-agent: Nana-gnus/6.13.9 SEMI/1.13.5 (Meihō) FLIM/1.13.2 (Kasanui) Emacs/20.4 (i386-*-windows98.1998) MULE/4.1 (AOI) Meadow/1.10 (TSUYU)
>>>>> <wk1z70ujwj.wl@xxxxxxxxxxxxxxxxxx> にて、
>>>>> "菅原" = <taiki.s@xxxxxxxxxxxxxxxxxx> さんは書きました:
菅原> pcl-cvs-parse.el のすべての場所でこのように変更するということ
菅原> ですよね?
失礼しました、そのとおりです。
自分としても興味があるところなので、もう少し調べてみました。
誤った、認識をしているようならご指摘下さい。
(1)エラーの原因
Meadow はプロセスを起動するときに、デフォルトではコマンド名をクォー
トします。
cvs は、自分を起動したコマンド名を argv[0] から求めます。ただし、
クォートを想定していないので、次のような切り出しミスをします。
"C:/usr/local/bin/cvs.exe" -> cvs.exe"
その結果、cvs は、次のようなメッセージを出力します。
cvs.exe" update: Updating .
pcl-cvs は、cvs[.ex]* にマッチするコマンドからの出力を正当と判断
します。従って、上記メッセージはエラーとなります。
(2)対策
色々方法がありそうですが、簡単な方法として、次の2つを思いつきまし
た。
(2-A).emacs の設定
process-argument-editing として msvc, cygnus を選んだ場合には、コ
マンド名がクォートされるので、上記エラーとなります。逆に、msvc,
cygnus 以外を選んだ場合には、上記エラーは回避できますが、コマンド
引数が正しく子プロセスに渡せません。
解決法の一つとして、process-argument-editing として cygnus を選ぶが、
コマンド名だけはクォートしないように設定する方法があります。
例えば、次の設定を .emacs に加えるとうまくいくと思います。ただし、
コマンド名はクォートされないので、cvs.exe の絶対パス名にスペース
を含まれる場合には、コマンドを起動できないという副作用があります
(多分)。
(define-process-argument-editing
"/cvs\\.exe\\'"
(lambda (x)
(let ((command (car x))
(argument (cddr x)))
(setq argument (cygnus-process-argument-quoting argument))
(concat
(unix-to-dos-filename command) " "
(unix-to-dos-argument (mapconcat (function concat) argument " ")
nil nil nil nil)))))
process-argument-editing については、README.Meadow.ja と
international/mw32misc.el を参考にしてください。
(2-B)CVS
cvs に自分の起動コマンド名は、cvs だと強制的に判定させる方法もあ
ります。
ARGV0_NOT_PROGRAM_NAME を define して、cvs をコンパイルすると、
argv[0] の値が何であれ、起動コマンド名を cvs と判定するようになり
ます。
当然、実行形式のファイル名を変更しても、常にcvs という名前で起動
されたと判定されることになります。それ以外の副作用はなさそうです。
以上、ご参考まで。
--
三好 雅則 mailto:miyoshi@xxxxxxxxx
http://www.ask.ne.jp/~miyoshi/ (Meadow のページ作成中)