diff options
Diffstat (limited to 'modules/luci-base/luasrc/ccache.lua')
-rw-r--r-- | modules/luci-base/luasrc/ccache.lua | 76 |
1 files changed, 0 insertions, 76 deletions
diff --git a/modules/luci-base/luasrc/ccache.lua b/modules/luci-base/luasrc/ccache.lua deleted file mode 100644 index d3be7cba6c..0000000000 --- a/modules/luci-base/luasrc/ccache.lua +++ /dev/null @@ -1,76 +0,0 @@ --- Copyright 2008 Steven Barth <steven@midlink.org> --- Copyright 2008 Jo-Philipp Wich <jow@openwrt.org> --- Licensed to the public under the Apache License 2.0. - -local io = require "io" -local fs = require "nixio.fs" -local util = require "luci.util" -local nixio = require "nixio" -local debug = require "debug" -local string = require "string" -local package = require "package" - -local type, loadfile = type, loadfile - - -module "luci.ccache" - -function cache_ondemand(...) - if debug.getinfo(1, 'S').source ~= "=?" then - cache_enable(...) - end -end - -function cache_enable(cachepath, mode) - cachepath = cachepath or "/tmp/luci-modulecache" - mode = mode or "r--r--r--" - - local loader = package.loaders[2] - local uid = nixio.getuid() - - if not fs.stat(cachepath) then - fs.mkdir(cachepath) - end - - local function _encode_filename(name) - local encoded = "" - for i=1, #name do - encoded = encoded .. ("%2X" % string.byte(name, i)) - end - return encoded - end - - local function _load_sane(file) - local stat = fs.stat(file) - if stat and stat.uid == uid and stat.modestr == mode then - return loadfile(file) - end - end - - local function _write_sane(file, func) - if nixio.getuid() == uid then - local fp = io.open(file, "w") - if fp then - fp:write(util.get_bytecode(func)) - fp:close() - fs.chmod(file, mode) - end - end - end - - package.loaders[2] = function(mod) - local encoded = cachepath .. "/" .. _encode_filename(mod) - local modcons = _load_sane(encoded) - - if modcons then - return modcons - end - - -- No cachefile - modcons = loader(mod) - if type(modcons) == "function" then - _write_sane(encoded, modcons) - end - return modcons - end -end |