prosody

changeset 2039
545c0d6b6bb3
parent 2023
a3bf6cb12752
child 2056
ed3910860d11
--- a/prosody	Wed Oct 21 19:01:02 2009 +0500
+++ b/prosody	Wed Oct 21 16:25:49 2009 +0100
@@ -32,7 +32,26 @@
 
 -- Required to be able to find packages installed with luarocks
 pcall(require, "luarocks.require")
-require "util.require";
+
+-- Replace require with one that doesn't pollute _G
+do
+	local _realG = _G;
+	local _real_require = require;
+	function require(...)
+		local curr_env = getfenv(2);
+		local curr_env_mt = getmetatable(getfenv(2));
+		local _realG_mt = getmetatable(_realG);
+		if curr_env_mt and curr_env_mt.__index and not curr_env_mt.__newindex and _realG_mt then
+			local old_newindex
+			old_newindex, _realG_mt.__newindex = _realG_mt.__newindex, curr_env;
+			local ret = _real_require(...);
+			_realG_mt.__newindex = old_newindex;
+			return ret;
+		end
+		return _real_require(...);
+	end
+end
+
 
 config = require "core.configmanager"
 

mercurial