Class Gem::Package::TarReader::Entry
In: lib/rubygems/package/tar_reader/entry.rb
Parent: Object

Class for reading entries out of a tar file

Methods

bytes_read   close   closed?   directory?   eof?   file?   full_name   getc   new   pos   read   rewind  

Attributes

header  [R]  Header for this tar entry

Public Class methods

Creates a new tar entry for header that will be read from io

[Source]

    # File lib/rubygems/package/tar_reader/entry.rb, line 19
19:   def initialize(header, io)
20:     @closed = false
21:     @header = header
22:     @io = io
23:     @orig_pos = @io.pos
24:     @read = 0
25:   end

Public Instance methods

Number of bytes read out of the tar entry

[Source]

    # File lib/rubygems/package/tar_reader/entry.rb, line 34
34:   def bytes_read
35:     @read
36:   end

Closes the tar entry

[Source]

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

Is the tar entry closed?

[Source]

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

Is this tar entry a directory?

[Source]

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

Are we at the end of the tar entry?

[Source]

    # File lib/rubygems/package/tar_reader/entry.rb, line 55
55:   def eof?
56:     check_closed
57: 
58:     @read >= @header.size
59:   end

Is this tar entry a file?

[Source]

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

Full name of the tar entry

[Source]

    # File lib/rubygems/package/tar_reader/entry.rb, line 64
64:   def full_name
65:     if @header.prefix != "" then
66:       File.join @header.prefix, @header.name
67:     else
68:       @header.name
69:     end
70:   end

Read one byte from the tar entry

[Source]

    # File lib/rubygems/package/tar_reader/entry.rb, line 75
75:   def getc
76:     check_closed
77: 
78:     return nil if @read >= @header.size
79: 
80:     ret = @io.getc
81:     @read += 1 if ret
82: 
83:     ret
84:   end

The position in the tar entry

[Source]

     # File lib/rubygems/package/tar_reader/entry.rb, line 103
103:   def pos
104:     check_closed
105: 
106:     bytes_read
107:   end

Reads len bytes from the tar file entry, or the rest of the entry if nil

[Source]

     # File lib/rubygems/package/tar_reader/entry.rb, line 113
113:   def read(len = nil)
114:     check_closed
115: 
116:     return nil if @read >= @header.size
117: 
118:     len ||= @header.size - @read
119:     max_read = [len, @header.size - @read].min
120: 
121:     ret = @io.read max_read
122:     @read += ret.size
123: 
124:     ret
125:   end

Rewinds to the beginning of the tar file entry

[Source]

     # File lib/rubygems/package/tar_reader/entry.rb, line 130
130:   def rewind
131:     check_closed
132: 
133:     raise Gem::Package::NonSeekableIO unless @io.respond_to? :pos=
134: 
135:     @io.pos = @orig_pos
136:     @read = 0
137:   end

[Validate]