MUC: Fixed traceback on presence errors lacking a condition.
[prosody.git] / prosody
diff --git a/prosody b/prosody
index 8e96eb46ac88d1cfdc42bf146a0570928686bd17..65fb16321e906aea4b95903fd6ac8b234d2e8328 100755 (executable)
--- 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()