1.2-dev #11
@@ -136,7 +136,7 @@ for i,v in ipairs(split(fstab,"\n")) do
|
|||||||
local id=""
|
local id=""
|
||||||
for i=3,#v do
|
for i=3,#v do
|
||||||
if v:sub(i,i)==";" then
|
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)
|
id=v:sub(3,i-1)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -126,36 +126,35 @@ local function doLogin()
|
|||||||
syscall.write(1, "Username: ")
|
syscall.write(1, "Username: ")
|
||||||
local username = readLine(nil)
|
local username = readLine(nil)
|
||||||
|
|
||||||
if username == "" then goto continue end
|
if username ~= "" then
|
||||||
|
|
||||||
syscall.write(1, "Password: ")
|
syscall.write(1, "Password: ")
|
||||||
local password = readLine("*")
|
local password = readLine("*")
|
||||||
local uid = syscall.getuidbyname(username)
|
local uid = syscall.getuidbyname(username)
|
||||||
|
|
||||||
local ok, err = syscall.login(uid, password)
|
local ok, err = syscall.login(uid, password)
|
||||||
if ok then
|
if ok then
|
||||||
local uid = syscall.getuid()
|
local uid = syscall.getuid()
|
||||||
local pwent = syscall.getpasswd(uid)
|
local pwent = syscall.getpasswd(uid)
|
||||||
|
|
||||||
local shell = (pwent and pwent.shell) or "/bin/hysh"
|
local shell = (pwent and pwent.shell) or "/bin/hysh"
|
||||||
local homedir = (pwent and pwent.homedir) or "/"
|
local homedir = (pwent and pwent.homedir) or "/"
|
||||||
|
|
||||||
syscall.devctl(1, "sfgc", 3)
|
syscall.devctl(1, "sfgc", 3)
|
||||||
syscall.write(1, "\nWelcome, " .. username .. "!\n")
|
syscall.write(1, "\nWelcome, " .. username .. "!\n")
|
||||||
syscall.devctl(1, "sfgc", 1)
|
syscall.devctl(1, "sfgc", 1)
|
||||||
sleep(0.3)
|
sleep(0.3)
|
||||||
|
|
||||||
spawnShell(username, uid, shell, homedir)
|
spawnShell(username, uid, shell, homedir)
|
||||||
return -- back to login prompt
|
return -- back to login prompt
|
||||||
else
|
else
|
||||||
attempts = attempts + 1
|
attempts = attempts + 1
|
||||||
sleep(1)
|
sleep(1)
|
||||||
syscall.devctl(1, "sfgc", 2)
|
syscall.devctl(1, "sfgc", 2)
|
||||||
syscall.write(1, "Login incorrect.\n\n")
|
syscall.write(1, "Login incorrect.\n\n")
|
||||||
syscall.devctl(1, "sfgc", 1)
|
syscall.devctl(1, "sfgc", 1)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
::continue::
|
|
||||||
end
|
end
|
||||||
|
|
||||||
syscall.devctl(1, "sfgc", 2)
|
syscall.devctl(1, "sfgc", 2)
|
||||||
|
|||||||
@@ -308,16 +308,16 @@ local history = {}
|
|||||||
|
|
||||||
while true do
|
while true do
|
||||||
local code = getUserInput("lua> ", history)
|
local code = getUserInput("lua> ", history)
|
||||||
if code == "" then goto continue end
|
if code ~= "" then
|
||||||
|
|
||||||
while isIncomplete(code) do
|
while isIncomplete(code) do
|
||||||
code = code .. "\n" .. getUserInput("... ", nil)
|
code = code .. "\n" .. getUserInput("... ", nil)
|
||||||
|
end
|
||||||
|
|
||||||
|
if code ~= history[#history] then
|
||||||
|
history[#history+1] = code
|
||||||
|
end
|
||||||
|
|
||||||
|
runCode(code)
|
||||||
end
|
end
|
||||||
|
|
||||||
if code ~= history[#history] then
|
|
||||||
history[#history+1] = code
|
|
||||||
end
|
|
||||||
|
|
||||||
runCode(code)
|
|
||||||
::continue::
|
|
||||||
end
|
end
|
||||||
|
|||||||
122
Src/sed/bin/sed
122
Src/sed/bin/sed
@@ -139,72 +139,68 @@ local function parseCommands(src)
|
|||||||
local c = src:sub(pos, pos)
|
local c = src:sub(pos, pos)
|
||||||
if c == "\n" or c == ";" then
|
if c == "\n" or c == ";" then
|
||||||
pos = pos + 1
|
pos = pos + 1
|
||||||
goto continue
|
elseif c == "#" then
|
||||||
end
|
|
||||||
if c == "#" then
|
|
||||||
while pos <= len and src:sub(pos,pos) ~= "\n" do pos = pos + 1 end
|
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
|
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
|
end
|
||||||
|
|
||||||
return cmds
|
return cmds
|
||||||
|
|||||||
Reference in New Issue
Block a user