Class: Zstdlib::GzipFile

Inherits:
Object
  • Object
show all
Defined in:
ext/zstdlib/ruby/zlib-3.0/zstdlib.c,
ext/zstdlib/ruby/zlib-3.0/zstdlib.c,
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.



3167
3168
3169
3170
3171
# File 'ext/zstdlib/ruby/zlib-3.0/zstdlib.c', line 3167

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.



3391
3392
3393
3394
3395
3396
3397
3398
3399
3400
3401
3402
3403
3404
# File 'ext/zstdlib/ruby/zlib-3.0/zstdlib.c', line 3391

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)


3430
3431
3432
3433
3434
3435
3436
# File 'ext/zstdlib/ruby/zlib-3.0/zstdlib.c', line 3430

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.



3267
3268
3269
3270
3271
3272
3273
3274
3275
# File 'ext/zstdlib/ruby/zlib-3.0/zstdlib.c', line 3267

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.



3206
3207
3208
3209
3210
# File 'ext/zstdlib/ruby/zlib-3.0/zstdlib.c', line 3206

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.



3413
3414
3415
3416
3417
3418
3419
3420
3421
3422
# File 'ext/zstdlib/ruby/zlib-3.0/zstdlib.c', line 3413

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.



3228
3229
3230
3231
3232
# File 'ext/zstdlib/ruby/zlib-3.0/zstdlib.c', line 3228

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

#mtimeObject

Returns last modification time recorded in the gzip file header.



3217
3218
3219
3220
3221
# File 'ext/zstdlib/ruby/zlib-3.0/zstdlib.c', line 3217

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.



3251
3252
3253
3254
3255
3256
3257
3258
3259
# File 'ext/zstdlib/ruby/zlib-3.0/zstdlib.c', line 3251

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.



3239
3240
3241
3242
3243
# File 'ext/zstdlib/ruby/zlib-3.0/zstdlib.c', line 3239

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

#syncObject

Same as IO#sync



3456
3457
3458
3459
3460
# File 'ext/zstdlib/ruby/zlib-3.0/zstdlib.c', line 3456

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.



3471
3472
3473
3474
3475
3476
3477
3478
3479
3480
3481
3482
3483
# File 'ext/zstdlib/ruby/zlib-3.0/zstdlib.c', line 3471

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.



3195
3196
3197
3198
3199
# File 'ext/zstdlib/ruby/zlib-3.0/zstdlib.c', line 3195

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