Shiro Kawai
shiro****@lava*****
2006年 1月 17日 (火) 18:11:50 JST
素晴らしい。 zlibはずっと欲しかったのに他の作業に追われて手をつけられて いなかったのです。 3点ほどコメントです。 * モジュール名は一階層挟みたいですね。以前はutil.zlibを考えて いたのですが、フォーマットがRFCになっているのでrfc.zlibもあり かもしれません。 * ユニットテスト中で一箇所、forkしていますが、子プロセスの方の 後始末をしていないので、シェルから走らせると子プロセス側で エラーが出ます。単純なfixとしてはこんな感じ: --- test.scm.orig 2006-01-16 22:25:38.000000000 -1000 +++ test.scm 2006-01-16 22:50:01.000000000 -1000 @@ -153,7 +153,10 @@ (test* "port-file-number" 'ok (receive (in out) (sys-pipe) (if (zero? (sys-fork)) - (port->string in) + (begin + (port->string in) + (close-input-port in) + (sys-exit 0)) (let1 p (open-deflate-port out) (begin0 (when (number? (port-file-number p)) ですが、forkは何かとトリッキーなので必要が無ければ避けた方が いいかもしれません。このテストのケースなら、普通のfile portを オープンしてそれをopen-deflate-portに渡しても良い気がします。 * <zlib-error>等の例外をC側で定義してありますね。それはそれで 構わないのですが、最近追加したAPIであるScm_RaiseConditionを 使うとCから直接Schemeで定義したコンディションを投げられるので、 コードがよりスリムになるかもしれません。APIはGaucheのsrc/error.c を見てください。 --shiro