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 GzipReaderorGzipWriterassociated 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 GzipFileobject.
- 
    
      #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 GzipFileobject.
- 
    
      #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 nilif 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 3300
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 3563
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 3592
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 3607
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 3524
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 3400
static VALUE
rb_gzfile_comment(VALUE obj)
{
    VALUE str = get_gzfile(obj)->comment;
    if (!NIL_P(str)) {
	str = rb_str_dup(str);
    }
    return str;
}
  #crc
Returns CRC value of the uncompressed data.
# File 'ext/zlib/zlib.c', line 3339
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 3546
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 3361
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 3350
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 3384
static VALUE
rb_gzfile_orig_name(VALUE obj)
{
    VALUE str = get_gzfile(obj)->orig_name;
    if (!NIL_P(str)) {
	str = rb_str_dup(str);
    }
    return str;
}
  #os_code
Returns OS code number recorded in the gzip file header.
# File 'ext/zlib/zlib.c', line 3372
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 3328
static VALUE
rb_gzfile_to_io(VALUE obj)
{
    return get_gzfile(obj)->io;
}