# class Gem::Package::TarReader::Entry

`Class` for reading entries out of a tar file

### Attributes

header[R]

Header for this tar entry

### 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/rubygems/package/tar_reader/entry.rb, line 20
    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/rubygems/package/tar_reader/entry.rb, line 35
    def bytes_read
      @read
    end

close() click to toggle source

Closes the tar entry

    # File lib/rubygems/package/tar_reader/entry.rb, line 42
    def close
      @closed = true
    end

closed?() click to toggle source

Is the tar entry closed?

    # File lib/rubygems/package/tar_reader/entry.rb, line 49
    def closed?
      @closed
    end

directory?() click to toggle source

Is this tar entry a directory?

    # File lib/rubygems/package/tar_reader/entry.rb, line 94
    def directory?
      @header.typeflag == "5"
    end

eof?() click to toggle source

Are we at the end of the tar entry?

    # File lib/rubygems/package/tar_reader/entry.rb, line 56
    def eof?
      check_closed

      @read >= @header.size
    end

file?() click to toggle source

Is this tar entry a file?

    # File lib/rubygems/package/tar_reader/entry.rb, line 101
    def file?
      @header.typeflag == "0"
    end

full_name() click to toggle source

Full name of the tar entry

    # File lib/rubygems/package/tar_reader/entry.rb, line 65
    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

getc() click to toggle source

Read one byte from the tar entry

    # File lib/rubygems/package/tar_reader/entry.rb, line 80
    def getc
      check_closed

      return nil if @read >= @header.size

      ret = @io.getc
      @read += 1 if ret

      ret
    end

length()
Alias for: size
pos() click to toggle source

The position in the tar entry

    # File lib/rubygems/package/tar_reader/entry.rb, line 115
    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/rubygems/package/tar_reader/entry.rb, line 131
    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

readpartial(maxlen = nil, outbuf = "".b) click to toggle source

    # File lib/rubygems/package/tar_reader/entry.rb, line 145
    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

rewind() click to toggle source

Rewinds to the beginning of the tar file entry

    # File lib/rubygems/package/tar_reader/entry.rb, line 162
    def rewind
      check_closed

      @io.pos = @orig_pos
      @read = 0
    end

size() click to toggle source

    # File lib/rubygems/package/tar_reader/entry.rb, line 121
    def size
      @header.size
    end

Also aliased as: length
symlink?() click to toggle source

Is this tar entry a symlink?

    # File lib/rubygems/package/tar_reader/entry.rb, line 108
    def symlink?
      @header.typeflag == "2"
    end