--:Minify:-- --local kernel = ... -- --local proxy = {} --local data = {} -- --proxy.address = "devfs0000" --proxy.isReadOnly = false --proxy.spaceUsed = function() return 0 end --proxy.spaceTotal = function() return 0 end --proxy.makeDirectory = function() error("Permission denied") end --proxy.remove = function() error("Permission denied") end --proxy.setLabel = function() error("Permission denied") end --proxy.getLabel = function() return "devfs" end --proxy.attributes = function(path) return { -- type = proxy.type(path), -- isReadOnly = false, -- size = 0, -- lastModified = 0, -- created = 0, -- Permissions = "666", -- owner = "root", -- group = "root" --} end -- --local function getNode(path) -- local parts = string.split(path, "/") -- if parts[1] == "" then -- table.remove(parts, 1) -- end -- -- local node = data -- for _, part in ipairs(parts) do -- if node[part] then -- node = node[part] -- else -- return nil -- end -- end -- -- return node --end -- --proxy.type = function(path) -- local node = getNode(path) -- if node then -- return node.type -- else -- return nil -- end --end -- --proxy.list = function(path) -- local node = getNode(path) -- if node and node.type == "directory" then -- local content = table.keys(node) -- table.remove(content, table.indexOf(content, "type")) -- return content -- else -- error("Not a directory") -- end --end -- --proxy.open = function(path, mode) -- local node = getNode(path) -- if node and (node.type == "file" or node.type == "character device") then -- if mode == "r" then -- return { -- read = node.read, -- close = function() end -- } -- elseif mode == "w" then -- return { -- write = node.write, -- close = function() end -- } -- else -- error("Invalid mode") -- end -- else -- error("Not a file"..type(node)) -- end --end -- --local function newStringFile(content) -- return { -- type = "file", -- read = function() return content end, -- write = function(newContent) content = newContent end -- } --end -- --local function newDirectory() -- return { -- type = "directory" -- } --end -- --data["random"] = { -- type = "character device", -- read = function(amount) -- local result = "" -- for _ = 1, amount do -- result = result .. string.char(math.random(0, 255)) -- end -- return result -- end, -- write = function() error("Permission denied") end --} -- --data["null"] = { -- type = "character device", -- read = function() return "" end, -- write = function() end --} -- --data["zero"] = { -- type = "character device", -- read = function(amount) -- return string.rep("\0", amount) -- end, -- write = function() error("Permission denied") end --} -- --data["rtc"] = { -- type = "character device", -- read = function() return kernel.computer:time() end, -- write = function() error("Permission denied") end --} -- --data["rtc0"] = { -- type = "character device", -- read = function() return kernel.computer:time() end, -- write = function() error("Permission denied") end --} -- --data["eeprom"] = { -- type = "character device", -- read = function() return kernel.computer:getEEPROM() end, -- write = function(data) -- if kernel.uid ~= 0 then -- error("Permission denied") -- end -- kernel.computer:setEEPROM(data) -- end --} -- --local keyboard = kernel.newFifo() --local mouse = kernel.newFifo() --data["input"] = newDirectory() --data["input"]["keyboard"] = { -- type = "pipe", -- read = function(amount) -- return keyboard.pop() -- end, -- write = function() error("Permission denied") end --} --data["input"]["mouse"] = { -- type = "pipe", -- read = function(amount) -- return mouse.pop() -- end, -- write = function() error("Permission denied") end --} -- --data["pts"] = newDirectory() -- --kernel.devfs = {} --kernel.devfs.keyboard = keyboard --kernel.devfs.mouse = mouse --kernel.devfs.proxy = proxy --kernel.devfs.data = data --kernel.vfs.virtdisk(proxy)