mod_adhoc: Add support for commands only executable by global administrators
[prosody.git] / util / datamanager.lua
index fbdfb581b66ef9208d37002c4e1b24125313f379..d5e9c88ca7ad0130b879060950d579420edb65d1 100644 (file)
@@ -22,6 +22,7 @@ local t_insert = table.insert;
 local append = require "util.serialization".append;
 local path_separator = "/"; if os.getenv("WINDIR") then path_separator = "\\" end
 local lfs = require "lfs";
+local prosody = prosody;
 local raw_mkdir;
 
 if prosody.platform == "posix" then
@@ -56,7 +57,7 @@ local function mkdir(path)
        return path;
 end
 
-local data_path = "data";
+local data_path = (prosody and prosody.paths and prosody.paths.data) or ".";
 local callbacks = {};
 
 ------- API -------------
@@ -114,7 +115,7 @@ function load(username, host, datastore)
        if not data then
                local mode = lfs.attributes(getpath(username, host, datastore), "mode");
                if not mode then
-                       log("debug", "Failed to load "..datastore.." storage ('"..ret.."') for user: "..(username or "nil").."@"..(host or "nil"));
+                       log("debug", "Assuming empty "..datastore.." storage ('"..ret.."') for user: "..(username or "nil").."@"..(host or "nil"));
                        return nil;
                else -- file exists, but can't be read
                        -- TODO more detailed error checking and logging?
@@ -206,7 +207,7 @@ function list_load(username, host, datastore)
        if not data then
                local mode = lfs.attributes(getpath(username, host, datastore, "list"), "mode");
                if not mode then
-                       log("debug", "Failed to load "..datastore.." storage ('"..ret.."') for user: "..(username or "nil").."@"..(host or "nil"));
+                       log("debug", "Assuming empty "..datastore.." storage ('"..ret.."') for user: "..(username or "nil").."@"..(host or "nil"));
                        return nil;
                else -- file exists, but can't be read
                        -- TODO more detailed error checking and logging?