forgot to commit openos
This commit is contained in:
36
data/openos/boot/03_io.lua
Normal file
36
data/openos/boot/03_io.lua
Normal file
@@ -0,0 +1,36 @@
|
||||
local buffer = require("buffer")
|
||||
local tty_stream = require("tty").stream
|
||||
|
||||
local core_stdin = buffer.new("r", tty_stream)
|
||||
local core_stdout = buffer.new("w", tty_stream)
|
||||
local core_stderr = buffer.new("w", setmetatable(
|
||||
{
|
||||
write = function(_, str)
|
||||
return tty_stream:write("\27[31m"..str.."\27[37m")
|
||||
end
|
||||
}, {__index=tty_stream}))
|
||||
|
||||
core_stdout:setvbuf("no")
|
||||
core_stderr:setvbuf("no")
|
||||
core_stdin.tty = true
|
||||
core_stdout.tty = true
|
||||
core_stderr.tty = true
|
||||
|
||||
core_stdin.close = tty_stream.close
|
||||
core_stdout.close = tty_stream.close
|
||||
core_stderr.close = tty_stream.close
|
||||
|
||||
local io_mt = getmetatable(io) or {}
|
||||
io_mt.__index = function(_, k)
|
||||
return
|
||||
k == 'stdin' and io.input() or
|
||||
k == 'stdout' and io.output() or
|
||||
k == 'stderr' and io.error() or
|
||||
nil
|
||||
end
|
||||
|
||||
setmetatable(io, io_mt)
|
||||
|
||||
io.input(core_stdin)
|
||||
io.output(core_stdout)
|
||||
io.error(core_stderr)
|
||||
Reference in New Issue
Block a user