diff options
author | Waqas Hussain <waqas20@gmail.com> | 2012-08-01 01:36:34 +0500 |
---|---|---|
committer | Waqas Hussain <waqas20@gmail.com> | 2012-08-01 01:36:34 +0500 |
commit | 5e947f4b086e5818b0aac35fe2bbd2079fbf4077 (patch) | |
tree | 8c0d518b1405058b1910b67ba4cd44827092a4d1 /util/datamanager.lua | |
parent | ebd36ab0e6567c053a8db5d96e07f0903a705291 (diff) | |
download | prosody-5e947f4b086e5818b0aac35fe2bbd2079fbf4077.tar.gz prosody-5e947f4b086e5818b0aac35fe2bbd2079fbf4077.zip |
util.datamanager: Don't use os.rename on non-POSIX. It doesn't overwrite exisitng files on Windows.
Diffstat (limited to 'util/datamanager.lua')
-rw-r--r-- | util/datamanager.lua | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/util/datamanager.lua b/util/datamanager.lua index 79be07b0..ecf90bab 100644 --- a/util/datamanager.lua +++ b/util/datamanager.lua @@ -171,6 +171,18 @@ local function atomic_store(filename, data) return nil, msg; end +if prosody.platform ~= "posix" then + -- os.rename does not overwrite existing files on Windows + -- TODO We could use Transactional NTFS on Vista and above + function atomic_store(filename, data) + local f, err = io_open(filename, "w"); + if not f then return f, err; end + local ok, msg = f:write(data); + if not ok then f:close(); return ok, msg; end + return f:close(); + end +end + function store(username, host, datastore, data) if not data then data = {}; |