Object
Zlib::GzipFile is an abstract class for handling a gzip formatted compressed file. The operations are defined in the subclasses, Zlib::GzipReader for reading, and Zlib::GzipWriter for writing.
GzipReader should be used by associating an IO, or IO-like, object.
See Zlib::GzipReader#wrap and Zlib::GzipWriter#wrap.
static VALUE rb_gzfile_s_wrap(argc, argv, klass) int argc; VALUE *argv; VALUE klass; { VALUE obj = rb_class_new_instance(argc, argv, klass); if (rb_block_given_p()) { return rb_ensure(rb_yield, obj, gzfile_ensure_close, obj); } else { return obj; } }
Closes the GzipFile object. This method calls close method of the associated IO object. Returns the associated IO object.
static VALUE rb_gzfile_close(obj) VALUE obj; { struct gzfile *gz = get_gzfile(obj); VALUE io; io = gz->io; gzfile_close(gz, 1); return io; }
Same as IO.
static VALUE rb_gzfile_closed_p(obj) VALUE obj; { struct gzfile *gz; Data_Get_Struct(obj, struct gzfile, gz); return NIL_P(gz->io) ? Qtrue : Qfalse; }
Returns CRC value of the uncompressed data.
static VALUE rb_gzfile_crc(obj) VALUE obj; { return rb_uint2inum(get_gzfile(obj)->crc); }
Returns compression level.
static VALUE rb_gzfile_level(obj) VALUE obj; { return INT2FIX(get_gzfile(obj)->level); }
Returns last modification time recorded in the gzip file header.
static VALUE rb_gzfile_mtime(obj) VALUE obj; { return rb_time_new(get_gzfile(obj)->mtime, (time_t)0); }
Returns original filename recorded in the gzip file header, or
nil
if original filename is not present.
static VALUE rb_gzfile_orig_name(obj) VALUE obj; { VALUE str = get_gzfile(obj)->orig_name; if (!NIL_P(str)) { str = rb_str_dup(str); } OBJ_TAINT(str); /* for safe */ return str; }
Returns OS code number recorded in the gzip file header.
static VALUE rb_gzfile_os_code(obj) VALUE obj; { return INT2FIX(get_gzfile(obj)->os_code); }
Same as IO.
static VALUE rb_gzfile_sync(obj) VALUE obj; { return (get_gzfile(obj)->z.flags & GZFILE_FLAG_SYNC) ? Qtrue : Qfalse; }
Same as IO. If flag is true
, the associated IO object must
respond to the flush
method. While sync
mode is
true
, the compression ratio decreases sharply.
static VALUE rb_gzfile_set_sync(obj, mode) VALUE obj, mode; { struct gzfile *gz = get_gzfile(obj); if (RTEST(mode)) { gz->z.flags |= GZFILE_FLAG_SYNC; } else { gz->z.flags &= ~GZFILE_FLAG_SYNC; } return mode; }
Returns comments recorded in the gzip file header, or nil if the comments is not present.