From 2e94490905b0a08f3d6485ad028e1ae04a60f7f2 Mon Sep 17 00:00:00 2001 From: Song Minjae Date: Fri, 31 Mar 2017 17:25:31 +0900 Subject: [PATCH] fixed a bug where for whatever reason io.read would return 0x0D (CR) Former-commit-id: 769e2d3931472d14ce66cfef3a496a3913dc51be --- .../virtualcomputer/assets/lua/ROMLIB.lua | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/src/net/torvald/terrarum/virtualcomputer/assets/lua/ROMLIB.lua b/src/net/torvald/terrarum/virtualcomputer/assets/lua/ROMLIB.lua index 9f66b2810..ddb863cb3 100644 --- a/src/net/torvald/terrarum/virtualcomputer/assets/lua/ROMLIB.lua +++ b/src/net/torvald/terrarum/virtualcomputer/assets/lua/ROMLIB.lua @@ -88,21 +88,25 @@ end io.read = function(option) if io.__openfile__ == "stdin" then - local input = "" - local inkey = null -- local variable init REQUIRED! + local input = {} -- RETURN not hit - while inkey ~= 13 do - inkey = machine.__readFromStdin() - if inkey > 0 then + while true do + local inkey = machine.__readFromStdin() + if inkey == 13 or inkey == 10 then + break + elseif inkey == 8 or inkey == 127 then io.write(string.char(inkey)) - input = input..string.char(inkey) + table.remove(input) + elseif inkey > 0 then + io.write(string.char(inkey)) + table.insert(input, string.char(inkey)) end end -- RETURN finally hit io.write("\n") - return input + return table.concat(input) end function _readAll()