Detect uncompressed tars

From a patch by @RuiPereira

Closes Homebrew/homebrew#12011.
This commit is contained in:
Adam Vandenberg 2012-05-03 20:31:00 -07:00
parent fc77a38d03
commit 428781723b
2 changed files with 5 additions and 3 deletions

View File

@ -74,7 +74,7 @@ class CurlDownloadStrategy < AbstractDownloadStrategy
when :zip when :zip
quiet_safe_system '/usr/bin/unzip', {:quiet_flag => '-qq'}, @tarball_path quiet_safe_system '/usr/bin/unzip', {:quiet_flag => '-qq'}, @tarball_path
chdir chdir
when :gzip, :bzip2, :compress when :gzip, :bzip2, :compress, :tar
# Assume these are also tarred # Assume these are also tarred
# TODO check if it's really a tar archive # TODO check if it's really a tar archive
safe_system '/usr/bin/tar', 'xf', @tarball_path safe_system '/usr/bin/tar', 'xf', @tarball_path

View File

@ -247,9 +247,10 @@ class Pathname
# OS X installer package # OS X installer package
return :pkg if self.extname == '.pkg' return :pkg if self.extname == '.pkg'
# get the first six bytes # Get enough of the file to detect common file types
# POSIX tar magic has a 257 byte offset
magic_bytes = nil magic_bytes = nil
File.open(self) { |f| magic_bytes = f.read(6) } File.open(self) { |f| magic_bytes = f.read(262) }
# magic numbers stolen from /usr/share/file/magic/ # magic numbers stolen from /usr/share/file/magic/
case magic_bytes case magic_bytes
@ -257,6 +258,7 @@ class Pathname
when /^\037\213/ then :gzip when /^\037\213/ then :gzip
when /^BZh/ then :bzip2 when /^BZh/ then :bzip2
when /^\037\235/ then :compress when /^\037\235/ then :compress
when /^.{257}ustar/ then :tar
when /^\xFD7zXZ\x00/ then :xz when /^\xFD7zXZ\x00/ then :xz
when /^Rar!/ then :rar when /^Rar!/ then :rar
else else