parent $mail_root object $mail_utils var $root child_index 0 var $root owners [$mail_utils] var $root owned [$mail_utils] var $root fertile 0 var $root inited 1 var $root manager $mail_utils var $root writable [$mail_utils] var $root readable ['parameters, 'methods, 'code] var $root dbref 'mail_utils var $mail_utils mail_system [$mail, $mail_list, $mail_ui, $mail_utils] method mail_name arg obj; if (!(obj.has_ancestor($mail_list))) throw(~type, "Object is not a child of $mail_recipient"); if (obj.has_ancestor($user)) return strsub(obj.namef(), " ", "-"); return "*" + strsub(obj.namef(), " ", "-"); . method has_mail_perms arg [args]; var obj; for obj in (args) { if ((!(obj in mail_system)) && (!($sys.is_system(obj)))) return 0; } . method match_mail_recipient arg name; var mname, list; catch ~namenf, ~objnf { if ((name[1]) == "*") { list = "list"; return $mail_db.find(substr(name, 2)); } else { list = "user"; } return sender().find_object(name, 'environment, 'user, 'grasp); } with handler { throw(~listnf, ((("No " + list) + " found by the name \"") + name) + "\"."); } . method range_to_actual arg r, current; var start, end; if (type(r[1]) == 'symbol) { switch (r[1]) { case 'end: throw(~range, "Backwards range."); case 'start: start = 1; case 'current: start = (current['location]) in ((current['list]).mail()); } } else { start = r[1]; } if (type(r[2]) == 'symbol) { switch (r[2]) { case 'end: end = listlen((current['list]).mail()); case 'single: end = start; case 'start: throw(~range, "Backwards range."); case 'current: end = (current['location]) in ((current['list]).mail()); } } else { start = r[2]; } if (start > end) throw(~range, "Backwards range."); return [start, end]; .