--:Minify:-- local args = {...} local i = 1 local opt = {} while i <= #args do local a = args[i] if a == "-l" then i=i+1; opt.newname = args[i] elseif a == "-p" then i=i+1; opt.password = args[i] elseif a == "-g" then i=i+1; opt.gid = tonumber(args[i]) elseif a == "-d" then i=i+1; opt.homedir = args[i] elseif a == "-s" then i=i+1; opt.shell = args[i] elseif a == "-L" then opt.lock = true elseif a == "-U" then opt.unlock = true elseif a:sub(1,1) ~= "-" then opt.username = a else print("usermod: unknown option: " .. a); syscall.exit(1); return end i = i + 1 end if not opt.username then print("Usage: usermod [-l newname] [-p password] [-g gid] [-d homedir] [-s shell] [-L] [-U] ") syscall.exit(1); return end if opt.lock and opt.unlock then print("usermod: -L and -U are mutually exclusive") syscall.exit(1); return end local uid = syscall.getuid(opt.username) if not uid then print("usermod: user '" .. opt.username .. "' does not exist") syscall.exit(1); return end local function apply(fn, ...) local ok, err = fn(...) if not ok then print("usermod: " .. tostring(err)); syscall.exit(1) end end if opt.newname then apply(syscall.setusername, uid, opt.newname) end if opt.password then apply(syscall.setpassword, uid, opt.password) end if opt.gid then apply(syscall.setgid, uid, opt.gid) end if opt.homedir then apply(syscall.sethomedir, uid, opt.homedir) end if opt.shell then apply(syscall.setshell, uid, opt.shell) end if opt.lock then apply(syscall.lockuser, uid) end if opt.unlock then apply(syscall.unlockuser, uid) end print("usermod: updated user '" .. opt.username .. "'")