| 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