lib/rubygems/package/old.rb
##
# Extracts the files in this package into +destination_dir+
Extracts the files in this package into +destination_dir+
Extracts the files in this package into + destination_dir +
def extract_files destination_dir
    errstr = "Error reading files from gem"
    open @gem, 'rb' do |io|
      read_until_dashes io 
      header = file_list io
      raise Gem::Exception, errstr unless header
      header.each do |entry|
        full_name = entry['path']
        destination = install_location full_name, destination_dir
        file_data = ''
        read_until_dashes io do |line|
          file_data << line
        end
        file_data = file_data.strip.unpack("m")[0]
        file_data = Zlib::Inflate.inflate file_data
        raise Gem::Package::FormatError, "#{full_name} in #{@gem} is corrupt" if
          file_data.length != entry['size'].to_i
        FileUtils.rm_rf destination
        FileUtils.mkdir_p File.dirname destination
        open destination, 'wb', entry['mode'] do |out|
          out.write file_data
        end
        say destination if Gem.configuration.really_verbose
      end
    end
  rescue Zlib::DataError
    raise Gem::Exception, errstr
  end
def extract_files destination_dir errstr = "Error reading files from gem" open @gem , 'rb' do | io | read_until_dashes io header = file_list io raise Gem :: Exception , errstr unless header header . each do | entry | full_name = entry [ 'path' ] destination = install_location full_name , destination_dir file_data = '' read_until_dashes io do | line | file_data << line end file_data = file_data . strip . unpack ( "m" ) [ 0 ] file_data = Zlib :: Inflate . inflate file_data raise Gem :: Package :: FormatError , "#{full_name} in #{@gem} is corrupt" if file_data . length != entry [ 'size' ] . to_i FileUtils . rm_rf destination FileUtils . mkdir_p File . dirname destination open destination , 'wb' , entry [ 'mode' ] do | out | out . write file_data end say destination if Gem . configuration . really_verbose end end rescue Zlib :: DataError raise Gem :: Exception , errstr end
Extracts the files in this package into +destination_dir+
Extracts the files in this package into + destination_dir +
# spec
destination_dir