Ruby/zlib の Deflate で圧縮を試みているのですが、ひとつよくわからない
ことがあります。バッファをフラッシュする(その時点までの入力を展開可能
な圧縮結果を生成する)にはどうしたらいいのでしょうか?

つまり、

d = Deflate.new
p d.deflate("a" * 1000)
p d.deflate("", Deflate::SYNC_FLUSH)

として、"a" * 1000 を展開可能な圧縮結果を得たいのですが、
d.deflate("", Deflate::SYNC_FLUSH) が "" になってしまいます。

なぜか、

d = Deflate.new
p d.deflate("a" * 1000, Deflate::SYNC_FLUSH)

とすれば、うまく "x\234JL\034\005`\024\fw\000\000\000\000\377\377" と
いう結果が得られるのですが、(プログラムの都合により)入力の生成時にはフ
ラッシュすべきかどうかがわからないので、後から入力をを追加することなく
バッファのフラッシュだけを行ないたいと思っています。

flush_out かなぁ、とも思いましたが、やはり意図した結果は得られません。
(同様に "" が返ってきます。)

# zstream_run_internal の先頭でいきなり z->stream.avail_in == 0 などと
# いうテストをしているのが問題なのかなぁ、という気もしますが。

なお、ruby-1.4.5 と ruby-zlib-0.2.1 を使っています。
-- 
[田中 哲][たなか あきら][Tanaka Akira]
「まぁ、わたしって、福の神だったのね$(C⊇」(ヘッポコあんてぃ〜く, 清水文化)