diff options
author | Kim Alvefur <zash@zash.se> | 2014-05-09 23:35:54 +0200 |
---|---|---|
committer | Kim Alvefur <zash@zash.se> | 2014-05-09 23:35:54 +0200 |
commit | ccb5e87519070a995cfad8090f517d4273cbeec9 (patch) | |
tree | b18cb027c5578a9efd74e0e4bea0b0d4401abdec /util | |
parent | eaeb3cfea49d3c4cdfebf7bdd281e5633765e31b (diff) | |
parent | cb8d6cd008a01a8fc7427c9489a2366e17e88a62 (diff) | |
download | prosody-ccb5e87519070a995cfad8090f517d4273cbeec9.tar.gz prosody-ccb5e87519070a995cfad8090f517d4273cbeec9.zip |
Merge 0.10->trunk
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; |