--- a/core/configmanager.lua Wed Nov 10 22:27:09 2010 +0500 +++ b/core/configmanager.lua Wed Nov 10 19:46:53 2010 +0000 @@ -13,6 +13,8 @@ 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 @@ 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+$");