Don't use file, just check the magic numbers instead

Closes Homebrew/homebrew#58
This commit is contained in:
Ben Alpert 2009-09-23 16:22:16 -06:00
parent e339a2a73f
commit ad01b141b7

View File

@ -49,12 +49,15 @@ class HttpDownloadStrategy <AbstractDownloadStrategy
return @dl # thus performs checksum verification return @dl # thus performs checksum verification
end end
def stage def stage
case `file -b #{@dl}` # magic numbers stolen from /usr/share/file/magic/
when /^Zip archive data/ File.open(@dl) do |f|
# get the first four bytes
case f.read(4)
when /^PK\003\004/ # .zip archive
safe_system '/usr/bin/unzip', '-qq', @dl safe_system '/usr/bin/unzip', '-qq', @dl
chdir chdir
when /^(gzip|bzip2) compressed data/ when /^\037\213/, /^BZh/ # gzip/bz2 compressed
# TODO do file -z now to see if it is in fact a tar # TODO check if it's really a tar archive
safe_system '/usr/bin/tar', 'xf', @dl safe_system '/usr/bin/tar', 'xf', @dl
chdir chdir
else else
@ -64,6 +67,7 @@ class HttpDownloadStrategy <AbstractDownloadStrategy
# HOWEVER if this breaks some expectation you had we *will* change the # HOWEVER if this breaks some expectation you had we *will* change the
# behaviour, just open an issue at github # behaviour, just open an issue at github
FileUtils.mv @dl, File.basename(@url) FileUtils.mv @dl, File.basename(@url)
end
end end
end end
private private