Changeset

469:72683281cbc4

Automated merge with http://waqas.ath.cx/
author Matthew Wild <mwild1@gmail.com>
date Sat, 29 Nov 2008 03:28:07 +0000
parents 468:ab49cb6d0e92 (current diff) 467:66f145f5c932 (diff)
children 470:2f9d42fdeffa
files
diffstat 6 files changed, 41 insertions(+), 14 deletions(-) [+]
line wrap: on
line diff
--- a/Makefile	Sat Nov 29 08:25:34 2008 +0500
+++ b/Makefile	Sat Nov 29 03:28:07 2008 +0000
@@ -9,11 +9,10 @@
 all:
 	$(MAKE) all -C util-src
 
-install: prosody util/encodings.so util/encodings.so
-
+install: prosody.install util/encodings.so util/encodings.so
 	install -d $(BIN) $(CONFIG) $(MODULES) $(SOURCE)
 	install -d $(SOURCE)/core $(SOURCE)/net $(SOURCE)/util
-	install ./prosody $(BIN)
+	install ./prosody.install $(BIN)/prosody
 	install -m644 core/* $(SOURCE)/core
 	install -m644 net/* $(SOURCE)/net
 	install -m644 util/* $(SOURCE)/util
@@ -22,6 +21,7 @@
 	$(MAKE) install -C util-src
 
 clean:
+	rm -f prosody.install
 	$(MAKE) clean -C util-src
 
 util/encodings.so:
@@ -29,3 +29,7 @@
 
 util/hashes.so:
 	$(MAKE) install -C util-src
+
+prosody.install: prosody
+	sed "s|^CFG_SOURCEDIR=.*;$$|CFG_SOURCEDIR='$(SOURCE)';|;s|^CFG_CONFIGDIR=.*;$$|CFG_CONFIGDIR='$(CONFIG)';|;s|^CFG_PLUGINDIR=.*;$$|CFG_PLUGINDIR='$(MODULES)/';|;" prosody > prosody.install
+
--- a/configure	Sat Nov 29 08:25:34 2008 +0500
+++ b/configure	Sat Nov 29 03:28:07 2008 +0000
@@ -125,7 +125,7 @@
 
 if [ "$LUA_SUFFIX_SET" != "yes" ]
 then
-   for suffix in "" "5.1" "51" ""
+   for suffix in "5.1" "51" ""
    do
       LUA_SUFFIX="$suffix"
       if [ "$LUA_DIR_SET" = "yes" ]
--- a/core/configmanager.lua	Sat Nov 29 08:25:34 2008 +0500
+++ b/core/configmanager.lua	Sat Nov 29 03:28:07 2008 +0000
@@ -2,6 +2,7 @@
 local _G = _G;
 local 	setmetatable, loadfile, pcall, rawget, rawset, io = 
 		setmetatable, loadfile, pcall, rawget, rawset, io;
+
 module "configmanager"
 
 local parsers = {};
@@ -52,18 +53,21 @@
 
 function load(filename, format)
 	format = format or filename:match("%w+$");
+
 	if parsers[format] and parsers[format].load then
-		local f = io.open(filename);
+		local f, err = io.open(filename);
 		if f then 
 			local ok, err = parsers[format].load(f:read("*a"));
 			f:close();
 			return ok, err;
 		end
+		return f, err;
 	end
+
 	if not format then
 		return nil, "no parser specified";
 	else
-		return false, "no parser";
+		return nil, "no parser for "..(format);
 	end
 end
 
@@ -118,4 +122,4 @@
 	
 end
 
-return _M;
\ No newline at end of file
+return _M;
--- a/core/modulemanager.lua	Sat Nov 29 08:25:34 2008 +0500
+++ b/core/modulemanager.lua	Sat Nov 29 03:28:07 2008 +0000
@@ -1,4 +1,5 @@
 
+local plugin_dir = CFG_PLUGINDIR or "./plugins/";
 
 local logger = require "util.logger";
 local log = logger.init("modulemanager")
@@ -11,8 +12,8 @@
 
 local tostring, print = tostring, print;
 
+-- We need this to let modules access the real global namespace
 local _G = _G;
-local debug = debug;
 
 module "modulemanager"
 
@@ -30,7 +31,7 @@
 	if not (host and module_name) then
 		return nil, "insufficient-parameters";
 	end
-	local mod, err = loadfile("plugins/mod_"..module_name..".lua");
+	local mod, err = loadfile(plugin_dir.."mod_"..module_name..".lua");
 	if not mod then
 		log("error", "Unable to load module '%s': %s", module_name or "nil", err or "nil");
 		return nil, err;
--- a/net/connlisteners.lua	Sat Nov 29 08:25:34 2008 +0500
+++ b/net/connlisteners.lua	Sat Nov 29 03:28:07 2008 +0000
@@ -1,4 +1,5 @@
 
+local listeners_dir = (CFG_SOURCEDIR or "").."/net/";
 local server_add = require "net.server".add;
 local log = require "util.logger".init("connlisteners");
 
@@ -26,7 +27,7 @@
 function get(name)
 	local h = listeners[name];
 	if not h then
-		pcall(dofile, "net/"..name:gsub("[^%w%-]", "_").."_listener.lua");
+		pcall(dofile, listeners_dir..name:gsub("[^%w%-]", "_").."_listener.lua");
 		h = listeners[name];
 	end
 	return h;
@@ -42,4 +43,4 @@
 				(udata and udata.interface) or "*", (udata and udata.mode) or h.default_mode or 1, (udata and udata.ssl) or nil );
 end
 
-return _M;
\ No newline at end of file
+return _M;
--- a/prosody	Sat Nov 29 08:25:34 2008 +0500
+++ b/prosody	Sat Nov 29 03:28:07 2008 +0000
@@ -2,15 +2,32 @@
 
 -- Config here --
 
-
+CFG_SOURCEDIR=nil;
+CFG_CONFIGDIR=nil;
+CFG_PLUGINDIR=nil;
 
 -- -- -- -- -- --
 
 if CFG_SOURCEDIR then
+	if os.getenv("HOME") then
+		CFG_SOURCEDIR = CFG_SOURCEDIR:gsub("^~", os.getenv("HOME"));
+	end
 	package.path = CFG_SOURCEDIR.."/?.lua;"..package.path
-	package.cpath = CFG_SOURCEDIR.."/?.lua;"..package.cpath
+	package.cpath = CFG_SOURCEDIR.."/?.so;"..package.cpath
 end
 
+if CFG_CONFIGDIR then
+	if os.getenv("HOME") then
+		CFG_CONFIGDIR = CFG_CONFIGDIR:gsub("^~", os.getenv("HOME"));
+	end
+end	
+
+if CFG_PLUGINDIR then
+	if os.getenv("HOME") then
+		CFG_PLUGINDIR = CFG_PLUGINDIR:gsub("^~", os.getenv("HOME"));
+	end
+end	
+
 -- Required to be able to find packages installed with luarocks
 pcall(require, "luarocks.require")
 
@@ -21,7 +38,7 @@
 do
 	-- TODO: Check for other formats when we add support for them
 	-- Use lfs? Make a new conf/ dir?
-	local ok, err = config.load("lxmppd.cfg.lua");
+	local ok, err = config.load((CFG_CONFIGDIR or ".").."/prosody.cfg.lua");
 	if not ok then
 		log("error", "Couldn't load config file: %s", err);
 		log("info", "Falling back to old config file format...")