-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+local function is_relative(path)
+ local path_sep = package.config:sub(1,1);
+ return ((path_sep == "/" and path:sub(1,1) ~= "/")
+ or (path_sep == "\\" and (path:sub(1,1) ~= "/" and path:sub(2,3) ~= ":\\")))
+end
+
-- Tell Lua where to find our libraries
if CFG_SOURCEDIR then
- package.path = CFG_SOURCEDIR.."/?.lua;"..package.path;
- package.cpath = CFG_SOURCEDIR.."/?.so;"..package.cpath;
+ local function filter_relative_paths(path)
+ if is_relative(path) then return ""; end
+ end
+ local function sanitise_paths(paths)
+ return (paths:gsub("[^;]+;?", filter_relative_paths):gsub(";;+", ";"));
+ end
+ package.path = sanitise_paths(CFG_SOURCEDIR.."/?.lua;"..package.path);
+ package.cpath = sanitise_paths(CFG_SOURCEDIR.."/?.so;"..package.cpath);
end
-- Substitute ~ with path to home directory in data path
end
-- Global 'prosody' object
-prosody = { events = require "util.events".new(); };
-local prosody = prosody;
+local prosody = { events = require "util.events".new(); };
+_G.prosody = prosody;
-- Check dependencies
local dependencies = require "util.dependencies";
prosody.full_sessions = full_sessions;
prosody.hosts = hosts;
+ local data_path = config.get("*", "core", "data_path") or CFG_DATADIR or "data";
prosody.paths = { source = CFG_SOURCEDIR, config = CFG_CONFIGDIR,
- plugins = CFG_PLUGINDIR, data = CFG_DATADIR };
-
+ plugins = CFG_PLUGINDIR, data = data_path };
+
prosody.arg = _G.arg;
prosody.platform = "unknown";
end
function init_data_store()
- local data_path = config.get("*", "core", "data_path") or CFG_DATADIR or "data";
- require "util.datamanager".set_data_path(data_path);
require "core.storagemanager";
end