diff --git a/Src/Hyperion-kernel/boot/kernel.lua b/Src/Hyperion-kernel/boot/kernel.lua index 72b8084..cf3a157 100644 --- a/Src/Hyperion-kernel/boot/kernel.lua +++ b/Src/Hyperion-kernel/boot/kernel.lua @@ -136,7 +136,7 @@ for i,v in ipairs(split(fstab,"\n")) do local id="" for i=3,#v do if v:sub(i,i)==";" then - if i==3 then kernel.log("Invalid fstab line... Skipping.","WARN") skip == true; break end + if i==3 then kernel.log("Invalid fstab line... Skipping.","WARN") skip = true break end id=v:sub(3,i-1) end end diff --git a/Src/hysh/bin/login b/Src/hysh/bin/login index d570ca4..80146d9 100644 --- a/Src/hysh/bin/login +++ b/Src/hysh/bin/login @@ -126,36 +126,35 @@ local function doLogin() syscall.write(1, "Username: ") local username = readLine(nil) - if username == "" then goto continue end + if username ~= "" then - syscall.write(1, "Password: ") - local password = readLine("*") - local uid = syscall.getuidbyname(username) - - local ok, err = syscall.login(uid, password) - if ok then - local uid = syscall.getuid() - local pwent = syscall.getpasswd(uid) + syscall.write(1, "Password: ") + local password = readLine("*") + local uid = syscall.getuidbyname(username) - local shell = (pwent and pwent.shell) or "/bin/hysh" - local homedir = (pwent and pwent.homedir) or "/" + local ok, err = syscall.login(uid, password) + if ok then + local uid = syscall.getuid() + local pwent = syscall.getpasswd(uid) - syscall.devctl(1, "sfgc", 3) - syscall.write(1, "\nWelcome, " .. username .. "!\n") - syscall.devctl(1, "sfgc", 1) - sleep(0.3) + local shell = (pwent and pwent.shell) or "/bin/hysh" + local homedir = (pwent and pwent.homedir) or "/" - spawnShell(username, uid, shell, homedir) - return -- back to login prompt - else - attempts = attempts + 1 - sleep(1) - syscall.devctl(1, "sfgc", 2) - syscall.write(1, "Login incorrect.\n\n") - syscall.devctl(1, "sfgc", 1) + syscall.devctl(1, "sfgc", 3) + syscall.write(1, "\nWelcome, " .. username .. "!\n") + syscall.devctl(1, "sfgc", 1) + sleep(0.3) + + spawnShell(username, uid, shell, homedir) + return -- back to login prompt + else + attempts = attempts + 1 + sleep(1) + syscall.devctl(1, "sfgc", 2) + syscall.write(1, "Login incorrect.\n\n") + syscall.devctl(1, "sfgc", 1) + end end - - ::continue:: end syscall.devctl(1, "sfgc", 2) diff --git a/Src/lua/bin/lua b/Src/lua/bin/lua index d7a1a7b..856eaa4 100644 --- a/Src/lua/bin/lua +++ b/Src/lua/bin/lua @@ -308,16 +308,16 @@ local history = {} while true do local code = getUserInput("lua> ", history) - if code == "" then goto continue end + if code ~= "" then - while isIncomplete(code) do - code = code .. "\n" .. getUserInput("... ", nil) + while isIncomplete(code) do + code = code .. "\n" .. getUserInput("... ", nil) + end + + if code ~= history[#history] then + history[#history+1] = code + end + + runCode(code) end - - if code ~= history[#history] then - history[#history+1] = code - end - - runCode(code) - ::continue:: end diff --git a/Src/sed/bin/sed b/Src/sed/bin/sed index aa0192d..68dd648 100644 --- a/Src/sed/bin/sed +++ b/Src/sed/bin/sed @@ -139,72 +139,68 @@ local function parseCommands(src) local c = src:sub(pos, pos) if c == "\n" or c == ";" then pos = pos + 1 - goto continue - end - if c == "#" then + elseif c == "#" then while pos <= len and src:sub(pos,pos) ~= "\n" do pos = pos + 1 end - goto continue - end - - local addr1, addr2 - addr1, pos = parseAddr(src, pos) - skip() - if addr1 and pos <= len and src:sub(pos,pos) == "," then - pos = pos + 1 - skip() - addr2, pos = parseAddr(src, pos) - end - skip() - - if pos > len then break end - local cmd = src:sub(pos, pos) - pos = pos + 1 - - if cmd == "s" then - local delim = src:sub(pos, pos); pos = pos + 1 - local pat, p1 = parseDelim(src, pos, delim); pos = p1 - local repl, p2 = parseDelim(src, pos, delim); pos = p2 - local flags = "" - while pos <= len and src:sub(pos,pos):match("[giIp]") do - flags = flags .. src:sub(pos,pos); pos = pos + 1 - end - table.insert(cmds, { addr1=addr1, addr2=addr2, cmd="s", - pat=pat, repl=repl, flags=flags }) - - elseif cmd == "y" then - local delim = src:sub(pos, pos); pos = pos + 1 - local srcch, p1 = parseDelim(src, pos, delim); pos = p1 - local dstch, p2 = parseDelim(src, pos, delim); pos = p2 - table.insert(cmds, { addr1=addr1, addr2=addr2, cmd="y", - src=srcch, dst=dstch }) - - elseif cmd == "d" or cmd == "p" or cmd == "q" or cmd == "=" then - table.insert(cmds, { addr1=addr1, addr2=addr2, cmd=cmd }) - - elseif cmd == "{" then - local depth = 1 - local start = pos - while pos <= len and depth > 0 do - local ch = src:sub(pos,pos) - if ch == "{" then depth = depth + 1 - elseif ch == "}" then depth = depth - 1 end - pos = pos + 1 - end - local inner = src:sub(start, pos - 2) - local innerCmds = parseCommands(inner) - for _, ic in ipairs(innerCmds) do - ic.addr1 = ic.addr1 or addr1 - ic.addr2 = ic.addr2 or addr2 - end - for _, ic in ipairs(innerCmds) do - table.insert(cmds, ic) - end - - elseif cmd == "\n" or cmd == ";" then else - end - ::continue:: + local addr1, addr2 + addr1, pos = parseAddr(src, pos) + skip() + if addr1 and pos <= len and src:sub(pos,pos) == "," then + pos = pos + 1 + skip() + addr2, pos = parseAddr(src, pos) + end + skip() + + if pos > len then break end + local cmd = src:sub(pos, pos) + pos = pos + 1 + + if cmd == "s" then + local delim = src:sub(pos, pos); pos = pos + 1 + local pat, p1 = parseDelim(src, pos, delim); pos = p1 + local repl, p2 = parseDelim(src, pos, delim); pos = p2 + local flags = "" + while pos <= len and src:sub(pos,pos):match("[giIp]") do + flags = flags .. src:sub(pos,pos); pos = pos + 1 + end + table.insert(cmds, { addr1=addr1, addr2=addr2, cmd="s", + pat=pat, repl=repl, flags=flags }) + + elseif cmd == "y" then + local delim = src:sub(pos, pos); pos = pos + 1 + local srcch, p1 = parseDelim(src, pos, delim); pos = p1 + local dstch, p2 = parseDelim(src, pos, delim); pos = p2 + table.insert(cmds, { addr1=addr1, addr2=addr2, cmd="y", + src=srcch, dst=dstch }) + + elseif cmd == "d" or cmd == "p" or cmd == "q" or cmd == "=" then + table.insert(cmds, { addr1=addr1, addr2=addr2, cmd=cmd }) + + elseif cmd == "{" then + local depth = 1 + local start = pos + while pos <= len and depth > 0 do + local ch = src:sub(pos,pos) + if ch == "{" then depth = depth + 1 + elseif ch == "}" then depth = depth - 1 end + pos = pos + 1 + end + local inner = src:sub(start, pos - 2) + local innerCmds = parseCommands(inner) + for _, ic in ipairs(innerCmds) do + ic.addr1 = ic.addr1 or addr1 + ic.addr2 = ic.addr2 or addr2 + end + for _, ic in ipairs(innerCmds) do + table.insert(cmds, ic) + end + + elseif cmd == "\n" or cmd == ";" then + else + end + end end return cmds