// _finger.c // // Written by Huthar. (NOT! By Wayfarer actually!) // Funny guys, aren't they? Apparently Wayfarer is the real author. // Robocoder and Mobydick tweaked it on 3-24-93 so that commands of the // form "finger mobydick robocoder" would finger each user. #pragma save_binary #include <daemons.h> #include <net/daemons.h> #include <mudlib.h> #include <switches.h> #include <commands.h> inherit DAEMON; mapping requests; void remote_finger(object me, string target, string mud); void create() { seteuid(getuid()); } int cmd_finger(string str) { object ob; string tmp1,tmp2,tmp3,tmp4; if (!str) { this_player()->more(explode(FINGER_D->finger_all(), "\n")); return 1; } if (!sscanf(str, "%s %s", tmp1, tmp2)) { tmp1 = str; tmp2 = ""; } do { if (sscanf(tmp1,"%s@%s", tmp3, tmp4)) { /* convert localhost finger to local finger */ if (tmp4 == "" || tmp4 == mud_name()) { if (!tmp3 || tmp3 == "") this_player()->more(explode(FINGER_D->finger_all(), "\n")); else this_player()->more(explode(FINGER_D->finger_user(lower_case(tmp3)), "\n")); } else { if (!tmp3) tmp3 = "" ; #ifdef INTERMUD if( tmp3 == "" ) return CMD_WHO->cmd_who( "@"+tmp4 ); "/adm/daemons/network/I3/finger"->send_finger_req(this_player()->query("name"),tmp3,tmp4); #else write("Sorry, "+mud_name()+" doesn't support intermud communication.\n"); #endif /* INTERMUD */ } } else if (tmp1 && tmp1 != "") { this_player()->more(explode(FINGER_D->finger_user(lower_case(tmp1)), "\n")); } str = tmp2; /* the rest */ if (!str || !sscanf(str, "%s %s", tmp1, tmp2)) { tmp1 = str; tmp2 = 0; str = 0; } } while (tmp1); return 1; } string help() { return( @ENDHELP Syntax: finger [player | (group)] The finger command is used to print out information about a particular player, members of a group, or players online. Information ranges from name and pseudo, to other data such as position, domain, location, email address, and login status. See also: chfn, who ENDHELP ); }