Class: Zstdlib::GzipFile

Inherits:
Object
  • Object
show all
Defined in:
ext/zstdlib/ruby/zlib-2.7/zstdlib.c,
ext/zstdlib/ruby/zlib-2.7/zstdlib.c,
ext/zstdlib/ruby/zlib-2.6/zstdlib.c,
ext/zstdlib/ruby/zlib-2.6/zstdlib.c,
ext/zstdlib/ruby/zlib-2.5/zstdlib.c,
ext/zstdlib/ruby/zlib-2.5/zstdlib.c,
ext/zstdlib/ruby/zlib-2.4/zstdlib.c,
ext/zstdlib/ruby/zlib-2.4/zstdlib.c,
ext/zstdlib/ruby/zlib-2.3/zstdlib.c,
ext/zstdlib/ruby/zlib-2.3/zstdlib.c,
ext/zstdlib/ruby/zlib-2.2/zstdlib.c,
ext/zstdlib/ruby/zlib-2.2/zstdlib.c

Overview

Zstdlib::GzipFile is an abstract class for handling a gzip formatted compressed file. The operations are defined in the subclasses, Zstdlib::GzipReader for reading, and Zstdlib::GzipWriter for writing.

GzipReader should be used by associating an IO, or IO-like, object.

== Method Catalogue

  • ::wrap
  • ::open (Zstdlib::GzipReader::open and Zstdlib::GzipWriter::open)
  • #close
  • #closed?
  • #comment
  • comment= (Zstdlib::GzipWriter#comment=)
  • #crc
  • eof? (Zstdlib::GzipReader#eof?)
  • #finish
  • #level
  • lineno (Zstdlib::GzipReader#lineno)
  • lineno= (Zstdlib::GzipReader#lineno=)
  • #mtime
  • mtime= (Zstdlib::GzipWriter#mtime=)
  • #orig_name
  • orig_name (Zstdlib::GzipWriter#orig_name=)
  • #os_code
  • path (when the underlying IO supports #path)
  • #sync
  • #sync=
  • #to_io

(due to internal structure, documentation may appear under Zstdlib::GzipReader or Zstdlib::GzipWriter)

Direct Known Subclasses

GzipReader, GzipWriter

Defined Under Namespace

Classes: CRCError, Error, LengthError, NoFooter

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.wrap(*args) ⇒ Object

call-seq: Zstdlib::GzipReader.wrap(io, ...) { |gz| ... } Zstdlib::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 Zstdlib::GzipFile#finish method in the block.



3098
3099
3100
3101
3102
# File 'ext/zstdlib/ruby/zlib-2.7/zstdlib.c', line 3098

static VALUE
rb_gzfile_s_wrap(int argc, VALUE *argv, VALUE klass)
{
    return gzfile_wrap(argc, argv, klass, 0);
}

Instance Method Details

#closeObject

Closes the GzipFile object. This method calls close method of the associated IO object. Returns the associated IO object.



3322
3323
3324
3325
3326
3327
3328
3329
3330
3331
3332
3333
3334
3335
# File 'ext/zstdlib/ruby/zlib-2.7/zstdlib.c', line 3322

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?

Returns:

  • (Boolean)


3361
3362
3363
3364
3365
3366
3367
# File 'ext/zstdlib/ruby/zlib-2.7/zstdlib.c', line 3361

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;
}

#commentObject

Returns comments recorded in the gzip file header, or nil if the comments is not present.



3198
3199
3200
3201
3202
3203
3204
3205
3206
# File 'ext/zstdlib/ruby/zlib-2.7/zstdlib.c', line 3198

static VALUE
rb_gzfile_comment(VALUE obj)
{
    VALUE str = get_gzfile(obj)->comment;
    if (!NIL_P(str)) {
	str = rb_str_dup(str);
    }
    return str;
}

#crcObject

Returns CRC value of the uncompressed data.



3137
3138
3139
3140
3141
# File 'ext/zstdlib/ruby/zlib-2.7/zstdlib.c', line 3137

static VALUE
rb_gzfile_crc(VALUE obj)
{
    return rb_uint2inum(get_gzfile(obj)->crc);
}

#finishObject

Closes the GzipFile object. Unlike Zstdlib::GzipFile#close, this method never calls the close method of the associated IO object. Returns the associated IO object.



3344
3345
3346
3347
3348
3349
3350
3351
3352
3353
# File 'ext/zstdlib/ruby/zlib-2.7/zstdlib.c', line 3344

static VALUE
rb_gzfile_finish(VALUE obj)
{
    struct gzfile *gz = get_gzfile(obj);
    VALUE io;

    io = gz->io;
    gzfile_close(gz, 0);
    return io;
}

#levelObject

Returns compression level.



3159
3160
3161
3162
3163
# File 'ext/zstdlib/ruby/zlib-2.7/zstdlib.c', line 3159

static VALUE
rb_gzfile_level(VALUE obj)
{
    return INT2FIX(get_gzfile(obj)->level);
}

#mtimeObject

Returns last modification time recorded in the gzip file header.



3148
3149
3150
3151
3152
# File 'ext/zstdlib/ruby/zlib-2.7/zstdlib.c', line 3148

static VALUE
rb_gzfile_mtime(VALUE obj)
{
    return rb_time_new(get_gzfile(obj)->mtime, (time_t)0);
}

#orig_nameObject

Returns original filename recorded in the gzip file header, or +nil+ if original filename is not present.



3182
3183
3184
3185
3186
3187
3188
3189
3190
# File 'ext/zstdlib/ruby/zlib-2.7/zstdlib.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);
    }
    return str;
}

#os_codeObject

Returns OS code number recorded in the gzip file header.



3170
3171
3172
3173
3174
# File 'ext/zstdlib/ruby/zlib-2.7/zstdlib.c', line 3170

static VALUE
rb_gzfile_os_code(VALUE obj)
{
    return INT2FIX(get_gzfile(obj)->os_code);
}

#syncObject

Same as IO#sync



3387
3388
3389
3390
3391
# File 'ext/zstdlib/ruby/zlib-2.7/zstdlib.c', line 3387

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.



3402
3403
3404
3405
3406
3407
3408
3409
3410
3411
3412
3413
3414
# File 'ext/zstdlib/ruby/zlib-2.7/zstdlib.c', line 3402

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_ioObject

Same as IO.



3126
3127
3128
3129
3130
# File 'ext/zstdlib/ruby/zlib-2.7/zstdlib.c', line 3126

static VALUE
rb_gzfile_to_io(VALUE obj)
{
    return get_gzfile(obj)->io;
}