View/Edit #13:@chmod

Switch to edit mode.

Name(s): @chmod
1:   "@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, " &lt;object/property/verb/file&gt; &lt;permissions&gt;")
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."

Verb arguments: any any any
Verb perms: Readable NOT-Debug
Verb owned by: Slacker (#55)

You are not logged in.

[home | help | who | search | setup | code]