CVS/
sog/CVS/
sog/area/
sog/area/CVS/
sog/backup/
sog/backup/CVS/
sog/bin/
sog/bin/CVS/
sog/clans/CVS/
sog/clans/plists/
sog/clans/plists/CVS/
sog/classes/CVS/
sog/corefiles/
sog/corefiles/CVS/
sog/doc/CVS/
sog/doc/SoG/
sog/doc/SoG/CVS/
sog/doc/cvsup/
sog/doc/cvsup/CVS/
sog/doc/olc/CVS/
sog/etc/CVS/
sog/gods/
sog/gods/CVS/
sog/lang/CVS/
sog/log/
sog/log/CVS/
sog/notes/
sog/notes/CVS/
sog/player/
sog/player/CVS/
sog/races/CVS/
sog/src/CVS/
sog/src/comm/CVS/
sog/src/compat/
sog/src/compat/CVS/
sog/src/compat/mkdep/
sog/src/compat/mkdep/CVS/
sog/src/compat/regex-win32/CVS/
sog/src/db/CVS/
sog/src/mudprogs/CVS/
sog/src/olc/CVS/
sog/tmp/
sog/tmp/CVS/
#if defined (WIN32)

#include <string.h>
#include "compat.h"

void *bzero		(void *block, size_t size)
{ return memset (block, 0, size); }

void *bcopy		(void *to, const void *from, size_t size)
{ return memcpy (to, from, size); }

DIR* opendir	(const char *dirname)
{
	char fullpath [MAX_PATH];
	int	 iCnt, iTmp = strlen (dirname);
	DIR *dirstr;

	if (dirname==NULL || iTmp ==0)
		return NULL;

	dirstr = (DIR *) malloc (sizeof (DIR));

	if (dirstr==NULL)
		return NULL;

	strcpy (fullpath, dirname);
	
	for (iCnt=0; iCnt<iTmp; iCnt++)
		if (fullpath[iCnt]=='/')
			fullpath[iCnt]='\\';

	if (fullpath[iTmp-1]=='\\')
		strcat (fullpath, "*.*");
	else
		strcat (fullpath, "\\*.*");

	dirstr->d_firstread=TRUE;
	dirstr->Data = FindFirstFile ((LPCTSTR) (fullpath), &(dirstr->FindData));

	// This may be don't correct...
	if (dirstr->Data == INVALID_HANDLE_VALUE) 
	{
		free (dirstr);
		return NULL;
	}

	return dirstr;
}

struct dirent* readdir	(DIR *dirstream)
{
	if (dirstream==NULL)
		return NULL;

	// First read
	if (dirstream->d_firstread)
		dirstream->d_firstread=FALSE; // We already have readed name
	else
	{
		if (!FindNextFile (dirstream->Data, &(dirstream->FindData)))
			return NULL;
	}

	// copy and return
	strcpy (dirstream->d_name, dirstream->FindData.cFileName);
	return (struct dirent *) dirstream;
}

int closedir	(DIR *dirstream)
{
	if (dirstream==NULL)
		return -1;
	FindClose (dirstream->Data);
	free (dirstream);
	return 0;
}

#endif