extern "C" int __cdecl _memicmp_l ( const void * first, const void * last, size_t count, _locale_t plocinfo ) { int f = 0, l = 0; const char *dst = (const char *)first, *src = (const char *)last; _LocaleUpdate _loc_update(plocinfo); /* validation section */ _VALIDATE_RETURN(first != NULL || count == 0, EINVAL, _NLSCMPERROR); _VALIDATE_RETURN(last != NULL || count == 0, EINVAL, _NLSCMPERROR); if ( _loc_update.GetLocaleT()->locinfo->locale_name[LC_CTYPE] == NULL ) { return __ascii_memicmp(first, last, count); } else { while (count-- && f==l) { f = _tolower_l( (unsigned char)(*(dst++)), _loc_update.GetLocaleT() ); l = _tolower_l( (unsigned char)(*(src++)), _loc_update.GetLocaleT() ); } } return ( f - l ); }
extern "C" int __cdecl _strnicmp_l( const char* dst, const char* src, size_t count, _locale_t plocinfo ) { int f, l; if (count) { _LocaleUpdate _loc_update(plocinfo); /* validation section */ _VALIDATE_RETURN(dst != NULL, EINVAL, _NLSCMPERROR); _VALIDATE_RETURN(src != NULL, EINVAL, _NLSCMPERROR); _VALIDATE_RETURN(count <= INT_MAX, EINVAL, _NLSCMPERROR); if (__LC_HANDLE(_loc_update.GetLocaleT()->locinfo)[LC_CTYPE] == _CLOCALEHANDLE) { return __ascii_strnicmp(dst, src, count); } else { do { f = _tolower_l((unsigned char)(*(dst++)), _loc_update.GetLocaleT()); l = _tolower_l((unsigned char)(*(src++)), _loc_update.GetLocaleT()); } while (--count && f && (f == l)); } return (f - l); } return (0); }