diff options
author | Matthew Wild <mwild1@gmail.com> | 2010-11-10 19:46:53 +0000 |
---|---|---|
committer | Matthew Wild <mwild1@gmail.com> | 2010-11-10 19:46:53 +0000 |
commit | 385fd64606ba2c860ce5bcd534a7de5f8bce4bd1 (patch) | |
tree | 9fb2b9820d780d2807ac9b1241f802270e1e5e89 /core/configmanager.lua | |
parent | 0bcc5e0ac77e6bdc584aaaa042978f28ce1e5483 (diff) | |
download | prosody-385fd64606ba2c860ce5bcd534a7de5f8bce4bd1.tar.gz prosody-385fd64606ba2c860ce5bcd534a7de5f8bce4bd1.zip |
prosody, configmanager, certmanager: Relocate prosody.resolve_relative_path() to configmanager, and update certmanager (the only user of this function)
Diffstat (limited to 'core/configmanager.lua')
-rw-r--r-- | core/configmanager.lua | 21 |
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+$"); |