class 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.
Method
Catalogue¶ ↑
-
comment= (
Zlib::GzipWriter#comment=
) -
eof? (
Zlib::GzipReader#eof?
) -
lineno (
Zlib::GzipReader#lineno
) -
lineno= (
Zlib::GzipReader#lineno=
) -
mtime= (
Zlib::GzipWriter#mtime=
) -
path (when the underlying
IO
supports path)
(due to internal structure, documentation may appear under Zlib::GzipReader
or Zlib::GzipWriter
)
Public Class Methods
Creates a GzipReader
or GzipWriter
associated with io
, passing in any necessary extra options, and executes the block with the newly created object just like File.open
.
The GzipFile
object will be closed automatically after executing the block. If you want to keep the associated IO
object open, you may call Zlib::GzipFile#finish
method in the block.
static VALUE rb_gzfile_s_wrap(int argc, VALUE *argv, VALUE klass) { return gzfile_wrap(argc, argv, klass, 0); }
Public Instance Methods
Closes the GzipFile
object. This method calls close method of the associated IO
object. Returns the associated IO
object.
static VALUE rb_gzfile_close(VALUE obj) { struct gzfile *gz; VALUE io; TypedData_Get_Struct(obj, struct gzfile, &gzfile_data_type, gz); if (!ZSTREAM_IS_READY(&gz->z)) { return Qnil; } io = gz->io; gzfile_close(gz, 1); return io; }
Same as IO#closed?
static VALUE rb_gzfile_closed_p(VALUE obj) { struct gzfile *gz; TypedData_Get_Struct(obj, struct gzfile, &gzfile_data_type, gz); return NIL_P(gz->io) ? Qtrue : Qfalse; }
Returns comments recorded in the gzip file header, or nil if the comments is not present.
static VALUE rb_gzfile_comment(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.
static VALUE rb_gzfile_crc(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.
static VALUE rb_gzfile_finish(VALUE obj) { struct gzfile *gz = get_gzfile(obj); VALUE io; io = gz->io; gzfile_close(gz, 0); return io; }
Returns compression level.
static VALUE rb_gzfile_level(VALUE obj) { return INT2FIX(get_gzfile(obj)->level); }
Returns last modification time recorded in the gzip file header.
static VALUE rb_gzfile_mtime(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(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(VALUE obj) { return INT2FIX(get_gzfile(obj)->os_code); }
Same as IO#sync
static VALUE rb_gzfile_sync(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(VALUE obj, VALUE 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; }
Same as IO
.
static VALUE rb_gzfile_to_io(VALUE obj) { return get_gzfile(obj)->io; }