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

[freewnn:00759] Re: recent patches



青野です。こんばんは。
#反応が遅いですね。長文ですみません。

<20010924181835A.hiroo@oikumene.gcd.org>の記事において
hiroo@oikumene.gcd.orgさんは書きました。

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

確かに変ですね。(groff-1.10+jgroff-0.99ベースのパッチと
Solaris-2.4のnroffで確認) roffはよく分かっていないのですが、
パッチを作ってみましたのでお試しください。インデントについ
ては異論があるかと思いますので適宜調整して下さい。

Index: Wnn/man/4.cmd/jserver.man
===================================================================
RCS file: /cvs/FreeWnn/Wnn/man/4.cmd/jserver.man,v
retrieving revision 1.4
diff -u -r1.4 jserver.man
--- Wnn/man/4.cmd/jserver.man	2001/09/16 11:51:46	1.4
+++ Wnn/man/4.cmd/jserver.man	2001/10/01 08:37:35
@@ -91,16 +91,15 @@
 ている WNN_PORT_IN の値が使われる。
 .TP 8
 -u
-.TP 8
 unix domain socket を使用する。
+.TP 8
 -4
 inet socket を使用する。
 .TP 8
 -6
 inet6 socket を使用する。
-.TP 8
--u, -4, -6 のいずれも指定しない場合は、全てのプロトコルが使用される。
 .PP
+-u, -4, -6 のいずれも指定しない場合は、全てのプロトコルが使用される。
 .SH ファイル
  /tmp/jd_sockV4
 .HP 0

----

>> 実は、source code をちゃんと見ておらず、以下のような基本的なことをわかっ
>> ていないので、これは後回しにさせて下さい。

この部分は青野もソースの読み誤りがあると思うので、あらかじ
め注意してお読み下さい。

>> ・既存のファイル名を指定した場合はどうなるのか。

未テストなので、パスします。
#田畑氏のexploitスクリプトをもう少し汎用化できればいいな
#と模索中。

>> ・作成したファイルは、任意の内容を書くことができるのか。
>>   それとも、頻度or辞書の形式でしか書けないのか。

ソースを読む限りにおいては後者のように見えます。元々の指摘
者の田畑氏も影響としてはディスクフルにする・(rootで動作し
ている場合)不測の事態が予測されると記述して(いたと記憶して) 
います。しかし直接既存のファイルが上書きされるなどの可能性
については触れていません。
#もちろん何らかの回避方法がある可能性は否定できません。

Wnn関係のファイルかどうかは元のWnn4.2 でもオープン時に逐一
チェックしているように見受けられます。ファイルの削除リクエ
スト(JS_FILE_DISCARD)はすでに開いているファイルにしか実行
しないようです。

>> ・制限は、JSERVER_DIR 以下ではなく、辞書ディレクトリ以下とすべきではないか。

jserverrc 中の jserver_dir(一文字目は見ないみたいですが、
[ck]Wnn/?d/?serverrcでは「jserver_dir」で統一されているよ
うです。) パラメータでは'@LIBDIR/@LANG/dic'と設定されてい
ます。インストールが正常にすんでいれば制限は辞書ディレクト
リ以下に働くようになっているはずです。

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

この辺りはよく分かりませんので置いておきます。

>> 青野> `basename $CC`で判定するよりは、AC_PROG_CCで定義される変数
>> 青野> GCC を利用した方がよいと思います。(autoconfのinfo参照) あ
(中略)

これについてはパッチが出たのでそちらでフォローします。

>> この問題なのですが、原因は
>>     cmd_name にやたら長い文字列がつっこまれていたのに、
>>     error1() のバッファの長さが足りなかった
>> というもののようです。
>> % ただ、それで SIGSEGV で落ちては困るのだけど…。
(中略)

これもパスします。ログ出力については(時間があれば)強化した
いところです。
#せめてsyslog並に数段階のプライオリティを付けて出力が制御
#できるようになってほしい。

>> % 少なくとも、error1() は、STDC なら vararg を使って宣言した方が良いような…。

他のデバッグ出力も書きやすくなるので、賛成に一票入れます。
その際はvsnprintf() の代替関数をどこかからimportして下さい
m(__)m。
#varargだけでなく、K&R系のstdarg(?)にも対応すればほぼOKと
#思うのですが、確証がありません。

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

「動かない」といっても途中でconfigureが止まる訳ではなく、

configure: INSTPGMFLAGS: not found

という(コマンドと誤認しての)エラーメッセージが出るだけです。
(多分この辺りはFreeBSDのshでも同じだと思うのですが…。)

>> この patch は commit しました。

ありがとうございます。

あと、[freewnn:00756}ですが、

<20010925034303D.hiroo@oikumene.gcd.org>の記事において
hiroo@oikumene.gcd.orgさんは書きました。

>> 一つ思い出したのですが、現時点ではマニュアルは、Wnn/man の roff file
>> と Wnn/manual 以下の catman なもの(?)と重複しているものがありますが、
>> それについては、
>> ・両方のメンテナンスを続けるか。
>> ・roff のみにするか
>> どちらがよいでしょう。

両方のメンテナンス、は今activeな方が少ない(本来の機能の強
化まで手が回らない状態ですし)ので、極力自動化しましょう。
例えばroffからプレインテキストへは自動変換させるようにする
のはいかがでしょうか。
#中・長期的にはDocbook (, texinfo?)などコンバータの充実し
#ている形式に移行した方が幸せになれると思います。

Makefileにルールを記述しても問題ないとは思いますが、試みに
以下のような独立したスクリプトを作ってみました。青野の使用
しているgroffに依存していますので、全然移植性はありません
(多分FreeBSDのjmanで利用されるjgroffとはオプションが違う
と思います)。この操作はmaintainerしかしないと割り切れば日
本語の通るgroff-1.XX必須、位で何とかなると思います。
#Wnn/man において使うことを想定しています。(man.enは未確認)

---- ここから
#!/bin/sh
# autogen man output from mansrc. FOR MAINTAINERS ONLY.
# This script heavily depend on groff-1.11(+jgroff-0.99). It's too bad.
GROFF=groff
# 試みにjserver.manのみ記述してます.
MANSRC="4.cmd/jserver"

for file in $MANSRC; do
  echo "processing $file ..."
  # テストのため、出力ファイル名は.outを付けています.
  # -P-buoはpostprocessor(grotty)に強調・下線表示を抑制するため.
  $GROFF -Tnippon -P-buo -man ${file}.man > ../manual/${file}.out
done
---- ここまで

青野の環境では出力ファイルのヘッダ・フッタ部分がcatman形式
のそれと違うので、groffのtmac.anを元に調整したものをソース
ツリーにつける必要があると思います。
#今JFのTHE LINUX MAN-PAGE-HOWTOをちょっと見たのですが、
#上記スクリプトも手直しの余地がありそうに思えてきました。

#(ミニフォロー)
#[freewnn:00757]についてはmalloc()のメリットがあるのなら
#ばそれでよいと思うのですが、私には自動変数のままでよいよ
#うに思えます。(読み方が足りないと思います。)
----
青野智樹	(aono@cc.osaka-kyoiku.ac.jp)


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