class Archive::Tar::Minitar::Reader::EntryStream

EntryStreams are pseudo-streams on top of the main data stream.

Public Class Methods

new(header, anIO) click to toggle source
    # File lib/archive/tar/minitar.rb
464 def initialize(header, anIO)
465   @io       = anIO
466   @name     = header.name
467   @mode     = header.mode
468   @uid      = header.uid
469   @gid      = header.gid
470   @size     = header.size
471   @mtime    = header.mtime
472   @checksum = header.checksum
473   @typeflag = header.typeflag
474   @linkname = header.linkname
475   @magic    = header.magic
476   @version  = header.version
477   @uname    = header.uname
478   @gname    = header.gname
479   @devmajor = header.devmajor
480   @devminor = header.devminor
481   @prefix   = header.prefix
482   @read     = 0
483   @orig_pos = @io.pos
484 end

Public Instance Methods

bytes_read() click to toggle source
    # File lib/archive/tar/minitar.rb
536 def bytes_read
537   @read
538 end
close() click to toggle source

Closes the entry.

    # File lib/archive/tar/minitar.rb
550 def close
551   invalidate
552 end
directory()
Alias for: directory?
directory?() click to toggle source

Returns true if the entry represents a directory.

    # File lib/archive/tar/minitar.rb
507 def directory?
508   @typeflag == "5"
509 end
Also aliased as: directory
eof?() click to toggle source

Returns true if the current read pointer is at the end of the EntryStream data.

    # File lib/archive/tar/minitar.rb
520 def eof?
521   @read >= @size
522 end
file()
Alias for: file?
file?() click to toggle source

Returns true if the entry represents a plain file.

    # File lib/archive/tar/minitar.rb
513 def file?
514   @typeflag == "0"
515 end
Also aliased as: file
full_name() click to toggle source

Returns the full and proper name of the entry.

    # File lib/archive/tar/minitar.rb
541 def full_name
542   if @prefix != ""
543     File.join(@prefix, @name)
544   else
545     @name
546   end
547 end
getc() click to toggle source

Reads one byte from the entry. Returns nil if there is no more data to read.

    # File lib/archive/tar/minitar.rb
499 def getc
500   return nil if @read >= @size
501   ret = @io.getc
502   @read += 1 if ret
503   ret
504 end
pos() click to toggle source

Returns the current read pointer in the EntryStream.

    # File lib/archive/tar/minitar.rb
525 def pos
526   @read
527 end
read(len = nil) click to toggle source

Reads len bytes (or all remaining data) from the entry. Returns nil if there is no more data to read.

    # File lib/archive/tar/minitar.rb
488 def read(len = nil)
489   return nil if @read >= @size
490   len ||= @size - @read
491   max_read = [len, @size - @read].min
492   ret = @io.read(max_read)
493   @read += ret.size
494   ret
495 end
rewind() click to toggle source

Sets the current read pointer to the beginning of the EntryStream.

    # File lib/archive/tar/minitar.rb
530 def rewind
531   raise NonSeekableStream unless @io.respond_to?(:pos=)
532   @io.pos = @orig_pos
533   @read = 0
534 end

Private Instance Methods

invalidate() click to toggle source
    # File lib/archive/tar/minitar.rb
555 def invalidate
556   extend InvalidEntryStream
557 end