fix some bugs with io.lua, expose io.newfd()

This commit is contained in:
Izaya 2019-01-08 22:11:49 +11:00
parent 0928241895
commit 695ac926ed

View File

@ -26,7 +26,7 @@ local function fdc(f)
fd[f.fd].close() fd[f.fd].close()
fd[f.fd] = nil fd[f.fd] = nil
end end
local function newfd() function io.newfd() -- creates a new file descriptor and returns it plus its ID
local nfd=#fd+1 local nfd=#fd+1
fd[nfd] = {} fd[nfd] = {}
return nfd,fd[nfd] return nfd,fd[nfd]
@ -34,10 +34,10 @@ end
function io.open(f,m) -- opens file *f* with mode *m* function io.open(f,m) -- opens file *f* with mode *m*
local t={["close"]=fdc} local t={["close"]=fdc}
if type(f) == "string" then if type(f) == "string" then
local e,fobj=fs.open(f,m) local e,fobj=pcall(fs.open,f,m)
if not e then return false, fobj end if not e then return false, fobj end
if fobj then if fobj then
local fdi,nfd = newfd() local fdi,nfd = io.newfd()
f=fdi f=fdi
if fobj.write then if fobj.write then
function nfd.write(d) function nfd.write(d)