作者: Kazuhiko Deguchi
日時: 2002/4/03(14:28)
はじめまして、出口と申します。

# このMLにお尋ねしていいものか悩みましたが、出してしまいます。
# このMLの趣旨にあわなかったらごめんなさい。

CVSの"commit"コマンドをPerlのWrapperスクリプト経由で動かしています。
コマンドを実行するときに、パイプを作ってコマンドを実行します。
CVSが標準出力に表示するメッセージをパイプ経由で読み込み、
このWrapperスクリプトのメッセージとして出力しようとしています。

--------------   ここから   ------------------------
#!/usr/local/bin/perl

my $command = "cvs commit .";

open (PIPE, "$command |");

while ( <PIPE> ) {
    print "CVS Wrapper (INFO) : $_";
}
-----------------------------------------------------

このスクリプトは、CVSEDITORが"nedit"や"gedit"などの別
Windowで動くエディタの時には動作しますが、"vi"などの
ようにTerm上で動くエディタの時には動作せず、スクリプト
がハングしてしまいます。
"xterm -e vi"のようにして逃げようかと思ったのですが、
Xサーバなしでも動くようにしたいので、他に手はないか
どうか模索しております。(さらにメッセージは"cvs commit -m"
のようにエディタなしで動かしたくないのです。)

何とか、このWrapperスクリプトの変更だけで解決する方法は
ないものでしょうか?
(メッセージをフィルタリングしたいので、system()でCVSを動
かすのもできればやりたくないのですが・・・。)

わがままばかり言って申し訳ございませんが、お知恵をお貸しい
ただければ幸いです。

出口