Switch to edit mode.
Name(s): @chmod1: "@chmod <object/property/verb/file> <permissions>"
2: if (player != this)
3: return $msg:mtell("huh")
4: endif
5: set_task_perms(player)
6: if (length(args) != 2)
7: return player:tell("Usage: ", verb, " <object/property/verb/file> <permissions>")
8: endif
9: {what, perms} = args
10: "Make an allowance for poor UNIX users who want to @chmod <perms> <what>"
11: if (!valid(player:my_match_object(what)) && !index(what, ".") && !index(what, ":") && index(what, "!") != 1)
12: {perms, what} = args
13: endif
14: if (index(what, ".") && (spec = $code_utils:parse_propref(what)))
15: if (valid(object = player:my_match_object(spec[1])))
16: pname = spec[2]
17: info = `property_info(object, pname) ! ANY'
18: if (info == E_PROPNF)
19: player:tell("That object does not have that property.")
20: elseif (typeof(info) == $ERR)
21: player:tell(info)
22: else
23: info[2] = perms = $perm_utils:apply(old_perms = info[2], perms)
24: result = `set_property_info(object, pname, info) ! ANY'
25: if (result == E_INVARG)
26: player:tell("\"", perms, "\" is not a valid permissions string for a property.")
27: elseif (typeof(result) == $ERR)
28: player:tell(result)
29: else
30: player:tell("Property permissions changed from \"", old_perms, "\" to \"", perms, "\".")
31: endif
32: endif
33: return
34: endif
35: endif
36: if (spec = $code_utils:parse_verbref(what))
37: if (valid(object = player:my_match_object(spec[1])))
38: vname = spec[2]
39: info = `verb_info(object, vname) ! ANY'
40: if (info == E_VERBNF)
41: player:tell("That object does not define that verb.")
42: elseif (typeof(info) == $ERR)
43: player:tell(info)
44: elseif (!valid(owner = info[1]))
45: player:tell("That verb is owned by an invalid object (", owner, "); it needs to be @chowned.")
46: else
47: info[2] = perms = $perm_utils:apply(old_perms = info[2], perms)
48: if (index(perms, "w"))
49: player:tell("Due to security concerns, you are not permitted to make verbs +w. Sorry.")
50: elseif ((result = `set_verb_info(object, vname, info) ! ANY') == E_INVARG)
51: player:tell("\"", perms, "\" is not a valid permissions string for a verb.")
52: elseif (typeof(result) == $ERR)
53: player:tell(result)
54: else
55: player:tell("Verb permissions changed from \"", old_perms, "\" to \"", perms, "\".")
56: endif
57: endif
58: return
59: endif
60: endif
61: if (spec = $code_utils:parse_fileref(what))
62: if (valid(object = player:my_match_object(spec[1])))
63: fname = spec[2]
64: old_perms = `object:fileaccess(fname) ! ANY'
65: if (old_perms == E_INVARG)
66: player:tell("That object does not have that file.")
67: elseif (typeof(old_perms) == $ERR)
68: player:tell(old_perms)
69: else
70: perms = $perm_utils:apply(old_perms, perms)
71: if ((result = `object:filesetaccess(fname, perms) ! ANY') == E_INVIND)
72: player:tell("\"", perms, "\" is not a valid permissions string for a file.")
73: elseif (typeof(result) == $ERR)
74: player:tell(result)
75: else
76: player:tell("File permissions changed from \"", old_perms, "\" to \"", perms, "\".")
77: endif
78: endif
79: return
80: endif
81: endif
82: if (valid(object = player:my_match_object(what)))
83: perms = $perm_utils:apply((object.r ? "r" | "") + (object.f ? "f" | ""), perms)
84: r = f = 0
85: for i in [1..length(perms)]
86: if (perms[i] == "r")
87: r = 1
88: elseif (perms[i] == "f")
89: f = 1
90: else
91: return player:tell("\"", perms, "\" is not a valid permissions string for an object.")
92: endif
93: endfor
94: old_perms = (object.r ? "r" | "") + (object.f ? "f" | "")
95: try
96: object.r = r
97: object.f = f
98: player:tell("Object permissions changed from \"", old_perms, "\" to \"", perms, "\".")
99: except (E_PERM)
100: player:tell(E_PERM)
101: endtry
102: return
103: endif
104: $command_utils:object_match_failed(object, what)
105: "Last modified by whiz (#3135) on Mon Jan 5 22:49:38 2009 EST."