diff options
author | drbrain <drbrain@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2009-06-09 21:38:59 +0000 |
---|---|---|
committer | drbrain <drbrain@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2009-06-09 21:38:59 +0000 |
commit | 31c94ffeb5f09d09ac2c86fc9e6614e38251a43d (patch) | |
tree | 10e44506238c7af3d7c9d822111996731726e38d /lib/rubygems/package/tar_header.rb | |
parent | a6afbaeb3be396c0fdea3b9077d9256c59edcfca (diff) | |
download | ruby-31c94ffeb5f09d09ac2c86fc9e6614e38251a43d.tar.gz |
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_header.rb')
-rw-r--r-- | lib/rubygems/package/tar_header.rb | 28 |
1 files changed, 24 insertions, 4 deletions
diff --git a/lib/rubygems/package/tar_header.rb b/lib/rubygems/package/tar_header.rb index fa78126a0d..44c6695cf9 100644 --- a/lib/rubygems/package/tar_header.rb +++ b/lib/rubygems/package/tar_header.rb @@ -3,8 +3,6 @@ # See LICENSE.txt for additional licensing information. #-- -require 'rubygems/package' - ## #-- # struct tarfile_entry_posix { @@ -26,9 +24,13 @@ require 'rubygems/package' # char prefix[155]; # ASCII + (Z unless filled) # }; #++ +# A header for a tar file class Gem::Package::TarHeader + ## + # Fields in the tar header + FIELDS = [ :checksum, :devmajor, @@ -48,6 +50,9 @@ class Gem::Package::TarHeader :version, ] + ## + # Pack format for a tar header + PACK_FORMAT = 'a100' + # name 'a8' + # mode 'a8' + # uid @@ -65,6 +70,9 @@ class Gem::Package::TarHeader 'a8' + # devminor 'a155' # prefix + ## + # Unpack format for a tar header + UNPACK_FORMAT = 'A100' + # name 'A8' + # mode 'A8' + # uid @@ -84,6 +92,9 @@ class Gem::Package::TarHeader attr_reader(*FIELDS) + ## + # Creates a tar header from IO +stream+ + def self.from(stream) header = stream.read 512 empty = (header == "\0" * 512) @@ -147,6 +158,9 @@ class Gem::Package::TarHeader # :empty => empty end + ## + # Creates a new TarHeader using +vals+ + def initialize(vals) unless vals[:name] && vals[:size] && vals[:prefix] && vals[:mode] then raise ArgumentError, ":name, :size, :prefix and :mode required" @@ -171,11 +185,14 @@ class Gem::Package::TarHeader @empty = vals[:empty] end + ## + # Is the tar entry empty? + def empty? @empty end - def ==(other) + def ==(other) # :nodoc: self.class === other and @checksum == other.checksum and @devmajor == other.devmajor and @@ -195,11 +212,14 @@ class Gem::Package::TarHeader @version == other.version end - def to_s + def to_s # :nodoc: update_checksum header end + ## + # Updates the TarHeader's checksum + def update_checksum header = header " " * 8 @checksum = oct calculate_checksum(header), 6 |