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.
See Zlib::GzipReader#wrap and Zlib::GzipWriter#wrap.
/* * 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.
/* * 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.
/* * 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 comments recorded in the gzip file header, or nil if the comments is not present.
/* * 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; }
Returns CRC value of the uncompressed data.
/* * Returns CRC value of the uncompressed data. */ static VALUE rb_gzfile_crc(obj) VALUE obj; { return rb_uint2inum(get_gzfile(obj)->crc); }
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.
/* * 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; }
Returns compression level.
/* * 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.
/* * 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.
/* * 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.
/* * 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.
/* * 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.
/* * 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; }