summaryrefslogtreecommitdiff
path: root/lib/rubygems/package/tar_reader
diff options
context:
space:
mode:
authordrbrain <drbrain@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2009-06-09 21:38:59 +0000
committerdrbrain <drbrain@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2009-06-09 21:38:59 +0000
commit31c94ffeb5f09d09ac2c86fc9e6614e38251a43d (patch)
tree10e44506238c7af3d7c9d822111996731726e38d /lib/rubygems/package/tar_reader
parenta6afbaeb3be396c0fdea3b9077d9256c59edcfca (diff)
Update to RubyGems 1.3.4 r2223
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@23659 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib/rubygems/package/tar_reader')
-rw-r--r--lib/rubygems/package/tar_reader/entry.rb43
1 files changed, 42 insertions, 1 deletions
diff --git a/lib/rubygems/package/tar_reader/entry.rb b/lib/rubygems/package/tar_reader/entry.rb
index dcc66153d8..eeb70bf000 100644
--- a/lib/rubygems/package/tar_reader/entry.rb
+++ b/lib/rubygems/package/tar_reader/entry.rb
@@ -3,12 +3,19 @@
# See LICENSE.txt for additional licensing information.
#--
-require 'rubygems/package'
+##
+# Class for reading entries out of a tar file
class Gem::Package::TarReader::Entry
+ ##
+ # Header for this tar entry
+
attr_reader :header
+ ##
+ # Creates a new tar entry for +header+ that will be read from +io+
+
def initialize(header, io)
@closed = false
@header = header
@@ -21,24 +28,39 @@ class Gem::Package::TarReader::Entry
raise IOError, "closed #{self.class}" if closed?
end
+ ##
+ # Number of bytes read out of the tar entry
+
def bytes_read
@read
end
+ ##
+ # Closes the tar entry
+
def close
@closed = true
end
+ ##
+ # Is the tar entry closed?
+
def closed?
@closed
end
+ ##
+ # Are we at the end of the tar entry?
+
def eof?
check_closed
@read >= @header.size
end
+ ##
+ # Full name of the tar entry
+
def full_name
if @header.prefix != "" then
File.join @header.prefix, @header.name
@@ -47,6 +69,9 @@ class Gem::Package::TarReader::Entry
end
end
+ ##
+ # Read one byte from the tar entry
+
def getc
check_closed
@@ -58,20 +83,33 @@ class Gem::Package::TarReader::Entry
ret
end
+ ##
+ # Is this tar entry a directory?
+
def directory?
@header.typeflag == "5"
end
+ ##
+ # Is this tar entry a file?
+
def file?
@header.typeflag == "0"
end
+ ##
+ # The position in the tar entry
+
def pos
check_closed
bytes_read
end
+ ##
+ # Reads +len+ bytes from the tar file entry, or the rest of the entry if
+ # nil
+
def read(len = nil)
check_closed
@@ -86,6 +124,9 @@ class Gem::Package::TarReader::Entry
ret
end
+ ##
+ # Rewinds to the beginning of the tar file entry
+
def rewind
check_closed