/* finger command, trial out by Turrican for a commands daemon. */
#include <clubs.h>
inherit COMMAND_BASE;
private int bc, vc;
/** @ignore yes */
int cmd() {
string ret;
object ob, *obs;
string type;
string str;
obs = users();
obs = sort_array( obs, (: strcmp( $1->query_cap_name(),
$2->query_cap_name() ) :) );
str = sprintf("%-12.12s %-20.20s %-20.20s %-20.20s\n",
"Name", "Real name", "Where", "Birthday");
foreach( ob in obs ) {
string euid;
euid = geteuid(ob);
type = ob->query_object_type();
str += sprintf("%-12.12s %2.2s %-20.20s %-20.20s %-20.20s\n",
( ob->query_invis() ? "("+ob->query_cap_name()+")" :
(string)ob->query_cap_name() ), type,
( ( ret = (string)ob->query_real_name() ) ? ret : "-" ),
( ( ret = (string)ob->query_where() ) ? ret : "-" ),
( ( ret = (string)ob->query_birthday() ) ? ret : "-" ) );
}
TP->more_string( str, "Finger" );
return 1;
} /* cmd() */
/** @ignore yes */
int finger_player( string str, int brief ) {
string ret, who, where;
if( brief )
bc++;
else
vc++;
if( str ) {
str = lower_case(str);
str = (string)TP->expand_nickname(str);
}
ret = (string)FINGER_H->finger_info( str, 0, brief );
if( ret ) {
// Don't do a fit_message() here, because it breaks tables.
TP->more_string( ret, "finger: "+str );
return 1;
} else if( creatorp(TP) && sscanf( str,"%s@%s", who, where ) == 2 ) {
INTERMUD_H->finger( who, where );
write("Intermud finger on its way.\n");
return 1;
} else {
add_failed_mess( str+" doesn't have a character on "+mud_name()+".\n");
return 0;
}
} /* cmd() */
/** @ignore yes */
mixed query_patterns() {
return ({ "", (: cmd() :),
"<string'name|domain|club'>",
(: finger_player( $4[0], !TP->query_verbose("finger") ) :),
"verbose <string'name|domain|club'>",
(: finger_player( $4[0], 0 ) :),
"brief <string'name|domain|club'>",
(: finger_player( $4[0], 1 ) :) });
} /* query_patterns() */
/** @ignore yes */
mixed stats() {
return ({ ({ "Verbose", vc }), ({"Brief", bc }) });
} /* stats() */