From aa55f1fc1d454f17783a1967fe190939abb12430 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20N=C3=BCcke?= Date: Sat, 25 Oct 2014 12:36:25 +0200 Subject: [PATCH] Added runlevel information, mainly to allow rc scripts to tell if they're run during startup (where primaries may not be set, yet, so they'll have to wait for the init event) or not. --- .../loot/OpenOS/etc/rc.d/example.lua | 1 + .../assets/opencomputers/loot/OpenOS/init.lua | 15 +++++++++++++-- .../resources/assets/opencomputers/lua/kernel.lua | 2 +- 3 files changed, 15 insertions(+), 3 deletions(-) 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, ...)