def extract_files(directory, format)
unless File.expand_path(directory) == directory then
raise ArgumentError, "install directory %p not absolute" % directory
end
format.file_entries.each do |entry, file_data|
path = entry['path'].untaint
if path =~ /\A\// then
raise Gem::InstallError,
"attempt to install file into #{entry['path'].inspect}"
end
path = File.expand_path File.join(directory, path)
if path !~ /\A#{Regexp.escape directory}/ then
msg = "attempt to install file into %p under %p" %
[entry['path'], directory]
raise Gem::InstallError, msg
end
FileUtils.mkdir_p File.dirname(path)
File.open(path, "wb") do |out|
out.write file_data
end
end
end