Class: Archive::Tar::Minitar::Reader::EntryStream
- Defined in:
- lib/more/facets/minitar.rb
Overview
EntryStreams are pseudo-streams on top of the main data stream.
Instance Method Summary collapse
- #bytes_read ⇒ Object
-
#close ⇒ Object
Closes the entry.
-
#directory? ⇒ Boolean
(also: #directory)
Returns
trueif the entry represents a directory. -
#eof? ⇒ Boolean
Returns
trueif the current read pointer is at the end of the EntryStream data. -
#file? ⇒ Boolean
(also: #file)
Returns
trueif the entry represents a plain file. -
#full_name ⇒ Object
Returns the full and proper name of the entry.
-
#getc ⇒ Object
Reads one byte from the entry.
-
#initialize(header, anIO) ⇒ EntryStream
constructor
A new instance of EntryStream.
-
#pos ⇒ Object
Returns the current read pointer in the EntryStream.
-
#read(len = nil) ⇒ Object
Reads
lenbytes (or all remaining data) from the entry. -
#rewind ⇒ Object
Sets the current read pointer to the beginning of the EntryStream.
Constructor Details
#initialize(header, anIO) ⇒ EntryStream
Returns a new instance of EntryStream.
482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 |
# File 'lib/more/facets/minitar.rb', line 482 def initialize(header, anIO) @io = anIO @name = header.name @mode = header.mode @uid = header.uid @gid = header.gid @size = header.size @mtime = header.mtime @checksum = header.checksum @typeflag = header.typeflag @linkname = header.linkname @magic = header.magic @version = header.version @uname = header.uname @gname = header.gname @devmajor = header.devmajor @devminor = header.devminor @prefix = header.prefix @read = 0 @orig_pos = @io.pos end |
Instance Method Details
#bytes_read ⇒ Object
554 555 556 |
# File 'lib/more/facets/minitar.rb', line 554 def bytes_read @read end |
#close ⇒ Object
Closes the entry.
568 569 570 |
# File 'lib/more/facets/minitar.rb', line 568 def close invalidate end |
#directory? ⇒ Boolean Also known as: directory
Returns true if the entry represents a directory.
525 526 527 |
# File 'lib/more/facets/minitar.rb', line 525 def directory? @typeflag == "5" end |
#eof? ⇒ Boolean
Returns true if the current read pointer is at the end of the EntryStream data.
538 539 540 |
# File 'lib/more/facets/minitar.rb', line 538 def eof? @read >= @size end |
#file? ⇒ Boolean Also known as: file
Returns true if the entry represents a plain file.
531 532 533 |
# File 'lib/more/facets/minitar.rb', line 531 def file? @typeflag == "0" end |
#full_name ⇒ Object
Returns the full and proper name of the entry.
559 560 561 562 563 564 565 |
# File 'lib/more/facets/minitar.rb', line 559 def full_name if @prefix != "" File.join(@prefix, @name) else @name end end |
#getc ⇒ Object
Reads one byte from the entry. Returns nil if there is no more data to read.
517 518 519 520 521 522 |
# File 'lib/more/facets/minitar.rb', line 517 def getc return nil if @read >= @size ret = @io.getc @read += 1 if ret ret end |
#pos ⇒ Object
Returns the current read pointer in the EntryStream.
543 544 545 |
# File 'lib/more/facets/minitar.rb', line 543 def pos @read end |
#read(len = nil) ⇒ Object
Reads len bytes (or all remaining data) from the entry. Returns nil if there is no more data to read.
506 507 508 509 510 511 512 513 |
# File 'lib/more/facets/minitar.rb', line 506 def read(len = nil) return nil if @read >= @size len ||= @size - @read max_read = [len, @size - @read].min ret = @io.read(max_read) @read += ret.size ret end |
#rewind ⇒ Object
Sets the current read pointer to the beginning of the EntryStream.
548 549 550 551 552 |
# File 'lib/more/facets/minitar.rb', line 548 def rewind raise NonSeekableStream unless @io.respond_to?(:pos=) @io.pos = @orig_pos @read = 0 end |