aboutsummaryrefslogtreecommitdiffstats
path: root/core/configmanager.lua
diff options
context:
space:
mode:
Diffstat (limited to 'core/configmanager.lua')
-rw-r--r--core/configmanager.lua21
1 files changed, 21 insertions, 0 deletions
diff --git a/core/configmanager.lua b/core/configmanager.lua
index ca23b136..b9618f86 100644
--- a/core/configmanager.lua
+++ b/core/configmanager.lua
@@ -13,6 +13,8 @@ local setmetatable, loadfile, pcall, rawget, rawset, io, error, dofile, type, p
local fire_event = prosody and prosody.events.fire_event or function () end;
+local path_sep = package.config:sub(1,1);
+
module "configmanager"
local parsers = {};
@@ -64,6 +66,25 @@ function _M.set(host, section, key, value)
return set(config, host, section, key, value);
end
+-- Helper function to resolve relative paths (needed by config)
+do
+ local rel_path_start = ".."..path_sep;
+ function resolve_relative_path(parent_path, path)
+ if path then
+ local is_relative;
+ if path_sep == "/" and path:sub(1,1) ~= "/" then
+ is_relative = true;
+ elseif path_sep == "\\" and (path:sub(1,1) ~= "/" and path:sub(2,3) ~= ":\\") then
+ is_relative = true;
+ end
+ if is_relative then
+ return parent_path..path_sep..path;
+ end
+ end
+ return path;
+ end
+end
+
function load(filename, format)
format = format or filename:match("%w+$");