From f7f200591c1ce91f4f4ddee1a76b7e1e5d16a453 Mon Sep 17 00:00:00 2001 From: Jack Nagel Date: Sat, 5 Apr 2014 23:07:28 -0500 Subject: [PATCH] Fall back to open/write when atomic_write fails Fixes Homebrew/homebrew#28190. --- Library/Homebrew/keg_fix_install_names.rb | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/Library/Homebrew/keg_fix_install_names.rb b/Library/Homebrew/keg_fix_install_names.rb index 083afabff0..efc1bd48c4 100644 --- a/Library/Homebrew/keg_fix_install_names.rb +++ b/Library/Homebrew/keg_fix_install_names.rb @@ -45,10 +45,15 @@ class Keg < Pathname changed = s.gsub!(old_cellar, new_cellar) changed = s.gsub!(old_prefix, new_prefix) || changed - if changed + begin first.atomic_write(s) + rescue Errno::EACCES + first.ensure_writable do + first.open("wb") { |f| f.write(s) } + end + else rest.each { |file| FileUtils.ln(first, file, :force => true) } - end + end if changed end end