--#include "module/syslog.lua"
--#include "module/sched.lua"
--#include "module/buffer.lua"
--#include "module/osutil.lua"
--#include "module/fs.lua"
--#include "module/io.lua"
--#include "module/devfs.lua"
--#include "module/devfs/syslog.lua"
--#include "module/loadfile.lua"

_OSVERSION=_OSVERSION or "PsychOS 2"

os.spawn(function()
 os.setenv("PWD","/boot")
 io.input("/dev/null")
 io.output("/dev/syslog")
 local f = io.open("/boot/cfg/hostname","rb")
 local hostname = computer.address():sub(1,8)
 if f then
  hostname = f:read("*l")
  f:close()
 end
 os.setenv("HOSTNAME",hostname)
 syslog(string.format("Hostname set to %s",hostname))
 local pids = {}
 local rc = require "rc"
 for k,v in pairs(rc.cfg.enabled) do
  pids[v] = -1
 end
 while true do
  for k,v in pairs(pids) do
   if not os.taskInfo(v) then
    syslog("Starting service "..k)
    pids[k] = rc.start(k)
   end
  end
  coroutine.yield()
 end
end, "init")

os.sched()