aboutsummaryrefslogtreecommitdiffstats
path: root/util/envload.lua
diff options
context:
space:
mode:
Diffstat (limited to 'util/envload.lua')
-rw-r--r--util/envload.lua15
1 files changed, 12 insertions, 3 deletions
diff --git a/util/envload.lua b/util/envload.lua
index 53e28348..926f20c0 100644
--- a/util/envload.lua
+++ b/util/envload.lua
@@ -4,8 +4,10 @@
-- This project is MIT/X11 licensed. Please see the
-- COPYING file in the source package for more information.
--
+-- 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;
@@ -17,7 +19,10 @@ if setfenv then
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);
+ fh:close();
if f and env then setfenv(f, env); end
return f, err;
end
@@ -27,7 +32,11 @@ else
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
+ local f, err = load(fh:lines(2048), "@"..file, nil, env);
+ fh:close();
+ return f, err;
end
end