permissions utilities #42
Aliases: Generic Utilities Package
5 verbs · 11 properties · 0 children
Verbs
| Verb | Spec | Flags | Definer | Lines |
|---|---|---|---|---|
controls | this none this | rxd | #42 | 3 |
apply | this none this | rxd | #42 | 22 |
caller | this none this | rxd | #42 | 8 |
controls_prop*erty controls_verb | this none this | rxd | #42 | 7 |
_chparent | this none this | rxd | #42 | 23 |
Properties
| Property | Definer | Flags | Owner | Value |
|---|---|---|---|---|
help_msg | #72 | rc | #361 | list of 16{"Miscellaneous routines for permissions checking", "", "For a complete description of a given verb, do `help $perm_utils:verbname'", "", ":controls(who,what) -- can who write on object what", ":controls_property(who,what,propname) -- can who write on what.propname", "These routines check write flags and also the wizardliness of `who'.", "", "(these last two probably belong on $code_utils)", "", ":apply(permstring,mods)", " -- used by @chmod to apply changes (e.g., +x) ", " to a given permissions string", "", ":caller()", " -- returns the first caller in the callers() stack distinct from `this'"} |
aliases | #1 | rc | #361 | <clear> |
description | #1 | rc | #361 | {"This is the permissions utilities utility package. See `help $perm_utils' for more details."} |
object_size | #1 | r | #29 | {4402, 1298433815} |
hidden_verbs | #1 | rc | #361 | <clear> |
phelp_msg | #1 | rc | #361 | <clear> |
weight | #1 | rc | #361 | <clear> |
owner_verbs | #1 | rc | #361 | <clear> |
plural_name | #1 | rc | #361 | <clear> |
client_image | #1 | rc | #361 | <clear> |
listening | #1 | rc | #361 | <clear> |
Ancestry
Ancestors (nearest first): #72 Generic Utilities Package → #1 root
Children: none
Call graph
Source
controls
Referenced by
- #0:bf_chparent line 16:
$perm_utils:controls - #0:bf_chparent line 24:
$perm_utils:controls - #0:bf_add_verb line 8:
$perm_utils:controls - #0:bf_add_verb line 11:
$perm_utils:controls - #0:bf_add_property line 8:
$perm_utils:controls - #0:bf_add_property line 10:
$perm_utils:controls - #0:bf_recycle line 4:
$perm_utils:controls - #0:bf_set_verb_info line 6:
$perm_utils:controls - #0:bf_set_verb_info line 15:
$perm_utils:controls - #1:recycle line 1:
$perm_utils:controls - #1:set_aliases line 8:
$perm_utils:controls - #1:set_description line 3:
$perm_utils:controls - #1:set_message line 9:
$perm_utils:controls - #1:get_message line 8:
$perm_utils:controls - #1:examine_verb_ok line 4:
$perm_utils:controls - #1:hidden_verbs line 5:
$perm_utils:controls - #2:@recycle line 20:
$perm_utils:controls - #2:build_option line 3:
$perm_utils:controls - #2:set_build_option line 4:
$perm_utils:controls - #2:erase_paranoid_data line 2:
$perm_utils:controls - #3:confunc line 1:
$perm_utils:controls - #3:disfunc line 1:
$perm_utils:controls - #3:recycle line 2:
$perm_utils:controls - #6:confunc line 12:
$perm_utils:controls - #6:initialize line 1:
$perm_utils:controls - #6:my_huh line 2:
$perm_utils:controls - #6:notify line 7:
$perm_utils:controls - #6:notify_lines line 1:
$perm_utils:controls - #6:@linelen*gth line 1:
$perm_utils:controls - #6:display_option line 2:
$perm_utils:controls - #6:edit_option line 2:
$perm_utils:controls - #6:set_mail_option line 6:
$perm_utils:controls - #6:set_name line 6:
$perm_utils:controls - #6:set_aliases line 10:
$perm_utils:controls - #6:add_feature line 5:
$perm_utils:controls - #6:remove_feature line 4:
$perm_utils:controls - #6:ownership_quota line 1:
$perm_utils:controls - #6:set_linelength line 5:
$perm_utils:controls - #6:set_pagelength line 3:
$perm_utils:controls - #6:set_home line 7:
$perm_utils:controls - #6:notify_lines_suspended line 1:
$perm_utils:controls - #6:recycle line 1:
$perm_utils:controls - #6:reconfunc line 1:
$perm_utils:controls - #7:debug line 1:
$perm_utils:controls - #8:set_opened line 1:
$perm_utils:controls - #8:@opacity line 1:
$perm_utils:controls - #8:set_opaque line 1:
$perm_utils:controls - #9:repair line 4:
$perm_utils:controls - #9:restore_from line 15:
$perm_utils:controls - #9:restore_from line 15:
$perm_utils:controls - #10:eject line 1:
$perm_utils:controls - #17:set_property_flags line 17:
$perm_utils:controls - #17:check_prog_restricted line 2:
$perm_utils:controls - #17:move_prop_down line 12:
$perm_utils:controls - #17:move_prop_up line 21:
$perm_utils:controls - #21:object_audit_string line 80:
$perm_utils:controls - #24:initialize line 2:
$perm_utils:controls - #25:disfunc line 1:
$perm_utils:controls - #25:confunc line 1:
$perm_utils:controls - #25:set_name line 2:
$perm_utils:controls - #30:insert line 4:
$perm_utils:controls - #30:delete line 4:
$perm_utils:controls - #30:delete2 line 8:
$perm_utils:controls - #30:clearall line 2:
$perm_utils:controls - #30:clearall_big line 1:
$perm_utils:controls - #30:_kill_subtrees line 3:
$perm_utils:controls - #32:load line 4:
$perm_utils:controls - #33:receive_message line 2:
$perm_utils:controls - #33:parse_message_seq line 11:
$perm_utils:controls - #33:notify_mail line 6:
$perm_utils:controls - #33:current_message line 6:
$perm_utils:controls - #33:get_current_message line 4:
$perm_utils:controls - #33:set_current_message line 3:
$perm_utils:controls - #33:make_current_message line 12:
$perm_utils:controls - #33:kill_current_message line 4:
$perm_utils:controls - #33:@subscribe*-quick line 40:
$perm_utils:controls - #33:mail_option line 3:
$perm_utils:controls - #33:send_self_netmail line 3:
$perm_utils:controls - #33:expire_old_messages line 3:
$perm_utils:controls - #33:make_current_message_new line 12:
$perm_utils:controls - #33:expirable_msg_seq line 3:
$perm_utils:controls - #33:confunc line 1:
$perm_utils:controls - #33:_old_expire_old_messages line 3:
$perm_utils:controls - #37:set_aliases line 3:
$perm_utils:controls - #37:is_writable_by line 5:
$perm_utils:controls - #37:add_forward line 12:
$perm_utils:controls - #37:add_forward line 12:
$perm_utils:controls - #37:delete_forward line 12:
$perm_utils:controls - #37:delete_forward line 12:
$perm_utils:controls - #37:add_notify line 11:
$perm_utils:controls - #37:add_notify line 11:
$perm_utils:controls - #37:delete_notify line 12:
$perm_utils:controls - #37:delete_notify line 12:
$perm_utils:controls - #37:initialize line 1:
$perm_utils:controls - #37:@register line 14:
$perm_utils:controls - #37:@validate line 6:
$perm_utils:controls - #37:set_name line 2:
$perm_utils:controls - #38:is_readable_by line 8:
$perm_utils:controls - #38:resend_message line 14:
$perm_utils:controls - #40:set_* line 1:
$perm_utils:controls - #42:_chparent line 12:
this:controls - #42:_chparent line 18:
this:controls - #43:ok line 4:
$perm_utils:controls - #43:invoke line 5:
$perm_utils:controls - #43:@flush line 7:
$perm_utils:controls - #43:@stateprop line 1:
$perm_utils:controls - #43:@rmstateprop line 1:
$perm_utils:controls - #43:initialize line 1:
$perm_utils:controls - #43:set_stateprops line 2:
$perm_utils:controls - #43:do_flush line 2:
$perm_utils:controls - #44:object_match_failed line 5:
$perm_utils:controls - #45:property_conflicts line 10:
$perm_utils:controls - #45:property_conflicts line 10:
$perm_utils:controls - #45:disown line 9:
$perm_utils:controls - #45:disown line 13:
$perm_utils:controls - #48:object_match_failed line 4:
$perm_utils:controls - #48:player_match_result line 9:
$perm_utils:controls - #48:yes_or_no line 8:
$perm_utils:controls - #48:do_huh line 3:
$perm_utils:controls - #48:do_huh line 7:
$perm_utils:controls - #49:__fix line 7:
$perm_utils:controls - #50:@copy line 35:
$perm_utils:controls - #50:@copy line 38:
$perm_utils:controls - #50:set_eval_env line 3:
$perm_utils:controls - #50:prog_option line 3:
$perm_utils:controls - #50:set_prog_option line 4:
$perm_utils:controls - #50:set_eval_subs line 2:
$perm_utils:controls - #51:move_verb line 16:
$perm_utils:controls - #51:move_verb line 16:
$perm_utils:controls - #51:move_verb line 22:
$perm_utils:controls - #51:move_prop*erty line 11:
$perm_utils:controls - #51:move_prop*erty line 11:
$perm_utils:controls - #51:move_prop*erty line 17:
$perm_utils:controls - #51:copy_verb line 17:
$perm_utils:controls - #51:copy_verb line 17:
$perm_utils:controls - #51:copy_verb line 23:
$perm_utils:controls - #57:_recycle line 5:
$perm_utils:controls - #57:show*-history line 1:
$perm_utils:controls - #62:add_name line 5:
$perm_utils:controls - #62:remove_name line 2:
$perm_utils:controls - #65:add_cleanup line 1:
$perm_utils:controls - #65:remove_cleanup line 1:
$perm_utils:controls - #65:continuous line 3:
$perm_utils:controls - #65:move_players_home line 1:
$perm_utils:controls - #66:open line 13:
$perm_utils:controls - #68:set_feature_ok line 1:
$perm_utils:controls - #68:set_feature_verbs line 1:
$perm_utils:controls - #68:initialize line 1:
$perm_utils:controls - #73:display_quota line 11:
$perm_utils:controls - #73:get_quota line 1:
$perm_utils:controls - #73:can_peek line 2:
$perm_utils:controls - #74:get_data line 2:
$perm_utils:controls - #74:erase_data line 2:
$perm_utils:controls - #74:set_kept_lines line 3:
$perm_utils:controls - #75:parse_create_args line 5:
$perm_utils:controls - #75:can_peek line 1:
$perm_utils:controls - #81:reject_password line 7:
$perm_utils:controls - #81:trivial_check line 8:
$perm_utils:controls - #81:check_email line 2:
$perm_utils:controls - #81:check_hosts line 2:
$perm_utils:controls - #107:set_gender line 4:
$perm_utils:controls - #166:remove_from_all line 1:
$perm_utils:controls - #279:fix_water_exits line 3:
$perm_utils:controls - #279:fix_out_exit line 5:
$perm_utils:controls - #293:is_writable_by line 8:
$perm_utils:controls - #312:add_package line 2:
$perm_utils:controls - #312:remove_package line 2:
$perm_utils:controls - #312:init_for_module line 2:
$perm_utils:controls - #312:@add-package line 1:
$perm_utils:controls - #312:@add-package line 6:
$perm_utils:controls - #334:can_edit line 2:
$perm_utils:controls - #354:set_version_range line 2:
$perm_utils:controls - #354:add_cord_type line 4:
$perm_utils:controls - #354:remove_cord_type line 4:
$perm_utils:controls - #355:set_messages_in line 2:
$perm_utils:controls
Source
1"$perm_utils:controls(who, what)"; 2"Is WHO allowed to hack on WHAT?"; 3return (args[1] == args[2].owner) || args[1].wizard;
apply
Referenced by
- #2:@chmod*# line 32:
$perm_utils:apply - #2:@chmod*# line 56:
$perm_utils:apply - #2:@chmod*# line 73:
$perm_utils:apply - #50:@prop*erty line 37:
$perm_utils:apply - #50:@chmod*# line 31:
$perm_utils:apply - #50:@chmod*# line 55:
$perm_utils:apply - #50:@chmod*# line 72:
$perm_utils:apply - #50:@verb line 44:
$perm_utils:apply
Source
1":apply(permstring,mods) => new permstring."; 2"permstring is a permissions string, mods is a concatenation of strings of the form +<letters>, !<letters>, or -<letters>, where <letters> is a string of letters as might appear in a permissions string (`+' adds the specified permissions, `-' or `!' removes them; `-' and `!' are entirely equivalent)."; 3{perms, mods} = args; 4if ((!mods) || (!index("!-+", mods[1]))) 5return mods; 6endif 7i = 1; 8while (i <= length(mods)) 9if (mods[i] == "+") 10while (((i = i + 1) <= length(mods)) && (!index("!-+", mods[i]))) 11if (!index(perms, mods[i])) 12perms = perms + mods[i]; 13endif 14endwhile 15else 16"mods[i] must be ! or -"; 17while (((i = i + 1) <= length(mods)) && (!index("!-+", mods[i]))) 18perms = strsub(perms, mods[i], ""); 19endwhile 20endif 21endwhile 22return perms;
caller
Referenced by
none
Source
1":caller([include line numbers])"; 2" -- returns the first caller in the callers() stack distinct from `this'"; 3{?lineno = 0} = args; 4c = callers(lineno); 5{stage, lc, nono} = {1, length(c), {c[1][1], $nothing}}; 6while (((stage = stage + 1) <= lc) && (c[stage][1] in nono)) 7endwhile 8return c[stage];
controls_prop*erty controls_verb
Referenced by
none
Source
1"Syntax: controls_prop(OBJ who, OBJ what, STR propname) => 0 | 1"; 2" controls_verb(OBJ who, OBJ what, STR verbname) => 0 | 1"; 3""; 4"Is WHO allowed to hack on WHAT's PROPNAME? Or VERBNAME?"; 5{who, what, name} = args; 6bi = (verb == "controls_verb") ? "verb_info" | "property_info"; 7return who.wizard || (who == call_function(bi, what, name)[1]);
_chparent
Referenced by
- #187:moveto line 14:
#42:_chparent
Source
1"chparent(object, new-parent) -- see help on the builtin"; 2who = caller_perms(); 3{what, papa} = args; 4if (typeof(what) != OBJ) 5retval = E_TYPE; 6elseif (!valid(what)) 7retval = E_INVARG; 8elseif (typeof(papa) != OBJ) 9retval = E_TYPE; 10elseif ((!valid(papa)) && (papa != #-1)) 11retval = E_INVARG; 12elseif (!this:controls(who, what)) 13retval = E_PERM; 14elseif ((is_player(what) && (!is_a(papa, $player_class))) && (!who.wizard)) 15retval = E_PERM; 16elseif ((is_player(what) && (!is_a(what, $player_class))) && (!who.wizard)) 17retval = E_PERM; 18elseif ((!valid(papa)) || (this:controls(who, papa) || papa.f)) 19retval = `chparent(@args) ! ANY'; 20else 21retval = E_PERM; 22endif 23return ((typeof(retval) == ERR) && $code_utils:dflag_on()) ? raise(retval) | retval;