/* * call-seq: flush(flush=nil) * * Flushes all the internal buffers of the GzipWriter object. The meaning of * +flush+ is same as in Zlib::Deflate#deflate. <tt>Zlib::SYNC_FLUSH</tt> is used if * +flush+ is omitted. It is no use giving flush <tt>Zlib::NO_FLUSH</tt>. */ static VALUE rb_gzwriter_flush(argc, argv, obj) int argc; VALUE *argv; VALUE obj; { struct gzfile *gz = get_gzfile(obj); VALUE v_flush; int flush; rb_scan_args(argc, argv, "01", &v_flush); flush = FIXNUMARG(v_flush, Z_SYNC_FLUSH); if (flush != Z_NO_FLUSH) { /* prevent Z_BUF_ERROR */ zstream_run(&gz->z, "", 0, flush); } gzfile_write_raw(gz); if (rb_respond_to(gz->io, id_flush)) { rb_funcall(gz->io, id_flush, 0); } return obj; }