1stMUD/corefiles/
1stMUD/gods/
1stMUD/notes/
1stMUD/player/
1stMUD/win32/
1stMUD/win32/ROM/
#if defined (WIN32)

#include <process.h>
#include <direct.h>
#include <malloc.h>
#include "winstuff.h"

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;
}

int strcasecmp (const char *s1, const char *s2)
{
    register const u_char *us1 = (const u_char *) s1, *us2 =
	(const u_char *) s2;

    while (tolower (*us1) == tolower (*us2++))
	if (*us1++ == '\0')
	    return (0);
    return (tolower (*us1) - tolower (*--us2));
}

int strncasecmp (const char *s1, const char *s2, register size_t n)
{
    if (n != 0)
    {
	register const u_char *us1 = (const u_char *) s1, *us2 =
	    (const u_char *) s2;

	do
	{
	    if (tolower (*us1) != tolower (*us2++))
		return (tolower (*us1) - tolower (*--us2));
	    if (*us1++ == '\0')
		break;
	}
	while (--n != 0);
    }
    return (0);
}

#endif /* WIN32 */