# HG changeset patch
# User Waqas Hussain <waqas20@gmail.com>
# Date 1295566549 -18000
# Node ID ea7e3f22f8981b8ad0897a96fc3cad9601effd19
# Parent  d62a2861f1f9903788e811594d31ae80b26791b4
util.pluginloader: Add support for multiple plugin directories.

diff -r d62a2861f1f9 -r ea7e3f22f898 util/pluginloader.lua
--- a/util/pluginloader.lua	Fri Jan 21 04:27:46 2011 +0500
+++ b/util/pluginloader.lua	Fri Jan 21 04:35:49 2011 +0500
@@ -6,8 +6,13 @@
 -- COPYING file in the source package for more information.
 --
 
-
-local plugin_dir = CFG_PLUGINDIR or "./plugins/";
+local dir_sep, path_sep = package.config:match("^(%S+)%s(%S+)");
+local plugin_dir = {};
+for path in (CFG_PLUGINDIR or "./plugins/"):gsub("[/\\]", dir_sep):gmatch("[^"..path_sep.."]+") do
+	path = path..dir_sep; -- add path separator to path end
+	path = path:gsub(dir_sep..dir_sep.."+", dir_sep); -- coalesce multiple separaters
+	plugin_dir[#plugin_dir + 1] = path;
+end
 
 local io_open, os_time = io.open, os.time;
 local loadstring, pairs = loadstring, pairs;
@@ -15,7 +20,11 @@
 module "pluginloader"
 
 local function load_file(name)
-	local file, err = io_open(plugin_dir..name);
+	local file, err;
+	for i=1,#plugin_dir do
+		file, err = io_open(plugin_dir[i]..name);
+		if file then break; end
+	end
 	if not file then return file, err; end
 	local content = file:read("*a");
 	file:close();