Compare commits

...

2 Commits

Author SHA1 Message Date
05208810d3 buffer cleanup 2020-03-18 14:02:37 +11:00
7974ff9702 made the shell able to handle table values 2020-03-18 12:26:29 +11:00
3 changed files with 15 additions and 7 deletions

View File

@ -1,3 +1,4 @@
local serial = require "serialization"
local shell = {} local shell = {}
shell.include = {"shutil"} shell.include = {"shutil"}
local function shindex(self,k) local function shindex(self,k)
@ -25,7 +26,16 @@ function shell.interactive()
local rt = {pcall(f)} local rt = {pcall(f)}
local rs = table.remove(rt,1) local rs = table.remove(rt,1)
for k,v in pairs(rt) do for k,v in pairs(rt) do
print(tostring(v)) if type(v) == "table" then
local w, s = pcall(serial.serialize,v)
if w then
print(s)
else
print(tostring(v))
end
else
print(tostring(v))
end
end end
end end
end end

View File

@ -2,7 +2,7 @@
buffer = {} buffer = {}
function buffer.new(mode, stream) function buffer.new(mode, stream) -- create a new buffer in mode *mode* backed by stream object *stream*
local result = { local result = {
mode = {}, mode = {},
stream = stream, stream = stream,
@ -23,7 +23,6 @@ function buffer.new(mode, stream)
return setmetatable(result, metatable) return setmetatable(result, metatable)
end end
local function badFileDescriptor() local function badFileDescriptor()
return nil, "bad file descriptor" return nil, "bad file descriptor"
end end
@ -44,7 +43,7 @@ function buffer:flush()
if reason then if reason then
return nil, reason return nil, reason
else else
return nil, "bad file descriptor" return badFileDescriptor()
end end
end end
@ -105,7 +104,6 @@ function buffer:read(...)
self.bufferRead = sub(self.bufferRead, left + 1) self.bufferRead = sub(self.bufferRead, left + 1)
until len(buffer) == n until len(buffer) == n
--kernel.io.println("buffer read: "..tostring(buffer))
return buffer return buffer
end end
@ -360,7 +358,7 @@ end
function buffer:write(...) function buffer:write(...)
if self.closed then if self.closed then
return nil, "bad file descriptor" return badFileDescriptor()
end end
local args = table.pack(...) local args = table.pack(...)
for i = 1, args.n do for i = 1, args.n do

View File

@ -12,7 +12,7 @@ function os.spawnfile(p,n,...) -- spawns a new process from file *p* with name *
return os.spawn(function() local res={pcall(loadfile(p), table.unpack(tA))} computer.pushSignal("process_finished", os.pid(), table.unpack(res)) dprint(table.concat(res)) end,n or p) return os.spawn(function() local res={pcall(loadfile(p), table.unpack(tA))} computer.pushSignal("process_finished", os.pid(), table.unpack(res)) dprint(table.concat(res)) end,n or p)
end end
_G.package = {} _G.package = {}
package.loaded = {computer=computer,component=component,fs=fs} package.loaded = {computer=computer,component=component,fs=fs,buffer=buffer}
function require(f) -- searches for a library with name *f* and returns what the library returns, if possible function require(f) -- searches for a library with name *f* and returns what the library returns, if possible
if not package.loaded[f] then if not package.loaded[f] then
local lib = os.getenv("LIB") or "/boot/lib" local lib = os.getenv("LIB") or "/boot/lib"