aboutsummaryrefslogtreecommitdiffstats
path: root/util
diff options
context:
space:
mode:
authorKim Alvefur <zash@zash.se>2014-05-09 23:35:54 +0200
committerKim Alvefur <zash@zash.se>2014-05-09 23:35:54 +0200
commitccb5e87519070a995cfad8090f517d4273cbeec9 (patch)
treeb18cb027c5578a9efd74e0e4bea0b0d4401abdec /util
parenteaeb3cfea49d3c4cdfebf7bdd281e5633765e31b (diff)
parentcb8d6cd008a01a8fc7427c9489a2366e17e88a62 (diff)
downloadprosody-ccb5e87519070a995cfad8090f517d4273cbeec9.tar.gz
prosody-ccb5e87519070a995cfad8090f517d4273cbeec9.zip
Merge 0.10->trunk
Diffstat (limited to 'util')
-rw-r--r--util/paths.lua38
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;