Class: Zlib::GzipFile

Class | Zlib::GzipFile
In: | zlib/zlib.c
Parent: | 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.

### Methods

close closed? comment crc finish level mtime orig_name os_code sync sync= to_io wrap

### Classes and Modules

Class Zlib::GzipFile::CRCError
Class Zlib::GzipFile::Error
Class Zlib::GzipFile::LengthError
Class Zlib::GzipFile::NoFooter

### Public Class methods

wrap(...)

See Zlib::GzipReader#wrap and Zlib::GzipWriter#wrap.

[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()

Closes the GzipFile object. This method calls close method of the associated IO object. Returns the associated IO object.

[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?()

Same as IO.

[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()

Returns comments recorded in the gzip file header, or nil if the comments is not present.

[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()

Returns CRC value of the uncompressed data.

[Source]

    /*
     * Returns CRC value of the uncompressed data.
     */
    static VALUE
    rb_gzfile_crc(obj)
        VALUE obj;
    {
        return rb_uint2inum(get_gzfile(obj)->crc);
    }

finish()

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

[Source]

    /*
     * Closes the GzipFile object. Unlike Zlib::GzipFile#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()

Returns compression level.

[Source]

    /*
     * Returns compression level.
     */
    static VALUE
    rb_gzfile_level(obj)
        VALUE obj;
    {
        return INT2FIX(get_gzfile(obj)->level);
    }

mtime()

Returns last modification time recorded in the gzip file header.

[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()

Returns original filename recorded in the gzip file header, or `nil` if original filename is not present.

[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()

Returns OS code number recorded in the gzip file header.

[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()

Same as IO.

[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

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.

[Source]

    /*
     * call-seq: sync = flag
     *
     * 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()

Same as IO.

[Source]

    /*
     * Same as IO.
     */
    static VALUE
    rb_gzfile_to_io(obj)
        VALUE obj;
    {
        return get_gzfile(obj)->io;
    }

[Validate]