From 428781723b9612198b05b5fb30ce60622f363011 Mon Sep 17 00:00:00 2001 From: Adam Vandenberg Date: Thu, 3 May 2012 20:31:00 -0700 Subject: [PATCH] Detect uncompressed tars From a patch by @RuiPereira Closes Homebrew/homebrew#12011. --- Library/Homebrew/download_strategy.rb | 2 +- Library/Homebrew/extend/pathname.rb | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/Library/Homebrew/download_strategy.rb b/Library/Homebrew/download_strategy.rb index 30e9b0043f..3fcb4f2706 100644 --- a/Library/Homebrew/download_strategy.rb +++ b/Library/Homebrew/download_strategy.rb @@ -74,7 +74,7 @@ class CurlDownloadStrategy < AbstractDownloadStrategy when :zip quiet_safe_system '/usr/bin/unzip', {:quiet_flag => '-qq'}, @tarball_path chdir - when :gzip, :bzip2, :compress + when :gzip, :bzip2, :compress, :tar # Assume these are also tarred # TODO check if it's really a tar archive safe_system '/usr/bin/tar', 'xf', @tarball_path diff --git a/Library/Homebrew/extend/pathname.rb b/Library/Homebrew/extend/pathname.rb index 5153568612..f17209fa06 100644 --- a/Library/Homebrew/extend/pathname.rb +++ b/Library/Homebrew/extend/pathname.rb @@ -247,9 +247,10 @@ class Pathname # OS X installer package 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 - 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/ case magic_bytes @@ -257,6 +258,7 @@ class Pathname when /^\037\213/ then :gzip when /^BZh/ then :bzip2 when /^\037\235/ then :compress + when /^.{257}ustar/ then :tar when /^\xFD7zXZ\x00/ then :xz when /^Rar!/ then :rar else