Class: Gem::Package::TarReader::Entry
- Inherits:
 - 
      Object
      
        
- Object
 - Gem::Package::TarReader::Entry
 
 
- Defined in:
 - lib/rubygems/package/tar_reader/entry.rb
 
Overview
Class for reading entries out of a tar file
Instance Attribute Summary collapse
- 
  
    
      #header  ⇒ Object 
    
    
  
  
  
  
    
      readonly
    
    
  
  
  
  
  
  
    
Header for this tar entry.
 
Instance Method Summary collapse
- 
  
    
      #bytes_read  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Number of bytes read out of the tar entry.
 - 
  
    
      #check_closed  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
:nodoc:.
 - 
  
    
      #close  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Closes the tar entry.
 - 
  
    
      #closed?  ⇒ Boolean 
    
    
  
  
  
  
  
  
  
  
  
    
Is the tar entry closed?.
 - 
  
    
      #directory?  ⇒ Boolean 
    
    
  
  
  
  
  
  
  
  
  
    
Is this tar entry a directory?.
 - 
  
    
      #eof?  ⇒ Boolean 
    
    
  
  
  
  
  
  
  
  
  
    
Are we at the end of the tar entry?.
 - 
  
    
      #file?  ⇒ Boolean 
    
    
  
  
  
  
  
  
  
  
  
    
Is this tar entry a file?.
 - 
  
    
      #full_name  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Full name of the tar entry.
 - 
  
    
      #getc  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Read one byte from the tar entry.
 - 
  
    
      #initialize(header, io)  ⇒ Entry 
    
    
  
  
  
    constructor
  
  
  
  
  
  
  
    
Creates a new tar entry for
headerthat will be read fromio. - 
  
    
      #pos  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
The position in the tar entry.
 - 
  
    
      #read(len = nil)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Reads
lenbytes from the tar file entry, or the rest of the entry if nil. - #readpartial(maxlen = nil, outbuf = "".b) ⇒ Object
 - 
  
    
      #rewind  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Rewinds to the beginning of the tar file entry.
 - #size ⇒ Object (also: #length)
 - 
  
    
      #symlink?  ⇒ Boolean 
    
    
  
  
  
  
  
  
  
  
  
    
Is this tar entry a symlink?.
 
Constructor Details
#initialize(header, io) ⇒ Entry
Creates a new tar entry for header that will be read from io
      19 20 21 22 23 24 25  | 
    
      # File 'lib/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  | 
  
Instance Attribute Details
#header ⇒ Object (readonly)
Header for this tar entry
      14 15 16  | 
    
      # File 'lib/rubygems/package/tar_reader/entry.rb', line 14 def header @header end  | 
  
Instance Method Details
#bytes_read ⇒ Object
Number of bytes read out of the tar entry
      34 35 36  | 
    
      # File 'lib/rubygems/package/tar_reader/entry.rb', line 34 def bytes_read @read end  | 
  
#check_closed ⇒ Object
:nodoc:
      27 28 29  | 
    
      # File 'lib/rubygems/package/tar_reader/entry.rb', line 27 def check_closed # :nodoc: raise IOError, "closed #{self.class}" if closed? end  | 
  
#close ⇒ Object
Closes the tar entry
      41 42 43  | 
    
      # File 'lib/rubygems/package/tar_reader/entry.rb', line 41 def close @closed = true end  | 
  
#closed? ⇒ Boolean
Is the tar entry closed?
      48 49 50  | 
    
      # File 'lib/rubygems/package/tar_reader/entry.rb', line 48 def closed? @closed end  | 
  
#directory? ⇒ Boolean
Is this tar entry a directory?
      93 94 95  | 
    
      # File 'lib/rubygems/package/tar_reader/entry.rb', line 93 def directory? @header.typeflag == "5" end  | 
  
#eof? ⇒ Boolean
Are we at the end of the tar entry?
      55 56 57 58 59  | 
    
      # File 'lib/rubygems/package/tar_reader/entry.rb', line 55 def eof? check_closed @read >= @header.size end  | 
  
#file? ⇒ Boolean
Is this tar entry a file?
      100 101 102  | 
    
      # File 'lib/rubygems/package/tar_reader/entry.rb', line 100 def file? @header.typeflag == "0" end  | 
  
#full_name ⇒ Object
Full name of the tar entry
      64 65 66 67 68 69 70 71 72 73 74  | 
    
      # File 'lib/rubygems/package/tar_reader/entry.rb', line 64 def full_name if @header.prefix != "" File.join @header.prefix, @header.name else @header.name end rescue ArgumentError => e raise unless e. == "string contains null byte" raise Gem::Package::TarInvalidError, "tar is corrupt, name contains null byte" end  | 
  
#getc ⇒ Object
Read one byte from the tar entry
      79 80 81 82 83 84 85 86 87 88  | 
    
      # File 'lib/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 ⇒ Object
The position in the tar entry
      114 115 116 117 118  | 
    
      # File 'lib/rubygems/package/tar_reader/entry.rb', line 114 def pos check_closed bytes_read end  | 
  
#read(len = nil) ⇒ Object
Reads len bytes from the tar file entry, or the rest of the entry if nil
      130 131 132 133 134 135 136 137 138 139 140 141 142  | 
    
      # File 'lib/rubygems/package/tar_reader/entry.rb', line 130 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) ⇒ Object
      144 145 146 147 148 149 150 151 152 153 154 155 156  | 
    
      # File 'lib/rubygems/package/tar_reader/entry.rb', line 144 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 ⇒ Object
Rewinds to the beginning of the tar file entry
      161 162 163 164 165 166  | 
    
      # File 'lib/rubygems/package/tar_reader/entry.rb', line 161 def rewind check_closed @io.pos = @orig_pos @read = 0 end  | 
  
#size ⇒ Object Also known as: length
      120 121 122  | 
    
      # File 'lib/rubygems/package/tar_reader/entry.rb', line 120 def size @header.size end  | 
  
#symlink? ⇒ Boolean
Is this tar entry a symlink?
      107 108 109  | 
    
      # File 'lib/rubygems/package/tar_reader/entry.rb', line 107 def symlink? @header.typeflag == "2" end  |