Mercurial > prosody-hg
diff loader.lua @ 14064:76ece4dd9782
loader: Move all path setup here from all executables
So it is done in the same way for all the executables, with less code
duplication.
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Mon, 09 Feb 2026 01:57:40 +0100 |
| parents | ef586363d90f |
| children | 50b8d732c905 |
line wrap: on
line diff
--- a/loader.lua Mon Feb 09 01:57:07 2026 +0100 +++ b/loader.lua Mon Feb 09 01:57:40 2026 +0100 @@ -2,9 +2,21 @@ -- transition period while we update all require calls. if (...) == "prosody.loader" then + 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 + 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 + -- For require"util.foo" also look in paths equivalent to "prosody.util.foo" - package.path = package.path:gsub("([^;]*)(?[^;]*)", "%1prosody/%2;%1%2"); - package.cpath = package.cpath:gsub("([^;]*)(?[^;]*)", "%1prosody/%2;%1%2"); + package.path = sanitise_paths(CFG_SOURCEDIR.."/?.lua;"..package.path:gsub("([^;]*)(?[^;]*)", "%1prosody/%2;%1%2")); + package.cpath = sanitise_paths(CFG_SOURCEDIR.."/?.so;"..package.cpath:gsub("([^;]*)(?[^;]*)", "%1prosody/%2;%1%2")); else -- When requiring "prosody.x", also look for "x" for i = #package.searchers, 1, -1 do
