/* Do not remove the headers from this file! see /USAGE for more info. */ /* ** mudlist.c -- mudlist handling for the Intermud-3 daemon ** ** 95-May-19. Deathblade. Created. ** 95-July-2. Rust. Added a few interface functions. */ private int mudlist_id; private mapping mud_info = ([ ]); nosave private mapping mud_names = ([ ]); nosave private function remap_name = (: lower_case(replace_string($1, " ", ".")) :); protected nomask int query_mudlist_id() { return mudlist_id; } /* this is called at restore/disconnect time to mark muds as Down */ protected nomask void mudlist_reset_entries() { foreach ( string mudname, mixed data in mud_info ) { data[0] = 0; } } nomask string canon_mudname(string mudname) { return mud_names[evaluate(remap_name, mudname)]; } protected nomask void rcv_mudlist(string orig_mud, string orig_user, string targ_user, mixed * message) { string mudname; mixed * info; mudlist_id = message[0]; foreach ( mudname, info in message[1] ) { if ( !info ) map_delete(mud_info, mudname); else mud_info[mudname] = info; } mud_names = ([ ]); map_array(keys(mud_info), (: $(mud_names)[evaluate(remap_name, $1)] = $1 :)); } nomask mapping query_mudlist() { return copy(mud_info); } nomask int has_service(string mud, string service) { array inf; inf = mud_info[mud]; if(!inf) { return -1; } return inf[11][service] != 0; } nomask string * query_mudnames() { return keys(mud_info); } nomask string * query_up_muds() { return filter(keys(mud_info), (: mud_info[$1][0] == -1 :)); } nomask int mud_exists(string mudname) { return canon_mudname(mudname) != 0; }