IonutParau 687cfebd00 testing version of LuaBIOS and OpenOS
people were having issues getting them to work so now we promote consistency
2025-06-28 20:41:49 +02:00

55 lines
1.3 KiB
Lua

--[[Lua implementation of the UN*X touch command--]]
local shell = require("shell")
local fs = require("filesystem")
local args, options = shell.parse(...)
local function usage()
print(
[[Usage: touch [OPTION]... FILE...
Update the modification times of each FILE to the current time.
A FILE argument that does not exist is created empty, unless -c is supplied.
-c, --no-create do not create any files
--help display this help and exit]])
end
if options.help then
usage()
return 0
elseif #args == 0 then
io.stderr:write("touch: missing operand\n")
return 1
end
options.c = options.c or options["no-create"]
local errors = 0
for _,arg in ipairs(args) do
local path = shell.resolve(arg)
if fs.isDirectory(path) then
io.stderr:write(string.format("`%s' ignored: directories not supported\n", arg))
else
local real, reason = fs.realPath(path)
if real then
local file
if fs.exists(real) or not options.c then
file = io.open(real, "a")
end
if not file then
real = options.c
reason = "permission denied"
else
file:close()
end
end
if not real then
io.stderr:write(string.format("touch: cannot touch `%s': %s\n", arg, reason))
errors = 1
end
end
end
return errors