emud/area_current/
emud/area_current/castle/
emud/area_current/newareas/
emud/area_current/nwcentral/
emud/area_current/scontinent/
emud/clans/
emud/player/
emud/player/d/e/bak/
emud/player/e/m/
emud/player/e/m/bak/
/***************************************************************************
 * Emud  2.2 by Igor van den Hoven, Michiel Lange, and Martin Bethlehem.   *
 *                                                                         *
 * MrMud 1.4 by David Bills and Dug Michael.                               *
 *                                                                         *
 * Merc  2.1 Diku Mud improvments copyright (C) 1992, 1993 by Michael      *
 * Chastain, Michael Quan, and Mitchell Tse.                               *
 *                                                                         *
 * Original Diku Mud copyright (C) 1990 1991 by Sebastian Hammer,          *
 * Michael Seifert, Hans Henrik St{rfeld, Tom Madsen, and Katje Nyboe.     *
 ***************************************************************************/

#include <dirent.h>
#include "emud.h"

/*
	Scandum 28-04-2003
*/

int purger_dir1	= 0;
int purger_dir2	= 0;
int purger_index	= 0;

struct dirent **purger_list;

void start_purger()
{
	push_call("start_purger(void)");

	if (IS_SET(mud->flags, MUD_PURGER))
	{
		log_printf("start_purger: already running");
		pop_call();
		return;
	}

	SET_BIT(mud->flags, MUD_PURGER);

	purger_index	= -1;
	purger_dir1	= 0;
	purger_dir2	= 0;

	log_printf("start_purger: purger started");

	pop_call();
	return;
}


void update_purger()
{
	CHAR_DATA *pch;
	char dir_buf[20];

	push_call("update_purger(void)");

	if (purger_index <= -1)
	{
		if (purger_dir2 >= 26)
		{
			purger_dir1++;
			purger_dir2 = 0;
		}

		if (purger_dir1 >= 26)
		{
			log_printf("update_purger: scan completed");

			REMOVE_BIT(mud->flags, MUD_PURGER);

			free(purger_list);

			pop_call();
			return;
		}
		/*
		if (purger_dir2 == 0)
		{
			log_printf("update_purger: scanning dir %c", 'a' + purger_dir1);
		}
		*/
		sprintf(dir_buf, "%s/%c/%c", PLAYER_DIR, 'a' + purger_dir1, 'a' + purger_dir2);

		purger_index = scandir(dir_buf, &purger_list, 0, alphasort);

		purger_dir2++;

		pop_call();
		return;
	}

	if (--purger_index <= -1)
	{
		pop_call();
		return;
	}

	strcpy(dir_buf, capitalize_name(purger_list[purger_index]->d_name));

	pch = lookup_char(dir_buf);

	if (pch == NULL)
	{
		pch = start_partial_load(NULL, dir_buf);

		if (pch)
		{
			clear_partial_load(pch);
		}
	}
	free(purger_list[purger_index]);

	pop_call();
	return;
}