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

[freewnn:00772] [RFC] error.c rewrite



青野です。今年もよろしくお願いします。

もしかすると小野さんが手を付けられているのかも知れないので
すが、Wnn/jserver/error.c の一部を書き換えてみたのでご意見
をいただきたいのです。

大きな変更点は可変引数対応にしたところとログの記録形式を従
来の3行から一行にまとめた(ただし現時点では従来の呼出部を変
更していないので2行になってます)ところです。移植性のため、
gcc-3.0に付いていた libibertyからvasprintf()を拝借していま
す。

パッチについてですが、12/30現在のCVS版からの差分になってい
ます。Anonymous CVSでdsl.gr.jpから取得した上でソースファイ
ルのトップディレクトリで適用して下さい。
#青野にしては珍しくconfigureの差分も入っていますので
#autoconfを実行する必要はありません。

本来はjserver/ の各ファイルについてもエラーメッセージの処
理を変更する必要があるのですが、差分が膨大になるので省略し
ています(まだ手をつけていない、というのもありますが)。バグ
やコーディングスタイル、関数名についてはご意見をいただけれ
ば変更できると思うので、御協力をお願いします。以下に変更点
を挙げておきます。

変更点:

- error1()を廃止、新たに可変引数な関数srv_err() / srv_debug()を新設。
error1はsrv_debug()として扱うようにしている。srv_err()では(jserverの)-
sオプション未指定時(noisy == 0)にsyslogに出力するように変更。
# 小野氏のページは見せてもらったが、wnn_*は他と重なるのでprefixをsrv_*
# にしてみた。

- srv_{err,debug}()内部で呼んでいるvwrite_log()では従来一エントリ辺り3
行に渡っていたログを一行に圧縮しようとしている。

- -s オプションで指定したログファイルが存在する場合は上書きしない
(appendする)ようにした。

- vwrite_log()の実装のために、vasprintf()をgcc-3.0についている
libibertyから導入した。(ただし現時点ではvsyslog()のないプラットフォー
ムでしか利用されない。)

- Wnn/etc/vasprintf.c とWnn/etc/mkdir.cは対応する関数がないプラットフォー
ムでのみコンパイルされるようにconfigure(.in)と*Wnn/jserver/Makefile.in 
を変更した。(AC_REPLACE_FUNCSマクロを自前でエミュレートしている。)

- configure --disable-cWnn 時にcWnn/ ディレクトリ下のMakefileを生成し
ないように変更してみた(experimental: cWnn以外も同じ処理をする必要があ
る)。

- configure --(enable|disable)-unsafe-path 指定時にエラーで止まってし
まうのを修正。([freewnn:00764])

- jserver.manでroffによるフォーマット後のレイアウトが崩れるのを修正。
今のところWnn/man (roffソース)のみの修正。([freewnn:00759])

問題点:

- 元々error1()の文字列には改行記号("\n")が含まれているので一行に収まら
ない。
- error1()を介さずにstderrに出力している部分の変更が必要。

よろしくお願いします。
#願わくは、これがお年玉のように役立ちますように…。
----
青野智樹	(aono@cc.osaka-kyoiku.ac.jp)

jserver-errorc.patch.gz



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