In Files

  • zlib/zlib.c

Zlib::GzipFile

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.

Public Class Methods

wrap(*args) click to toggle source

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;
    }
}
            

Public Instance Methods

close() click to toggle source

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;
}
            
closed?() click to toggle source

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;
}
            
comment() click to toggle source

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;
}
            
crc() click to toggle source

Returns CRC value of the uncompressed data.

 
               static VALUE
rb_gzfile_crc(obj)
    VALUE obj;
{
    return rb_uint2inum(get_gzfile(obj)->crc);
}
            
finish() click to toggle source

Closes the GzipFile object. Unlike #close, this method never calls the close method of the associated IO object. Returns the associated IO object.

 
               static VALUE
rb_gzfile_finish(obj)
    VALUE obj;
{
    struct gzfile *gz = get_gzfile(obj);
    VALUE io;

    io = gz->io;
    gzfile_close(gz, 0);
    return io;
}
            
level() click to toggle source

Returns compression level.

 
               static VALUE
rb_gzfile_level(obj)
    VALUE obj;
{
    return INT2FIX(get_gzfile(obj)->level);
}
            
mtime() click to toggle source

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);
}
            
orig_name() click to toggle source

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;
}
            
os_code() click to toggle source

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);
}
            
sync() click to toggle source

Same as IO.

 
               static VALUE
rb_gzfile_sync(obj)
    VALUE obj;
{
    return (get_gzfile(obj)->z.flags & GZFILE_FLAG_SYNC) ? Qtrue : Qfalse;
}
            
sync = flag click to toggle source

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;
}
            
to_io() click to toggle source

Same as IO.

 
               static VALUE
rb_gzfile_to_io(obj)
    VALUE obj;
{
    return get_gzfile(obj)->io;
}