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.
static VALUE rb_gzfile_comment(obj) VALUE obj; { VALUE str = get_gzfile(obj)->comment; if (!NIL_P(str)) { str = rb_str_dup(str); } OBJ_TAINT(str); /* for safe */ return str; }