Class | Gem::Package::TarReader::Entry |
In: |
lib/rubygems/package/tar_reader/entry.rb
|
Parent: | Object |
Class for reading entries out of a tar file
header | [R] | Header for this tar entry |
Closes the tar entry
# File lib/rubygems/package/tar_reader/entry.rb, line 42 42: def close 43: @closed = true 44: end
Is this tar entry a directory?
# File lib/rubygems/package/tar_reader/entry.rb, line 94 94: def directory? 95: @header.typeflag == "5" 96: end
Are we at the end of the tar entry?
# File lib/rubygems/package/tar_reader/entry.rb, line 56 56: def eof? 57: check_closed 58: 59: @read >= @header.size 60: end
Full name of the tar entry
# File lib/rubygems/package/tar_reader/entry.rb, line 65 65: def full_name 66: if @header.prefix != "" then 67: File.join @header.prefix, @header.name 68: else 69: @header.name 70: end 71: rescue ArgumentError => e 72: raise unless e.message == 'string contains null byte' 73: raise Gem::Package::TarInvalidError, 74: 'tar is corrupt, name contains null byte' 75: end
Read one byte from the tar entry
# File lib/rubygems/package/tar_reader/entry.rb, line 80 80: def getc 81: check_closed 82: 83: return nil if @read >= @header.size 84: 85: ret = @io.getc 86: @read += 1 if ret 87: 88: ret 89: end
The position in the tar entry
# File lib/rubygems/package/tar_reader/entry.rb, line 108 108: def pos 109: check_closed 110: 111: bytes_read 112: end
Reads len bytes from the tar file entry, or the rest of the entry if nil
# File lib/rubygems/package/tar_reader/entry.rb, line 118 118: def read(len = nil) 119: check_closed 120: 121: return nil if @read >= @header.size 122: 123: len ||= @header.size - @read 124: max_read = [len, @header.size - @read].min 125: 126: ret = @io.read max_read 127: @read += ret.size 128: 129: ret 130: end