diff --git a/lib/rc.lua b/lib/rc.lua index e4f1f52..b5ea311 100644 --- a/lib/rc.lua +++ b/lib/rc.lua @@ -1,6 +1,7 @@ local serial = require "serialization" local rc = {} +rc.paths = "/boot/service\n/pkg/service" rc.pids = {} local service = {} local cfg = {} @@ -23,6 +24,21 @@ local function saveConfig() 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. if force then rc.stop(name) service[name] = nil @@ -39,6 +55,7 @@ function rc.load(name,force) -- string boolean -- table -- Attempts to load serv f:close() return res end +]] 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