Class: Zlib::GzipFile
Relationships & Source Files | |
Namespace Children | |
Exceptions:
| |
Extension / Inclusion / Inheritance Descendants | |
Subclasses:
|
|
Inherits: | Object |
Defined in: | ext/zlib/zlib.c, ext/zlib/zlib.c |
Overview
GzipFile
is an abstract class for handling a gzip formatted compressed file. The operations are defined in the subclasses, GzipReader
for reading, and GzipWriter
for writing.
GzipReader
should be used by associating an IO, or IO-like, object.
Method Catalogue
-
.open
(Zlib::GzipReader::open and GzipWriter.open) -
comment= (Zlib::GzipWriter#comment=)
-
eof? (Zlib::GzipReader#eof?)
-
lineno (Zlib::GzipReader#lineno)
-
lineno= (Zlib::GzipReader#lineno=)
-
mtime= (Zlib::GzipWriter#mtime=)
-
orig_name (Zlib::GzipWriter#orig_name=)
-
path (when the underlying IO supports
#path
)
(due to internal structure, documentation may appear under GzipReader
or GzipWriter
)
Class Method Summary
-
Zlib::GzipReader.wrap(io, ...) {|gz| ... }
Creates a
GzipReader
orGzipWriter
associated withio
, passing in any necessary extra options, and executes the block with the newly created object just likeFile.open
.
Instance Attribute Summary
-
#closed? ⇒ Boolean
readonly
Same as
IO#closed?
-
#sync
rw
Same as
IO#sync
-
#sync=(flag)
rw
Same as IO.
Instance Method Summary
-
#close
Closes the
GzipFile
object. -
#comment
Returns comments recorded in the gzip file header, or nil if the comments is not present.
-
#crc
Returns CRC value of the uncompressed data.
-
#finish
Closes the
GzipFile
object. -
#level
Returns compression level.
-
#mtime
Returns last modification time recorded in the gzip file header.
-
#orig_name
Returns original filename recorded in the gzip file header, or
nil
if original filename is not present. -
#os_code
Returns OS code number recorded in the gzip file header.
-
#to_io
Same as IO.
Class Method Details
Zlib::GzipReader.wrap(io, ...) {|gz| ... }
Zlib::GzipWriter.wrap(io, ...) {|gz| ... }
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 #finish method in the block.
# File 'ext/zlib/zlib.c', line 3098
static VALUE rb_gzfile_s_wrap(int argc, VALUE *argv, VALUE klass) { return gzfile_wrap(argc, argv, klass, 0); }
Instance Attribute Details
#closed? ⇒ Boolean
(readonly)
Same as IO#closed?
# File 'ext/zlib/zlib.c', line 3362
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; }
#sync (rw)
Same as IO#sync
# File 'ext/zlib/zlib.c', line 3388
static VALUE rb_gzfile_sync(VALUE obj) { return (get_gzfile(obj)->z.flags & GZFILE_FLAG_SYNC) ? Qtrue : Qfalse; }
#sync=(flag) (rw)
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.
# File 'ext/zlib/zlib.c', line 3403
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; }
Instance Method Details
#close
Closes the GzipFile
object. This method calls close method of the associated IO object. Returns the associated IO object.
# File 'ext/zlib/zlib.c', line 3323
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; }
#comment
Returns comments recorded in the gzip file header, or nil if the comments is not present.
# File 'ext/zlib/zlib.c', line 3199
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; }
#crc
Returns CRC value of the uncompressed data.
# File 'ext/zlib/zlib.c', line 3137
static VALUE rb_gzfile_crc(VALUE obj) { return rb_uint2inum(get_gzfile(obj)->crc); }
#finish
Closes the GzipFile
object. Unlike #close, this method never calls the close method of the associated IO object. Returns the associated IO object.
# File 'ext/zlib/zlib.c', line 3345
static VALUE rb_gzfile_finish(VALUE obj) { struct gzfile *gz = get_gzfile(obj); VALUE io; io = gz->io; gzfile_close(gz, 0); return io; }
#level
Returns compression level.
# File 'ext/zlib/zlib.c', line 3159
static VALUE rb_gzfile_level(VALUE obj) { return INT2FIX(get_gzfile(obj)->level); }
#mtime
Returns last modification time recorded in the gzip file header.
# File 'ext/zlib/zlib.c', line 3148
static VALUE rb_gzfile_mtime(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.
# File 'ext/zlib/zlib.c', line 3182
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; }
#os_code
Returns OS code number recorded in the gzip file header.
# File 'ext/zlib/zlib.c', line 3170
static VALUE rb_gzfile_os_code(VALUE obj) { return INT2FIX(get_gzfile(obj)->os_code); }
#to_io
Same as IO.
# File 'ext/zlib/zlib.c', line 3126
static VALUE rb_gzfile_to_io(VALUE obj) { return get_gzfile(obj)->io; }