class Gem::Package::TarReader::Entry

def bytes_read

def bytes_read
  @read
end

def check_closed # :nodoc:

:nodoc:
def check_closed # :nodoc:
  raise IOError, "closed #{self.class}" if closed?
end

def close

def close
  @closed = true
end

def closed?

def closed?
  @closed
end

def directory?

def directory?
  @header.typeflag == "5"
end

def eof?

def eof?
  check_closed
  @read >= @header.size
end

def file?

def file?
  @header.typeflag == "0"
end

def full_name

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 Gem::Package::TarInvalidError,
        'tar is corrupt, name contains null byte'
end

def getc

def getc
  check_closed
  return nil if @read >= @header.size
  ret = @io.getc
  @read += 1 if ret
  ret
end

def initialize(header, io)

def initialize(header, io)
  @closed = false
  @header = header
  @io = io
  @orig_pos = @io.pos
  @read = 0
end

def pos

def pos
  check_closed
  bytes_read
end

def read(len = nil)

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

def readpartial(maxlen = nil, outbuf = "".b)

def readpartial(maxlen = nil, outbuf = "".b)
  check_closed
  raise EOFError if @read >= @header.size
  maxlen ||= @header.size - @read
  max_read = [maxlen, @header.size - @read].min
  @io.readpartial(max_read, outbuf)
  @read += outbuf.size
  outbuf
end

def rewind

def rewind
  check_closed
  @io.pos = @orig_pos
  @read = 0
end

def size

def size
  @header.size
end

def symlink?

def symlink?
  @header.typeflag == "2"
end