asgard/
asgard/.settings/
asgard/area/
asgard/data/clans/
asgard/data/clans/history/
asgard/data/rosters/
asgard/src/notice/
/***************************************************************************
 *  Original Diku Mud copyright (C) 1990, 1991 by Sebastian Hammer,        *
 *  Michael Seifert, Hans Henrik St{rfeldt, Tom Madsen, and Katja Nyboe.   *
 *                                                                         *
 *  Merc Diku Mud improvments copyright (C) 1992, 1993 by Michael          *
 *  Chastain, Michael Quan, and Mitchell Tse.                              *
 *                                                                         *
 *  In order to use any part of this Merc Diku Mud, you must comply with   *
 *  both the original Diku license in 'license.doc' as well the Merc       *
 *  license in 'license.txt'.  In particular, you may not remove either of *
 *  these copyright notices.                                               *
 *                                                                         *
 *  Much time and thought has gone into this software and you are          *
 *  benefitting.  We hope that you share your changes too.  What goes      *
 *  around, comes around.                                                  *
 ***************************************************************************/

/***************************************************************************
 *	ROM 2.4 is copyright 1993-1995 Russ Taylor			   *
 *	ROM has been brought to you by the ROM consortium		   *
 *	    Russ Taylor (rtaylor@pacinfo.com)				   *
 *	    Gabrielle Taylor (gtaylor@pacinfo.com)			   *
 *	    Brian Moore (rom@rom.efn.org)				   *
 *	By using this code, you have agreed to follow the terms of the	   *
 *	ROM license, in the file Rom24/doc/rom.license			   *
 ***************************************************************************/

/*************************************************************************** 
 *       ROT 1.4 is copyright 1996-1997 by Russ Walsh                       *
 *       By using this code, you have agreed to follow the terms of the     *
 *       ROT license, in the file doc/rot.license                           *
 ***************************************************************************/

#if defined(macintosh)
#include <types.h>
#else
#include <sys/types.h>
#include <sys/time.h>
#endif
#include <malloc.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>
#include <time.h>
#include "merc.h"
#include "magic.h"
#include "recycle.h"
#include "tables.h"
#include "lookup.h"

#define MAX_NEST	100
static OBJ_DATA * rgObjNest[MAX_NEST];

extern void fread_char( CHAR_DATA *ch, FILE *fp );

void do_finger(CHAR_DATA *ch, char *argument)
{
	char arg[MAX_INPUT_LENGTH];
	char buf[MAX_STRING_LENGTH];
	CHAR_DATA *victim;
	FILE *fp;
	bool fOld;

	one_argument(argument, arg);

	if (arg[0] == '\0')
	{
		send_to_char("Finger whom?\n\r", ch);
		return;
	}

	if ((victim = get_char_world(ch, arg)) != NULL)
	{
		if (!IS_NPC(victim))
		{
			act("$N is on right now!", ch, NULL, victim, TO_CHAR );
			return;
		}
	}

	victim = new_char();
	victim->pcdata = new_pcdata();
	fOld = FALSE;

	/* player files parsed directories by Yaz 4th Realm */
#if !defined( macintosh )
	sprintf(buf, "%s%s%s%s", PLAYER_DIR, initial(arg), "/", capitalize(arg));
#else
	sprintf( buf, "%s%s", PLAYER_DIR, capitalize( arg ) );
#endif
	if ((fp = fopen(buf, "r")) != NULL)
	{
		int iNest;

		for (iNest = 0; iNest < MAX_NEST; iNest++)
			rgObjNest[iNest] = NULL;

		fOld = TRUE;
		for (;;)
		{
			char letter;
			char *word;

			letter = fread_letter(fp);
			if (letter == '*')
			{
				fread_to_eol(fp);
				continue;
			}

			if (letter != '#')
			{
				printf_debug("Load_char_obj: # not found.");
				break;
			}

			word = fread_word(fp);
			if (!str_cmp(word, "PLAYER"))
				fread_char(victim, fp);
			else if (!str_cmp(word, "OBJECT"))
				break;
			else if (!str_cmp(word, "O"))
				break;
			else if (!str_cmp(word, "PET"))
				break;
			else if (!str_cmp(word, "END"))
				break;
			else if (!str_cmp(word, "LOCKER"))
				break;
			else
			{
				printf_debug("Load_char_obj: bad section: \"%s\".", word);
				break;
			}
		}
		fclose(fp);
	}

	if (!fOld)
	{
		send_to_char("No player by that name exists.\n\r", ch);
		free_pcdata(victim->pcdata);
		free_char(victim);
		return;
	}
	if ((victim->level > LEVEL_HERO) && (get_trust(victim) > get_trust(ch)))
	{
		send_to_char("The gods wouldn't like that.\n\r", ch);
		free_pcdata(victim->pcdata);
		free_char(victim);
		return;
	}
	sprintf(buf, "%s last logged off on %s", victim->name, (char *) ctime(
			&victim->llogoff));
	send_to_char(buf, ch);
	free_pcdata(victim->pcdata);
	free_char(victim);
	return;
}