modulemanager: Re-organise module loading to still work when no global modules_enabled is defined in the config (thanks hoelzro for accidentally discovering this one)

Fri, 16 Oct 2009 22:12:46 +0100

author
Matthew Wild <mwild1@gmail.com>
date
Fri, 16 Oct 2009 22:12:46 +0100
changeset 1960
1e674dae31ae
parent 1959
f56670ce64de
child 1961
3652ef68c361

modulemanager: Re-organise module loading to still work when no global modules_enabled is defined in the config (thanks hoelzro for accidentally discovering this one)

core/modulemanager.lua file | annotate | diff | comparison | revisions
--- a/core/modulemanager.lua	Fri Oct 16 22:03:32 2009 +0100
+++ b/core/modulemanager.lua	Fri Oct 16 22:12:46 2009 +0100
@@ -56,22 +56,25 @@
 
 -- Load modules when a host is activated
 function load_modules_for_host(host)
+	local disabled_set = {};
+	local modules_disabled = config.get(host, "core", "modules_disabled");
+	if modules_disabled then
+		for _, module in ipairs(modules_disabled) do
+			disabled_set[module] = true;
+		end
+	end
+
+	-- Load auto-loaded modules for this host
+	for _, module in ipairs(autoload_modules) do
+		if not disabled_set[module] then
+			load(host, module);
+		end
+	end
+
+	-- Load modules from global section
 	if config.get(host, "core", "load_global_modules") ~= false then
-		-- Load modules from global section
 		local modules_enabled = config.get("*", "core", "modules_enabled");
-		local modules_disabled = config.get(host, "core", "modules_disabled");
-		local disabled_set = {};
 		if modules_enabled then
-			if modules_disabled then
-				for _, module in ipairs(modules_disabled) do
-					disabled_set[module] = true;
-				end
-			end
-			for _, module in ipairs(autoload_modules) do
-				if not disabled_set[module] then
-					load(host, module);
-				end
-			end
 			for _, module in ipairs(modules_enabled) do
 				if not disabled_set[module] and not is_loaded(host, module) then
 					load(host, module);

mercurial