X-Git-Url: https://git.enpas.org/?a=blobdiff_plain;f=prosody;h=65fb16321e906aea4b95903fd6ac8b234d2e8328;hb=7bad17745e800ac95c0dd7335ed9abb00bbc305d;hp=8e96eb46ac88d1cfdc42bf146a0570928686bd17;hpb=fb3f3f7c252ba97752f48aca9ad254476643c421;p=prosody.git diff --git a/prosody b/prosody index 8e96eb46..65fb1632 100755 --- a/prosody +++ b/prosody @@ -144,6 +144,10 @@ function set_function_metatable() debug.setupvalue(f, i, value); end end + function mt.__tostring(f) + local info = debug.getinfo(f); + return ("function(%s:%d)"):format(info.short_src:match("[^\\/]*$"), info.linedefined); + end debug.setmetatable(function() end, mt); end @@ -159,6 +163,23 @@ function init_global_state() prosody.paths = { source = CFG_SOURCEDIR, config = CFG_CONFIGDIR, plugins = CFG_PLUGINDIR, data = CFG_DATADIR }; + local path_sep = package.config:sub(1,1); + local rel_path_start = ".."..path_sep; + function prosody.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 + prosody.arg = _G.arg; prosody.platform = "unknown"; @@ -281,6 +302,7 @@ end function load_secondary_libraries() --- Load and initialise core modules require "util.import" + require "util.xmppstream" require "core.xmlhandlers" require "core.rostermanager" require "core.hostmanager" @@ -321,6 +343,7 @@ function init_data_store() end return username, host, datastore, data; end); + require "core.storagemanager"; end function prepare_to_start()