summaryrefslogtreecommitdiff
path: root/ext/extmk.rb
diff options
context:
space:
mode:
authorNobuyoshi Nakada <nobu@ruby-lang.org>2022-08-06 20:56:23 +0900
committerNobuyoshi Nakada <nobu@ruby-lang.org>2022-08-07 18:25:10 +0900
commite5e6b87e265b95620821f7abac56b5ab90d4c1fd (patch)
treebadceff82bd5af0eea4a6d0cd4c49187940ad3f2 /ext/extmk.rb
parent03f86565a69687b335d16d873e2b1f35cb356bec (diff)
Create temporary file exclusively and clean
Diffstat (limited to 'ext/extmk.rb')
-rwxr-xr-xext/extmk.rb9
1 files changed, 7 insertions, 2 deletions
diff --git a/ext/extmk.rb b/ext/extmk.rb
index 1624ec9099..40fc10ea1c 100755
--- a/ext/extmk.rb
+++ b/ext/extmk.rb
@@ -66,12 +66,17 @@ end
def atomic_write_open(filename)
filename_new = filename + ".new.#$$"
- open(filename_new, "wb") do |f|
+ clean = false
+ File.open(filename_new, "wbx") do |f|
+ clean = true
yield f
end
if File.binread(filename_new) != (File.binread(filename) rescue nil)
File.rename(filename_new, filename)
- else
+ clean = false
+ end
+ensure
+ if clean
File.unlink(filename_new)
end
end