Changeset

7116:ecba5fee4867

Merge 0.10->trunk
author Matthew Wild <mwild1@gmail.com>
date Mon, 01 Feb 2016 21:28:07 +0000
parents 7113:ecebc821225d (current diff) 7115:805d068d2fd5 (diff)
children 7119:50b9a7e86de9
files core/moduleapi.lua
diffstat 3 files changed, 23 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/core/moduleapi.lua	Sat Jan 30 14:18:42 2016 +0100
+++ b/core/moduleapi.lua	Mon Feb 01 21:28:07 2016 +0000
@@ -137,10 +137,7 @@
 end
 
 function api:require(lib)
-	local f, n = pluginloader.load_code(self.name, lib..".lib.lua", self.environment);
-	if not f then
-		f, n = pluginloader.load_code(lib, lib..".lib.lua", self.environment);
-	end
+	local f, n = pluginloader.load_code_ext(self.name, lib, "lib.lua", self.environment);
 	if not f then error("Failed to load plugin library '"..lib.."', error: "..n); end -- FIXME better error message
 	return f();
 end
--- a/util/pluginloader.lua	Sat Jan 30 14:18:42 2016 +0100
+++ b/util/pluginloader.lua	Mon Feb 01 21:28:07 2016 +0000
@@ -55,8 +55,23 @@
 	return f, path;
 end
 
+local function load_code_ext(plugin, resource, extension, env)
+	local content, err = load_resource(plugin, resource.."."..extension);
+	if not content then
+		content, err = load_resource(resource, resource.."."..extension);
+		if not content then
+			return content, err;
+		end
+	end
+	local path = err;
+	local f, err = envload(content, "@"..path, env);
+	if not f then return f, err; end
+	return f, path;
+end
+
 return {
 	load_file = load_file;
 	load_resource = load_resource;
 	load_code = load_code;
+	load_code_ext = load_code_ext;
 };
--- a/util/random.lua	Sat Jan 30 14:18:42 2016 +0100
+++ b/util/random.lua	Mon Feb 01 21:28:07 2016 +0000
@@ -6,7 +6,7 @@
 -- COPYING file in the source package for more information.
 --
 
-local urandom = assert(io.open("/dev/urandom", "r"));
+local urandom, urandom_err = io.open("/dev/urandom", "r");
 
 local function seed()
 end
@@ -15,6 +15,12 @@
 	return urandom:read(n);
 end
 
+if not urandom then
+	function bytes()
+		error("Unable to obtain a secure random number generator, please see https://prosody.im/doc/random ("..urandom_err..")");
+	end
+end
+
 return {
 	seed = seed;
 	bytes = bytes;