Class: Zlib::GzipFile
- Inherits:
-
Object
- Object
- Zlib::GzipFile
- Defined in:
- ext/zlib/zlib.c,
ext/zlib/zlib.c
Overview
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
-
::wrap
-
::open (Zlib::GzipReader::open and Zlib::GzipWriter::open)
-
#close
-
#closed?
-
#comment
-
comment= (Zlib::GzipWriter#comment=)
-
#crc
-
eof? (Zlib::GzipReader#eof?)
-
#finish
-
#level
-
lineno (Zlib::GzipReader#lineno)
-
lineno= (Zlib::GzipReader#lineno=)
-
#mtime
-
mtime= (Zlib::GzipWriter#mtime=)
-
#orig_name
-
orig_name (Zlib::GzipWriter#orig_name=)
-
#os_code
-
path (when the underlying IO supports #path)
-
#sync
-
#sync=
-
#to_io
(due to internal structure, documentation may appear under Zlib::GzipReader or Zlib::GzipWriter)
Direct Known Subclasses
Defined Under Namespace
Classes: CRCError, Error, LengthError, NoFooter
Class Method Summary collapse
-
.wrap(*args) ⇒ Object
call-seq: Zlib::GzipReader.wrap(io, …) { |gz| … } Zlib::GzipWriter.wrap(io, …) { |gz| … }.
Instance Method Summary collapse
-
#close ⇒ Object
Closes the GzipFile object.
-
#closed? ⇒ Boolean
Same as IO#closed?.
-
#comment ⇒ Object
Returns comments recorded in the gzip file header, or nil if the comments is not present.
-
#crc ⇒ Object
Returns CRC value of the uncompressed data.
-
#finish ⇒ Object
Closes the GzipFile object.
-
#level ⇒ Object
Returns compression level.
-
#mtime ⇒ Object
Returns last modification time recorded in the gzip file header.
-
#orig_name ⇒ Object
Returns original filename recorded in the gzip file header, or
nilif original filename is not present. -
#os_code ⇒ Object
Returns OS code number recorded in the gzip file header.
-
#sync ⇒ Object
Same as IO#sync.
-
#sync=(mode) ⇒ Object
call-seq: sync = flag.
-
#to_io ⇒ Object
Same as IO.
Class Method Details
.wrap(*args) ⇒ Object
call-seq:
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 Zlib::GzipFile#finish method in the block.
3057 3058 3059 3060 3061 |
# File 'ext/zlib/zlib.c', line 3057
static VALUE
rb_gzfile_s_wrap(int argc, VALUE *argv, VALUE klass)
{
return gzfile_wrap(argc, argv, klass, 0);
}
|
Instance Method Details
#close ⇒ Object
Closes the GzipFile object. This method calls close method of the associated IO object. Returns the associated IO object.
3282 3283 3284 3285 3286 3287 3288 3289 3290 3291 3292 3293 3294 3295 |
# File 'ext/zlib/zlib.c', line 3282
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;
}
|
#closed? ⇒ Boolean
Same as IO#closed?
3321 3322 3323 3324 3325 3326 3327 |
# File 'ext/zlib/zlib.c', line 3321
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;
}
|
#comment ⇒ Object
Returns comments recorded in the gzip file header, or nil if the comments is not present.
3158 3159 3160 3161 3162 3163 3164 3165 3166 3167 |
# File 'ext/zlib/zlib.c', line 3158
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 ⇒ Object
Returns CRC value of the uncompressed data.
3096 3097 3098 3099 3100 |
# File 'ext/zlib/zlib.c', line 3096
static VALUE
rb_gzfile_crc(VALUE obj)
{
return rb_uint2inum(get_gzfile(obj)->crc);
}
|
#finish ⇒ 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.
3304 3305 3306 3307 3308 3309 3310 3311 3312 3313 |
# File 'ext/zlib/zlib.c', line 3304
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 ⇒ Object
Returns compression level.
3118 3119 3120 3121 3122 |
# File 'ext/zlib/zlib.c', line 3118
static VALUE
rb_gzfile_level(VALUE obj)
{
return INT2FIX(get_gzfile(obj)->level);
}
|
#mtime ⇒ Object
Returns last modification time recorded in the gzip file header.
3107 3108 3109 3110 3111 |
# File 'ext/zlib/zlib.c', line 3107
static VALUE
rb_gzfile_mtime(VALUE obj)
{
return rb_time_new(get_gzfile(obj)->mtime, (time_t)0);
}
|
#orig_name ⇒ Object
Returns original filename recorded in the gzip file header, or nil if original filename is not present.
3141 3142 3143 3144 3145 3146 3147 3148 3149 3150 |
# File 'ext/zlib/zlib.c', line 3141
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 ⇒ Object
Returns OS code number recorded in the gzip file header.
3129 3130 3131 3132 3133 |
# File 'ext/zlib/zlib.c', line 3129
static VALUE
rb_gzfile_os_code(VALUE obj)
{
return INT2FIX(get_gzfile(obj)->os_code);
}
|
#sync ⇒ Object
Same as IO#sync
3347 3348 3349 3350 3351 |
# File 'ext/zlib/zlib.c', line 3347
static VALUE
rb_gzfile_sync(VALUE obj)
{
return (get_gzfile(obj)->z.flags & GZFILE_FLAG_SYNC) ? Qtrue : Qfalse;
}
|
#sync=(mode) ⇒ Object
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.
3362 3363 3364 3365 3366 3367 3368 3369 3370 3371 3372 3373 3374 |
# File 'ext/zlib/zlib.c', line 3362
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;
}
|
#to_io ⇒ Object
Same as IO.
3085 3086 3087 3088 3089 |
# File 'ext/zlib/zlib.c', line 3085
static VALUE
rb_gzfile_to_io(VALUE obj)
{
return get_gzfile(obj)->io;
}
|