core/configmanager.lua

changeset 3609
954b1159f2f3
parent 3573
f31fa6520a4b
child 3610
2084959d4096
--- 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+$");
 

mercurial