From 4774e8fda58ec97cff435da6cdb13a3f0b377e56 Mon Sep 17 00:00:00 2001 From: eban Date: Sun, 7 Mar 2004 13:37:52 +0000 Subject: * lib/pstore.rb (commit_new): use FileUtils.copy_stream for Cygwin. [ruby-dev:23157] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@5915 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- lib/pstore.rb | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) (limited to 'lib') diff --git a/lib/pstore.rb b/lib/pstore.rb index 0be5e5a083..d6f5872fe9 100644 --- a/lib/pstore.rb +++ b/lib/pstore.rb @@ -12,7 +12,7 @@ # p db["root"] # end -require "ftools" +require "fileutils" require "digest/md5" class PStore @@ -100,7 +100,7 @@ class PStore file = File.open(@filename, File::RDWR | File::CREAT) if !read_only file.flock(File::LOCK_EX) - commit_new() if FileTest.exist?(new_file) + commit_new(file) if FileTest.exist?(new_file) content = file.read() else file.flock(File::LOCK_SH) @@ -138,7 +138,7 @@ class PStore t.write(content) } File.rename(tmp_file, new_file) - commit_new() + commit_new(file) end content = nil # unreference huge data end @@ -152,10 +152,12 @@ class PStore end private - def commit_new() + def commit_new(f) + f.truncate(0) + f.rewind new_file = @filename + ".new" - if !File.copy(new_file, @filename) - raise IOError + File.open(new_file) do |nf| + FileUtils.copy_stream(nf, f) end File.unlink(new_file) end -- cgit v1.2.3