diff options
author | Kim Alvefur <zash@zash.se> | 2014-05-09 19:34:35 +0200 |
---|---|---|
committer | Kim Alvefur <zash@zash.se> | 2014-05-09 19:34:35 +0200 |
commit | 084761b5efd4633f02cae9827494b4178749fd6b (patch) | |
tree | a5bf50b6190a6d090716eb8f368bb35684f11679 /util | |
parent | a39b07906f534a6fc85be2e70fe0aa4faac0cf4e (diff) | |
download | prosody-084761b5efd4633f02cae9827494b4178749fd6b.tar.gz prosody-084761b5efd4633f02cae9827494b4178749fd6b.zip |
core.configmanager: Move path utility functions into util.paths
Diffstat (limited to 'util')
-rw-r--r-- | util/paths.lua | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/util/paths.lua b/util/paths.lua new file mode 100644 index 00000000..3e5744df --- /dev/null +++ b/util/paths.lua @@ -0,0 +1,38 @@ +local path_sep = package.config:sub(1,1); + +local path_util = {} + +-- Helper function to resolve relative paths (needed by config) +function path_util.resolve_relative_path(parent_path, path) + if path then + -- Some normalization + parent_path = parent_path:gsub("%"..path_sep.."+$", ""); + path = path:gsub("^%.%"..path_sep.."+", ""); + + 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) ~= ":\\" 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 + +-- Helper function to convert a glob to a Lua pattern +function path_util.glob_to_pattern(glob) + return "^"..glob:gsub("[%p*?]", function (c) + if c == "*" then + return ".*"; + elseif c == "?" then + return "."; + else + return "%"..c; + end + end).."$"; +end + +return path_util; |