diff --git a/src/main/resources/assets/opencomputers/loot/OpenOS/etc/rc.d/example.lua b/src/main/resources/assets/opencomputers/loot/OpenOS/etc/rc.d/example.lua index c0af382f0..3ac56815f 100644 --- a/src/main/resources/assets/opencomputers/loot/OpenOS/etc/rc.d/example.lua +++ b/src/main/resources/assets/opencomputers/loot/OpenOS/etc/rc.d/example.lua @@ -9,5 +9,6 @@ function start(msg) print(msg) end print(count) + print("runlevel: " .. require("computer").runlevel()) count = count + 1 end diff --git a/src/main/resources/assets/opencomputers/loot/OpenOS/init.lua b/src/main/resources/assets/opencomputers/loot/OpenOS/init.lua index cbe820bed..397414a81 100644 --- a/src/main/resources/assets/opencomputers/loot/OpenOS/init.lua +++ b/src/main/resources/assets/opencomputers/loot/OpenOS/init.lua @@ -5,6 +5,18 @@ do local computer = computer local unicode = unicode + -- Runlevel information. + local runlevel, shutdown = "S", computer.shutdown + computer.runlevel = function() return runlevel end + computer.shutdown = function(reboot) + runlevel = reboot and 6 or 0 + if os.sleep then + computer.pushSignal("shutdown") + os.sleep(0.1) -- Allow shutdown processing. + end + shutdown(reboot) + end + -- Low level dofile implementation to read filesystem libraries. local rom = {} function rom.invoke(method, ...) @@ -151,10 +163,9 @@ do computer.pushSignal("init") -- so libs know components are initialized. status("Initializing system...") - os.sleep(0.1) - require("term").clear() os.sleep(0.1) -- Allow init processing. + runlevel = 1 end local function motd() diff --git a/src/main/resources/assets/opencomputers/lua/kernel.lua b/src/main/resources/assets/opencomputers/lua/kernel.lua index 61233c2f8..98382f573 100644 --- a/src/main/resources/assets/opencomputers/lua/kernel.lua +++ b/src/main/resources/assets/opencomputers/lua/kernel.lua @@ -1241,7 +1241,7 @@ local libcomputer = { end, shutdown = function(reboot) - coroutine.yield(reboot ~= nil and reboot ~= false) + coroutine.yield(not not reboot) end, pushSignal = function(...) return spcall(computer.pushSignal, ...)