--:Minify:-- local fs={} -- "open" : open -- "read" : read -- "write" : write -- "close" : close function fs.open(path, mode) local fd=syscall.open(path,mode) local ret={ close=function() -- close file return syscall.close(fd) end, flush=function() -- close and reopen file to flush buffers syscall.fsync(fd) end } if mode=="r" then ret.read=function(count) local data = syscall.read(fd,count) return data end ret.readAll=function(chunkSize) local chunks={} -- to store read chunks while true do local chunk=syscall.read(fd,chunkSize or 65536) if chunk==nil or #chunk==0 then break end table.insert(chunks,chunk) end return table.concat(chunks) end ret.readLine = function(chunkSize) local buffer = {} -- stores leftover data local buffer_str = "" -- concatenated buffer local chunk_size = chunkSize or 65536 -- adjust chunk size for performance local eof = false while true do -- Try to find a newline in the current buffer local line_end = buffer_str:find("\n") if line_end then local line = buffer_str:sub(1, line_end - 1) buffer_str = buffer_str:sub(line_end + 1) return line end -- If EOF was reached previously and buffer is empty, stop if eof then if buffer_str ~= "" then local last_line = buffer_str buffer_str = "" return last_line else return nil end end -- Read the next chunk local chunk = syscall.read(fd, chunk_size) if not chunk or chunk == "" then eof = true else buffer_str = buffer_str .. chunk end end end elseif mode=="w" then ret.write=function(data) -- write data to file return syscall.write(fd,data) end elseif mode=="a" then ret.write=function(data) -- append data to file return syscall.write(fd,data) end else error("Invalid mode '"..mode.."'",2) end return ret end function fs.readAllText(path) local file=fs.open(path,"r") if not file then return false end local content=file.readAll() file.close() return content end function fs.writeAllText(path, data) local file=fs.open(path,"w") file.write(data) file.close() end function fs.appendAllText(path, data) local file=fs.open(path,"a") if not file then return false end file.write(data) file.close() end function fs.mkdir(path) return syscall.mkdir(path) end function fs.remove(path) return syscall.remove(path) end function fs.list(path) return syscall.listdir(path) end function fs.type(path) return syscall.type(path) end function fs.stat(path) return syscall.stat(path) end function fs.exists(path) return syscall.exists(path) end function fs.getcwd() return syscall.getcwd() end function fs.chdir(path) return syscall.chdir(path) end function fs.isDir(path) return syscall.type(path) == "directory" end return fs