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