Extended maintenance of Ruby 1.9.3 ended on February 23, 2015. Read more

In Files

  • rubygems/package/tar_reader/entry.rb

Class/Module Index [+]

Quicksearch

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 rubygems/package/tar_reader/entry.rb, line 19
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 rubygems/package/tar_reader/entry.rb, line 34
def bytes_read
  @read
end
            
close() click to toggle source

Closes the tar entry

 
               # File rubygems/package/tar_reader/entry.rb, line 41
def close
  @closed = true
end
            
closed?() click to toggle source

Is the tar entry closed?

 
               # File rubygems/package/tar_reader/entry.rb, line 48
def closed?
  @closed
end
            
directory?() click to toggle source

Is this tar entry a directory?

 
               # File rubygems/package/tar_reader/entry.rb, line 93
def directory?
  @header.typeflag == "5"
end
            
eof?() click to toggle source

Are we at the end of the tar entry?

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

  @read >= @header.size
end
            
file?() click to toggle source

Is this tar entry a file?

 
               # File rubygems/package/tar_reader/entry.rb, line 100
def file?
  @header.typeflag == "0"
end
            
full_name() click to toggle source

Full name of the tar entry

 
               # File rubygems/package/tar_reader/entry.rb, line 64
def full_name
  if @header.prefix != "" then
    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 rubygems/package/tar_reader/entry.rb, line 79
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 rubygems/package/tar_reader/entry.rb, line 107
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 rubygems/package/tar_reader/entry.rb, line 117
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
            
rewind() click to toggle source

Rewinds to the beginning of the tar file entry

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

  raise Gem::Package::NonSeekableIO unless @io.respond_to? :pos=

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

Commenting is here to help enhance the documentation. For example, code samples, or clarification of the documentation.

If you have questions about Ruby or the documentation, please post to one of the Ruby mailing lists. You will get better, faster, help that way.

If you wish to post a correction of the docs, please do so, but also file bug report so that it can be corrected for the next release. Thank you.

If you want to help improve the Ruby documentation, please visit Documenting-ruby.org.