class GZippedTar::Tar::Entry
++
Original source is copyright (C) 2004 Mauricio Julio Fernández Pradier This file has been copied and adapted to avoid reliance on differing behaviour across versions of rubygems, and to handle nil header values at the end of a file.
Attributes
header[R]
Public Class Methods
new(header, io)
click to toggle source
Creates a new tar entry for header
that will be read from io
# File lib/gzipped_tar/tar/entry.rb, line 14 def initialize(header, io) @closed = false @header = header @io = io @orig_pos = @io.pos @read = 0 end
Public Instance Methods
bytes_read()
click to toggle source
Number of bytes read out of the tar entry
# File lib/gzipped_tar/tar/entry.rb, line 27 def bytes_read @read end
close()
click to toggle source
Closes the tar entry
# File lib/gzipped_tar/tar/entry.rb, line 32 def close @closed = true end
closed?()
click to toggle source
Is the tar entry closed?
# File lib/gzipped_tar/tar/entry.rb, line 37 def closed? @closed end
directory?()
click to toggle source
Is this tar entry a directory?
# File lib/gzipped_tar/tar/entry.rb, line 74 def directory? @header.typeflag == "5" end
eof?()
click to toggle source
Are we at the end of the tar entry?
# File lib/gzipped_tar/tar/entry.rb, line 42 def eof? check_closed @read >= @header.size end
file?()
click to toggle source
Is this tar entry a file?
# File lib/gzipped_tar/tar/entry.rb, line 79 def file? @header.typeflag == "0" end
full_name()
click to toggle source
Full name of the tar entry
# File lib/gzipped_tar/tar/entry.rb, line 49 def full_name if @header.prefix != "" File.join @header.prefix, @header.name else @header.name end rescue ArgumentError => e raise unless e.message == "string contains null byte" raise GZippedTar::Tar::TarInvalidError, "tar is corrupt, name contains null byte" end
getc()
click to toggle source
Read one byte from the tar entry
# File lib/gzipped_tar/tar/entry.rb, line 62 def getc check_closed return nil if @read >= @header.size ret = @io.getc @read += 1 if ret ret end
pos()
click to toggle source
The position in the tar entry
# File lib/gzipped_tar/tar/entry.rb, line 89 def pos check_closed bytes_read end
read(len = nil)
click to toggle source
Reads len
bytes from the tar file entry, or the rest of the entry if nil
# File lib/gzipped_tar/tar/entry.rb, line 97 def read(len = nil) check_closed return nil if @read >= @header.size len ||= @header.size - @read max_read = [len, @header.size - @read].min ret = @io.read max_read @read += ret.size ret end
Also aliased as: readpartial
rewind()
click to toggle source
Rewinds to the beginning of the tar file entry
# File lib/gzipped_tar/tar/entry.rb, line 114 def rewind check_closed raise GZippedTar::Tar::NonSeekableIO unless @io.respond_to? :pos= @io.pos = @orig_pos @read = 0 end
symlink?()
click to toggle source
Is this tar entry a symlink?
# File lib/gzipped_tar/tar/entry.rb, line 84 def symlink? @header.typeflag == "2" end