summaryrefslogtreecommitdiff
path: root/lib/pstore.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/pstore.rb')
-rw-r--r--lib/pstore.rb4
1 files changed, 4 insertions, 0 deletions
diff --git a/lib/pstore.rb b/lib/pstore.rb
index c4c6dd56a5..50313dcb8f 100644
--- a/lib/pstore.rb
+++ b/lib/pstore.rb
@@ -99,11 +99,13 @@ class PStore
content = nil
unless read_only
file = File.open(@filename, File::RDWR | File::CREAT)
+ file.binmode
file.flock(File::LOCK_EX)
commit_new(file) if FileTest.exist?(new_file)
content = file.read()
else
file = File.open(@filename, File::RDONLY)
+ file.binmode
file.flock(File::LOCK_SH)
content = (File.read(new_file) rescue file.read())
end
@@ -132,6 +134,7 @@ class PStore
content = dump(@table)
if !md5 || size != content.size || md5 != Digest::MD5.digest(content)
File.open(tmp_file, "w") {|t|
+ t.binmode
t.write(content)
}
File.rename(tmp_file, new_file)
@@ -166,6 +169,7 @@ class PStore
f.rewind
new_file = @filename + ".new"
File.open(new_file) do |nf|
+ nf.binmode
FileUtils.copy_stream(nf, f)
end
File.unlink(new_file)