[Gauche-devel-jp] Re: Gauche-zlib 0.1

Back to archive index

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




Gauche-devel-jp メーリングリストの案内
Back to archive index