//	File	:  /cmds/adm/_st.c
//	Creator	:  Watcher@TMI  (03/28/93)
//
//	This is the Admin snoop trace command.  
#include <mudlib.h>
inherit DAEMON;
#define SYNTAX 	"Syntax: st [user]\n"
int cmd_st(string str) {
   mixed *user_list;
   object who;
   int loop;
 
   if(!adminp(geteuid(this_player()))) {
   notify_fail("St: Permission denied.\n");
   return 0; }
 
   if(!str || str == "") {
 
	user_list = users();
	user_list = filter_array(user_list, "filter_snoop", this_object());
 
	if(!user_list || !sizeof(user_list)) {
	write("St: No one is presently being snooped.\n");
	return 1; }
	printf("Snoop Trace Display [%d user%s]\n", sizeof(user_list),
	       ((sizeof(user_list) > 1) ? "s" : ""));
	write("===================\n\n");
 
	for(loop=0; loop<sizeof(user_list); loop++)
	printf("%s is being snooped by %s\n", 
	       (string)user_list[loop]->link_data("cap_name"),
	       (string)query_snoop(user_list[loop])->link_data("cap_name") );
	write("\n");
 
   return 1; }
 
   str = lower_case(str);
 
   who = find_player(str);
 
   if(!who) {
   notify_fail("St: No such user.\n");
   return 0; }
 
   if(query_snoop(who))  
	printf("St: %s is being snooped by %s.\n",
	       (string)who->query("cap_name"),
	       (string)query_snoop(who)->link_data("cap_name"));
   else printf("St: %s is not presently being snooped.\n",
	       (string)who->query("cap_name"));
 
return 1; }
 
static object filter_snoop(object obj) {  return query_snoop(obj);  }
 
string help() {
   return( SYNTAX + "\n" +
     "This command allows an admin to see if a specific user is presently\n" +
     "being snooped. If no user is given, a list of all users being snooped\n"+
     "presently on the mud.\n");
 
}