Replace files atomically when relocating, take two

This commit is contained in:
Jack Nagel 2014-03-27 14:17:13 -05:00
parent 0c99e64851
commit ad7911bb75

View File

@ -38,16 +38,14 @@ class Keg
end end
end end
(pkgconfig_files | libtool_files | script_files).each do |file| files = pkgconfig_files | libtool_files | script_files
file.ensure_writable do
file.open('rb') do |f| files.group_by { |f| f.stat.ino }.each_value do |first, *rest|
s = f.read s = first.open("rb", &:read)
s.gsub!(old_cellar, new_cellar) s.gsub!(old_cellar, new_cellar)
s.gsub!(old_prefix, new_prefix) s.gsub!(old_prefix, new_prefix)
f.reopen(file, 'wb') first.atomic_write(s)
f.write(s) rest.each { |file| FileUtils.ln(first, file, :force => true) }
end
end
end end
end end