diff options
-rw-r--r-- | lib/rubygems/package/tar_header.rb | 28 |
1 files changed, 24 insertions, 4 deletions
@@ -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) # }; #++ class Gem::Package::TarHeader FIELDS = [ :checksum, :devmajor, @@ -48,6 +50,9 @@ class Gem::Package::TarHeader :version, ] PACK_FORMAT = 'a100' + # name 'a8' + # mode 'a8' + # uid @@ -65,6 +70,9 @@ class Gem::Package::TarHeader 'a8' + # devminor 'a155' # prefix UNPACK_FORMAT = 'A100' + # name 'A8' + # mode 'A8' + # uid @@ -84,6 +92,9 @@ class Gem::Package::TarHeader attr_reader(*FIELDS) def self.from(stream) header = stream.read 512 empty = (header == "\0" * 512) @@ -147,6 +158,9 @@ class Gem::Package::TarHeader # :empty => empty end 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 def empty? @empty end - def ==(other) 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 update_checksum header end def update_checksum header = header " " * 8 @checksum = oct calculate_checksum(header), 6 |