Software /
code /
prosody
Changeset
206:e30d0e30a0ff
Datamanager now deletes files with no data
author | Waqas Hussain <waqas20@gmail.com> |
---|---|
date | Mon, 03 Nov 2008 07:50:09 +0500 |
parents | 205:4ca91e0551b2 |
children | 207:90c387884234 |
files | util/datamanager.lua |
diffstat | 1 files changed, 12 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/util/datamanager.lua Mon Nov 03 07:48:39 2008 +0500 +++ b/util/datamanager.lua Mon Nov 03 07:50:09 2008 +0500 @@ -5,8 +5,10 @@ local loadfile, setfenv, pcall = loadfile, setfenv, pcall; local log = log; local io_open = io.open; +local os_remove = os.remove; local tostring = tostring; local error = error; +local next = next; local indent = function(f, i) for n = 1, i do @@ -93,14 +95,23 @@ end function store(username, host, datastore, data) + if not data then + data = {}; + end + -- save the datastore local f, msg = io_open(getpath(username, host, datastore), "w+"); if not f then log("error", "Unable to write to "..datastore.." storage ('"..msg.."') for user: "..(username or "nil").."@"..(host or "nil")); - return nil; + return; end f:write("return "); simplesave(f, data, 1); f:close(); + if not next(data) then -- try to delete empty datastore + os_remove(getpath(username, host, datastore)); + end + -- we write data even when we are deleting because lua doesn't have a + -- platform independent way of checking for non-exisitng files return true; end