diff --git a/src/main/resources/assets/opencomputers/loot/openos/bin/grep.lua b/src/main/resources/assets/opencomputers/loot/openos/bin/grep.lua index 9015b4fc6..7ec81a96e 100644 --- a/src/main/resources/assets/opencomputers/loot/openos/bin/grep.lua +++ b/src/main/resources/assets/opencomputers/loot/openos/bin/grep.lua @@ -291,7 +291,7 @@ local function test(m,p) write("\n") empty_line = true needs_filename, needs_line_num = include_filename, print_line_num - elseif p:find("^^") then break end + elseif p:find("^^") and not plain then p="^$" end end if not empty_line then write("\n") end end diff --git a/src/main/resources/assets/opencomputers/loot/openos/boot/10_devfs.lua b/src/main/resources/assets/opencomputers/loot/openos/boot/10_devfs.lua index 3cb2c8604..17536849e 100644 --- a/src/main/resources/assets/opencomputers/loot/openos/boot/10_devfs.lua +++ b/src/main/resources/assets/opencomputers/loot/openos/boot/10_devfs.lua @@ -1,8 +1,20 @@ require("filesystem").mount( setmetatable({ - isReadOnly = function()return false end, - address = require("uuid").next() + address = "f5501a9b-9c23-1e7a-4afe-4b65eed9b88a" }, { - __index=function(tbl,key)return require("devfs")[key]end + __index=function(tbl,key) + local pass + local passthrough = function() return pass end + if key == "getLabel" then + pass = "devfs" + elseif key == "spaceTotal" or key == "spaceUsed" then + pass = 0 + elseif key == "isReadOnly" then + pass = false + else + return require("devfs")[key] + end + return passthrough + end }), "/dev") diff --git a/src/main/resources/assets/opencomputers/loot/openos/lib/devfs.lua b/src/main/resources/assets/opencomputers/loot/openos/lib/devfs.lua index 8848173cf..96518d8be 100644 --- a/src/main/resources/assets/opencomputers/loot/openos/lib/devfs.lua +++ b/src/main/resources/assets/opencomputers/loot/openos/lib/devfs.lua @@ -191,22 +191,10 @@ local devfs = new_devfs_dir() local bfd = "bad file descriptor" -function devfs.getLabel() - return "devfs" -end - function devfs.setLabel(value) error("drive does not support labeling") end -function devfs.spaceTotal() - return 0 -end - -function devfs.spaceUsed() - return 0 -end - function devfs.makeDirectory(path) return false, "to create dirs in devfs use devfs.create" end @@ -284,9 +272,7 @@ end devfs.create("null", devfs_load("null")) devfs.create("random", devfs_load("random")) -if comp.isAvailable("eeprom") then - devfs.create("eeprom", devfs_load("eeprom")) - devfs.create("eeprom-data", devfs_load("eeprom-data")) -end +devfs.create("eeprom", devfs_load("eeprom")) +devfs.create("eeprom-data", devfs_load("eeprom-data")) return devfs diff --git a/src/main/resources/assets/opencomputers/loot/openos/lib/term.lua b/src/main/resources/assets/opencomputers/loot/openos/lib/term.lua index 5f825c6e2..bbca7e583 100644 --- a/src/main/resources/assets/opencomputers/loot/openos/lib/term.lua +++ b/src/main/resources/assets/opencomputers/loot/openos/lib/term.lua @@ -261,7 +261,7 @@ function term.readKeyboard(ops) if name == "touch" or name == "drag" then term.internal.onTouch(input,char,code) elseif name == "clipboard" then - c = char + c = term.internal.clipboard(char) hints.cache = nil elseif name == "key_down" then hints.cache = nil @@ -632,6 +632,19 @@ end --[[@delayloaded-end@]] function --[[@delayloaded-start@]] term.getGlobalArea(window) local w,h,dx,dy = term.getViewport(window) return dx+1,dy+1,w,h +end --[[@delayloaded-end@]] + +function --[[@delayloaded-start@]] term.internal.clipboard(char) + local first_line, end_index = char:find("\13?\10") + if first_line then + local after = char:sub(end_index + 1) + if after ~= "" then + require("computer").pushSignal("key_down", term.keyboard(), 13, 28) + require("computer").pushSignal("clipboard", term.keyboard(), after) + end + char = char:sub(1, first_line - 1) + end + return char end --[[@delayloaded-end@]] return term, local_env diff --git a/src/main/resources/assets/opencomputers/loot/openos/lib/text.lua b/src/main/resources/assets/opencomputers/loot/openos/lib/text.lua index 26cf6921f..5ab838d0c 100644 --- a/src/main/resources/assets/opencomputers/loot/openos/lib/text.lua +++ b/src/main/resources/assets/opencomputers/loot/openos/lib/text.lua @@ -334,7 +334,7 @@ function --[[@delayloaded-start@]] text.internal.reader(txt) end, } - return reader + return require("buffer").new("r", reader) end --[[@delayloaded-end@]] function --[[@delayloaded-start@]] text.internal.writer(ostream, append_txt) @@ -374,7 +374,7 @@ function --[[@delayloaded-start@]] text.internal.writer(ostream, append_txt) end, } - return writer + return require("buffer").new("w", writer) end --[[@delayloaded-end@]] return text, local_env diff --git a/src/main/resources/assets/opencomputers/loot/openos/lib/tools/devfs/eeprom-data.lua b/src/main/resources/assets/opencomputers/loot/openos/lib/tools/devfs/eeprom-data.lua index 2aea1a0ef..c7da72c91 100644 --- a/src/main/resources/assets/opencomputers/loot/openos/lib/tools/devfs/eeprom-data.lua +++ b/src/main/resources/assets/opencomputers/loot/openos/lib/tools/devfs/eeprom-data.lua @@ -1,10 +1,6 @@ local comp = require("component") local text = require("text") -if not comp.isAvailable("eeprom") then - return nil -end - return { open = function(mode) diff --git a/src/main/resources/assets/opencomputers/loot/openos/lib/tools/devfs/eeprom.lua b/src/main/resources/assets/opencomputers/loot/openos/lib/tools/devfs/eeprom.lua index dbc9ceafb..4197b9881 100644 --- a/src/main/resources/assets/opencomputers/loot/openos/lib/tools/devfs/eeprom.lua +++ b/src/main/resources/assets/opencomputers/loot/openos/lib/tools/devfs/eeprom.lua @@ -1,10 +1,6 @@ local comp = require("component") local text = require("text") -if not comp.isAvailable("eeprom") then - return nil -end - return { open = function(mode) diff --git a/src/main/resources/assets/opencomputers/loot/openos/lib/tools/devfs/null.lua b/src/main/resources/assets/opencomputers/loot/openos/lib/tools/devfs/null.lua index c3710917a..6d46610ef 100644 --- a/src/main/resources/assets/opencomputers/loot/openos/lib/tools/devfs/null.lua +++ b/src/main/resources/assets/opencomputers/loot/openos/lib/tools/devfs/null.lua @@ -1,11 +1,9 @@ return { open = function(mode) - if not mode or not mode:match("[wa]") then - return nil, "write only" - end return { + read = function() end, write = function() end } end