Compare commits

..

2 Commits

3 changed files with 20 additions and 1 deletions

View File

@ -1,6 +1,7 @@
local serial = require "serialization" local serial = require "serialization"
local rc = {} local rc = {}
rc.paths = "/boot/service\n/pkg/service"
rc.pids = {} rc.pids = {}
local service = {} local service = {}
local cfg = {} local cfg = {}
@ -22,6 +23,21 @@ local function saveConfig()
return true return true
end end
function rc.load(name,force) -- string boolean -- table -- Attempts to load service *name*, and if *force* is true, replaces the current instance.
if not package.loaded[name] or force then
for d in rc.paths:gmatch("[^\n]+") do
if fs.exists(d.."/"..name..".lua") then
service[name] = runfile(d.."/"..name..".lua")
end
end
end
if service[name] then
return service[name]
end
return false, "unable to load service "..name
end
--[[
function rc.load(name,force) -- string boolean -- table -- Attempts to load service *name*, and if *force* is true, replaces the current instance. function rc.load(name,force) -- string boolean -- table -- Attempts to load service *name*, and if *force* is true, replaces the current instance.
if force then if force then
rc.stop(name) rc.stop(name)
@ -39,6 +55,7 @@ function rc.load(name,force) -- string boolean -- table -- Attempts to load serv
f:close() f:close()
return res return res
end end
]]
function rc.stop(name,...) -- string -- boolean string -- Stops service *name*, supplying *...* to the stop function. Returns false and a reason if this fails. function rc.stop(name,...) -- string -- boolean string -- Stops service *name*, supplying *...* to the stop function. Returns false and a reason if this fails.
if not service[name] then return false, "service not found" end if not service[name] then return false, "service not found" end

View File

@ -37,7 +37,7 @@ local function spawnShell(fin,fout)
io.input(fin) io.input(fin)
io.output(fout):setvbuf("no") io.output(fout):setvbuf("no")
print(_OSVERSION.." - "..tostring(math.floor(computer.totalMemory()/1024)).."K RAM") print(_OSVERSION.." - "..tostring(math.floor(computer.totalMemory()/1024)).."K RAM")
return os.spawn(shell.interactive, "shell: "..tostring(fin)) return os.spawn(function() local w,r = pcall(shell.interactive) if not w then syslog(r) end end, "shell: "..tostring(fin))
end end
local function allocate() local function allocate()
@ -77,3 +77,4 @@ function stop()
os.kill(basepid) os.kill(basepid)
basepid = nil basepid = nil
end end
return {start=start,stop=stop}

View File

@ -271,3 +271,4 @@ function del_route(to)
cfg.sroutes[to] = nil cfg.sroutes[to] = nil
saveconfig() saveconfig()
end end
return {start=start,stop=stop,set=set,set_route=set_route,del_route=del_route}