Diff

util/envload.lua @ 7924:8487fe9fc335

util.envload: Open file here instead of letting loadfile do it so that all return values from io.open can be collected
author Kim Alvefur <zash@zash.se>
date Wed, 01 Mar 2017 16:42:02 +0100
parent 7728:da54ad64f6da
child 7930:5dec27760ecd
line wrap: on
line diff
--- a/util/envload.lua	Mon Feb 27 15:55:22 2017 +0100
+++ b/util/envload.lua	Wed Mar 01 16:42:02 2017 +0100
@@ -6,7 +6,8 @@
 --
 -- luacheck: ignore 113/setfenv
 
-local load, loadstring, loadfile, setfenv = load, loadstring, loadfile, setfenv;
+local load, loadstring, setfenv = load, loadstring, setfenv;
+local io_open = io.open;
 local envload;
 local envloadfile;
 
@@ -18,7 +19,9 @@
 	end
 
 	function envloadfile(file, env)
-		local f, err = loadfile(file);
+		local fh, err, errno = io_open(file);
+		if not fh then return fh, err, errno; end
+		local f, err = load(function () return fh:read(2048); end, "@"..file);
 		if f and env then setfenv(f, env); end
 		return f, err;
 	end
@@ -28,7 +31,9 @@
 	end
 
 	function envloadfile(file, env)
-		return loadfile(file, nil, env);
+		local fh, err, errno = io_open(file);
+		if not fh then return fh, err, errno; end
+		return load(fh:lines(2048), "@"..file, nil, env);
 	end
 end