// /adm/daemons/ts.c

// Original base coding from TMI's Basis MUDLIB.
// Extensively modified by Michael@Looking Glass (glass) (12/92)
 
#include <config.h>
#include <socket.h>
#include <network.h>

string sender;
int id;

void
reply(string str) 
{
    INETD->write_socket(id,"Tell-Server@" + THIS_MUD + " tells " + 
	sender + ": " + str + "\n");
}

void
close()
{
    INETD->close_socket(id);
}

read_callback(int i, string msg)
{
    object ob;
    string mud, receiver, mesg, cap_receiver, file, tmp;
    int flag;
 
    if(!msg) 
	return;
    id = i;
    flag = sscanf(msg,"%s@%s tells %s: %s",sender,mud,receiver,mesg);
    if(flag == 4) {
	tmp = NAME_SERVER->get_host_name(mud);
	if(!tmp || tmp == "") {
	    reply("Tell access denied.  Check with your admin.\n");
	    close();
	    return;
	} 
	cap_receiver = capitalize(receiver);
	file = PDATA_DIR + "/" + extract(receiver,0,0) + "/" + receiver + ".o";
	if(file_size(file) == -1) {
	    reply(cap_receiver + " is not a player/wizard here.\n");
	    close();
	    return;
	}
	if(!(ob = find_player(receiver))) {
	    reply(cap_receiver + " is currently not online.\n");
	} else {   
	    tell_object(ob, 
		capitalize(sender) + "@" + capitalize(mud) + 
		    " tells you: " + mesg + "");
	    reply("Message sent.\n");
	}
    }
    close();
    return;
}

// EOF.