aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMax Howell2012-03-07 12:51:02 +0000
committerMax Howell2012-03-07 12:51:02 +0000
commit599cc70f39417b67b5902642f09dbba13ab42ace (patch)
treee8bcceaf1e698ef9300822f8a41208e614c5190c
parenta633812f95980ec86d3b9e0547470fa5b8eec469 (diff)
downloadhomebrew-599cc70f39417b67b5902642f09dbba13ab42ace.tar.bz2
Protect against unwritable cache location
-rw-r--r--Library/Homebrew/global.rb27
1 files changed, 19 insertions, 8 deletions
diff --git a/Library/Homebrew/global.rb b/Library/Homebrew/global.rb
index 3f742db5c..b1e722b8b 100644
--- a/Library/Homebrew/global.rb
+++ b/Library/Homebrew/global.rb
@@ -9,16 +9,27 @@ ARGV.extend(HomebrewArgvExtension)
HOMEBREW_VERSION = '0.8.1'
HOMEBREW_WWW = 'http://mxcl.github.com/homebrew/'
-HOMEBREW_CACHE = if ENV['HOMEBREW_CACHE']
- Pathname.new(ENV['HOMEBREW_CACHE'])
-elsif Process.uid == 0
- # technically this is not the correct place, this cache is for *all users*
- # so in that case, maybe we should always use it, root or not?
- Pathname.new("/Library/Caches/Homebrew")
-else
- Pathname.new("~/Library/Caches/Homebrew").expand_path
+def cache
+ if ENV['HOMEBREW_CACHE']
+ Pathname.new(ENV['HOMEBREW_CACHE'])
+ else
+ root_library = Pathname.new("/Library/Caches/Homebrew")
+ if Process.uid == 0
+ root_library
+ else
+ home_library = Pathname.new("~/Library/Caches/Homebrew").expand_path
+ if not home_library.writable?
+ root_library
+ else
+ home_library
+ end
+ end
+ end
end
+HOMEBREW_CACHE = cache
+undef cache
+
# Where brews installed via URL are cached
HOMEBREW_CACHE_FORMULA = HOMEBREW_CACHE+"Formula"