aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWaqas Hussain <waqas20@gmail.com>2011-01-21 04:35:49 +0500
committerWaqas Hussain <waqas20@gmail.com>2011-01-21 04:35:49 +0500
commit799df428912e77c1f8dbff97620666b1c22dfe83 (patch)
tree365c01d88e5d1c81a52407dc4390a94bd0f56c6d
parent427b33d2ba835398c9ebf0abc8f8e239f66d47e3 (diff)
downloadprosody-799df428912e77c1f8dbff97620666b1c22dfe83.tar.gz
prosody-799df428912e77c1f8dbff97620666b1c22dfe83.zip
util.pluginloader: Add support for multiple plugin directories.
-rw-r--r--util/pluginloader.lua15
1 files changed, 12 insertions, 3 deletions
diff --git a/util/pluginloader.lua b/util/pluginloader.lua
index 31ab1e88..1aedd630 100644
--- a/util/pluginloader.lua
+++ b/util/pluginloader.lua
@@ -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 @@ local loadstring, pairs = loadstring, pairs;
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();