/***
*strnicmp.c - compare n chars of strings, ignoring case
*
*       Copyright (c) 1985-1997, Microsoft Corporation. All rights reserved.
*
*Purpose:
*       defines _strnicmp() - Compares at most n characters of two strings,
*       without regard to case.
*
*******************************************************************************/

/***
*int _strnicmp(first, last, count) - compares count char of strings, ignore case
*
*Purpose:
*       Compare the two strings for lexical order.  Stops the comparison
*       when the following occurs: (1) strings differ, (2) the end of the
*       strings is reached, or (3) count characters have been compared.
*       For the purposes of the comparison, upper case characters are
*       converted to lower case.
*
*Entry:
*       char *first, *last - strings to compare
*       size_t count - maximum number of characters to compare
*
*Exit:
*       returns <0 if first < last
*       returns 0 if first == last
*       returns >0 if first > last
*
*Exceptions:
*
*******************************************************************************/

#include <_size_t.h> /* size_t */

int strnicmp(const char *first, const char *last, size_t count)
{
	int f,l;

	if(!count)
		return 0;
	
	do
	{
		if(((f = (unsigned char)(*(first++))) >= 'A') && (f <= 'Z'))
			f -= 'A' - 'a';

		if(((l = (unsigned char)(*(last++))) >= 'A') && (l <= 'Z'))
			l -= 'A' - 'a';

	} while ( --count && f && (f == l) );


	return (f - l);
}
