X-Git-Url: http://git.archive.openwrt.org/?p=project%2Fluci.git;a=blobdiff_plain;f=modules%2Fluci-base%2Fluasrc%2Futil.lua;h=0e7334be87dc769c943ab5e464c52018c6bb928c;hp=d614a6c799d44db2816824998b2e7c1bce859585;hb=240b8c4b6e5597f3f89f4382df49c123ab114c46;hpb=2c1777582cf8216a97518c900f511edc44eaa0f6 diff --git a/modules/luci-base/luasrc/util.lua b/modules/luci-base/luasrc/util.lua index d614a6c79..0e7334be8 100644 --- a/modules/luci-base/luasrc/util.lua +++ b/modules/luci-base/luasrc/util.lua @@ -16,7 +16,7 @@ local _ubus_connection = nil local getmetatable, setmetatable = getmetatable, setmetatable local rawget, rawset, unpack = rawget, rawset, unpack -local tostring, type, assert = tostring, type, assert +local tostring, type, assert, error = tostring, type, assert, error local ipairs, pairs, next, loadstring = ipairs, pairs, next, loadstring local require, pcall, xpcall = require, pcall, xpcall local collectgarbage, get_memory_limit = collectgarbage, get_memory_limit @@ -27,14 +27,27 @@ module "luci.util" -- Pythonic string formatting extension -- getmetatable("").__mod = function(a, b) + local ok, res + if not b then return a elseif type(b) == "table" then + local k, _ for k, _ in pairs(b) do if type(b[k]) == "userdata" then b[k] = tostring(b[k]) end end - return a:format(unpack(b)) + + ok, res = pcall(a.format, a, unpack(b)) + if not ok then + error(res, 2) + end + return res else if type(b) == "userdata" then b = tostring(b) end - return a:format(b) + + ok, res = pcall(a.format, a, b) + if not ok then + error(res, 2) + end + return res end end @@ -640,18 +653,18 @@ function checklib(fullpathexe, wantedlib) local fs = require "nixio.fs" local haveldd = fs.access('/usr/bin/ldd') if not haveldd then - return -1 + return false end local libs = exec("/usr/bin/ldd " .. fullpathexe) if not libs then - return 0 + return false end for k, v in ipairs(split(libs)) do if v:find(wantedlib) then - return 1 + return true end end - return 0 + return false end --