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

[freewnn:00754] Re: recent patches



小野寛生です

手元で動かなかった原因はわかりました。
青野さんの指摘のうち、とりあえずわかるところだけフォローしておきます。

青野 = aono@cc.osaka-kyoiku.ac.jp (Tomoki AONO) wrote:

青野> マニュアルの変更もTodoとなりますね(^^;。
一応、jserver.man は変更しました。
が、文面が変、roff の書き方がおかしい、という問題があって、man でみる
と (少なくとも FreeBSD 4.3-stable では) 見え方がめちゃくちゃになってい
る部分があります。直さないと…なんですが。

青野> #もう一歩進めて、jserverrcで指定できるようになるといいの
青野> #ですが。

実は、source code をちゃんと見ておらず、以下のような基本的なことをわかっ
ていないので、これは後回しにさせて下さい。
・既存のファイル名を指定した場合はどうなるのか。
・作成したファイルは、任意の内容を書くことができるのか。
  それとも、頻度or辞書の形式でしか書けないのか。
・制限は、JSERVER_DIR 以下ではなく、辞書ディレクトリ以下とすべきではないか。

% 本当は、$prefix/lib/wnn 以下は $prefix/etc 以下に、
% $prefix/lib/wnn/$LANG/dic 以下は /var 以下に
% 置くべきじゃないかという気もする。

青野> `basename $CC`で判定するよりは、AC_PROG_CCで定義される変数
青野> GCC を利用した方がよいと思います。(autoconfのinfo参照) あ
青野> とはdebugの分岐部分をもう少しスマートにまとめられないか考
青野> え中です。
そうですね。patch を review してもらってからつっこむべきでした。
これは今週中に修正 patch を提出します。

>> 問題:
>> ・私の手元では、jserver が jserverrc を読み込み中に fgets() で SIGSEGV
>>   で死にます。

青野> 私の環境では再現しませんでした。
青野> #FILE* がNULLのため起きるのかとも思ったのですが、それなら
青野> #ばfopen()時にチェックされるはずですし…。

この問題なのですが、原因は
    cmd_name にやたら長い文字列がつっこまれていたのに、
    error1() のバッファの長さが足りなかった
というもののようです。
% ただ、それで SIGSEGV で落ちては困るのだけど…。
対症療法としては、buf のサイズを大きくするというのがあり、それでうまく
動くことは確認しましたが、
・Wnn/jserver/error.c:error1() に私が加えた変更にはどこかバグがある。
・Wnn/jserver/error.c の error* 関数はもっとうまく書き直せないか。
というのをなんとかしたいです。というか、buf のサイズを大きくすればそれ
で十分かどうか私にはわかっていません。
% 少なくとも、error1() は、STDC なら vararg を使って宣言した方が良いような…。
% initjserv.c の change_ascii_to_int をわざわざ書いてある理由は何?

青野> ・configure中でINSTPGMFLAGSを定義しているようですが、文法
青野> ミスでうまく働いていないと思われます。
私の手元では動いてしまっていました。FreeBSD の /bin/sh は ash だからで
しょうか。

青野> とりあえず、LIBTOOL_DEPSとINSTPGMFLAGSの部分についてパッチ
青野> をつけます。

この patch は commit しました。


http://www.freewnn.org/ FreeWnn Project