diff options
| author | Ben Alpert | 2009-09-23 16:22:16 -0600 |
|---|---|---|
| committer | Ben Alpert | 2009-09-24 16:30:40 -0600 |
| commit | 106b82ed7cdbdbd8837371bff2431c55a22536dc (patch) | |
| tree | f036b0348e6c8afa79557980e767d4e08dfbb811 | |
| parent | c89f7f2b5175884be4329d520545104855bd01e2 (diff) | |
| download | homebrew-106b82ed7cdbdbd8837371bff2431c55a22536dc.tar.bz2 | |
Don't use file, just check the magic numbers instead
Closes #58
| -rw-r--r-- | Library/Homebrew/download_strategy.rb | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/Library/Homebrew/download_strategy.rb b/Library/Homebrew/download_strategy.rb index 58e5b197b..5d4afcdda 100644 --- a/Library/Homebrew/download_strategy.rb +++ b/Library/Homebrew/download_strategy.rb @@ -49,12 +49,15 @@ class HttpDownloadStrategy <AbstractDownloadStrategy return @dl # thus performs checksum verification end def stage - case `file -b #{@dl}` - when /^Zip archive data/ + # magic numbers stolen from /usr/share/file/magic/ + 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 chdir - when /^(gzip|bzip2) compressed data/ - # TODO do file -z now to see if it is in fact a tar + when /^\037\213/, /^BZh/ # gzip/bz2 compressed + # TODO check if it's really a tar archive safe_system '/usr/bin/tar', 'xf', @dl chdir else @@ -64,6 +67,7 @@ class HttpDownloadStrategy <AbstractDownloadStrategy # HOWEVER if this breaks some expectation you had we *will* change the # behaviour, just open an issue at github FileUtils.mv @dl, File.basename(@url) + end end end private |
