libs/sys: introduce luci.sys.init.start() and luci.sys.init.stop(), also execute all init action with an empty environment

This commit is contained in:
Jo-Philipp Wich 2012-04-15 14:30:54 +00:00
parent 7fdb055265
commit 4711c01509

View file

@ -790,41 +790,55 @@ function init.names()
return names return names
end end
--- Test whether the given init script is enabled
-- @param name Name of the init script
-- @return Boolean indicating whether init is enabled
function init.enabled(name)
if fs.access(init.dir..name) then
return ( call(init.dir..name.." enabled >/dev/null") == 0 )
end
return false
end
--- Get the index of he given init script --- Get the index of he given init script
-- @param name Name of the init script -- @param name Name of the init script
-- @return Numeric index value -- @return Numeric index value
function init.index(name) function init.index(name)
if fs.access(init.dir..name) then if fs.access(init.dir..name) then
return call("source "..init.dir..name.." enabled >/dev/null; exit $START") return call("env -i sh -c 'source %s%s; exit $START' >/dev/null"
%{ init.dir, name })
end end
end end
local function init_action(action, name)
if fs.access(init.dir..name) then
return call("env -i %s%s %s >/dev/null" %{ init.dir, name, action })
end
end
--- Test whether the given init script is enabled
-- @param name Name of the init script
-- @return Boolean indicating whether init is enabled
function init.enabled(name)
return (init_action("enabled", name) == 0)
end
--- Enable the given init script --- Enable the given init script
-- @param name Name of the init script -- @param name Name of the init script
-- @return Boolean indicating success -- @return Boolean indicating success
function init.enable(name) function init.enable(name)
if fs.access(init.dir..name) then return (init_action("enable", name) == 1)
return ( call(init.dir..name.." enable >/dev/null") == 1 )
end
end end
--- Disable the given init script --- Disable the given init script
-- @param name Name of the init script -- @param name Name of the init script
-- @return Boolean indicating success -- @return Boolean indicating success
function init.disable(name) function init.disable(name)
if fs.access(init.dir..name) then return (init_action("disable", name) == 0)
return ( call(init.dir..name.." disable >/dev/null") == 0 ) end
end
--- Start the given init script
-- @param name Name of the init script
-- @return Boolean indicating success
function init.start(name)
return (init_action("start", name) == 0)
end
--- Stop the given init script
-- @param name Name of the init script
-- @return Boolean indicating success
function init.stop(name)
return (init_action("stop", name) == 0)
end end