local shell = require("shell") local fs = require("filesystem") local args = shell.parse(...) if #args == 0 then args = {"-"} end local input_method, input_param = "read", require("tty").getViewport() for i = 1, #args do local arg = shell.resolve(args[i]) if fs.isDirectory(arg) then io.stderr:write(string.format('cat %s: Is a directory\n', arg)) os.exit(1) else local file, reason if args[i] == "-" then file, reason = io.stdin, "missing stdin" input_method, input_param = "readLine", false else file, reason = fs.open(arg) end if not file then io.stderr:write(string.format("cat: %s: %s\n", args[i], tostring(reason))) os.exit(1) else repeat local chunk = file[input_method](file, input_param) if chunk then io.write(chunk) end until not chunk file:close() end end end io.stdout:close()