Software /
code /
prosody
File
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 source
-- Prosody IM -- Copyright (C) 2008-2011 Florian Zeitz -- -- 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, setfenv = load, loadstring, setfenv; local io_open = io.open; local envload; local envloadfile; if setfenv then function envload(code, source, env) local f, err = loadstring(code, source); if f and env then setfenv(f, env); end return f, err; end function envloadfile(file, env) 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 else function envload(code, source, env) return load(code, source, nil, env); end function envloadfile(file, 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 return { envload = envload, envloadfile = envloadfile };