/usr/lib/ruby/1.9.1/rubygems/package.rb is in libruby1.9.1 1.9.3.0-1ubuntu1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 | # -*- coding: utf-8 -*-
#--
# Copyright (C) 2004 Mauricio Julio Fernández Pradier
# See LICENSE.txt for additional licensing information.
#++
require 'rubygems/specification'
module Gem::Package
class Error < StandardError; end
class NonSeekableIO < Error; end
class ClosedIO < Error; end
class BadCheckSum < Error; end
class TooLongFileName < Error; end
class FormatError < Error
attr_reader :path
def initialize message, path = nil
@path = path
message << " in #{path}" if path
super message
end
end
##
# Raised when a tar file is corrupt
class TarInvalidError < Error; end
# FIX: zenspider said: does it really take an IO?
# passed to a method called open?!? that seems stupid.
def self.open(io, mode = "r", signer = nil, &block)
tar_type = case mode
when 'r' then TarInput
when 'w' then TarOutput
else
raise "Unknown Package open mode"
end
tar_type.open(io, signer, &block)
end
def self.pack(src, destname, signer = nil)
TarOutput.open(destname, signer) do |outp|
dir_class.chdir(src) do
outp.metadata = (file_class.read("RPA/metadata") rescue nil)
find_class.find('.') do |entry|
case
when file_class.file?(entry)
entry.sub!(%r{\./}, "")
next if entry =~ /\ARPA\//
stat = File.stat(entry)
outp.add_file_simple(entry, stat.mode, stat.size) do |os|
file_class.open(entry, "rb") do |f|
os.write(f.read(4096)) until f.eof?
end
end
when file_class.dir?(entry)
entry.sub!(%r{\./}, "")
next if entry == "RPA"
outp.mkdir(entry, file_class.stat(entry).mode)
else
raise "Don't know how to pack this yet!"
end
end
end
end
end
end
require 'rubygems/package/f_sync_dir'
require 'rubygems/package/tar_header'
require 'rubygems/package/tar_input'
require 'rubygems/package/tar_output'
require 'rubygems/package/tar_reader'
require 'rubygems/package/tar_reader/entry'
require 'rubygems/package/tar_writer'
|