extern "C" int __cdecl _mbsnbicoll_l( const unsigned char* s1, const unsigned char* s2, size_t n, _locale_t plocinfo ) { int ret; _LocaleUpdate _loc_update(plocinfo); if (n == 0) { return 0; } /* validation section */ _VALIDATE_RETURN(s1 != NULL, EINVAL, _NLSCMPERROR); _VALIDATE_RETURN(s2 != NULL, EINVAL, _NLSCMPERROR); _VALIDATE_RETURN(n <= INT_MAX, EINVAL, _NLSCMPERROR); if (_loc_update.GetLocaleT()->mbcinfo->ismbcodepage == 0) { return _strnicoll_l((const char*)s1, (const char*)s2, n, plocinfo); } if (0 == (ret = __crtCompareStringA(_loc_update.GetLocaleT(), _loc_update.GetLocaleT()->mbcinfo->mblcid, SORT_STRINGSORT | NORM_IGNORECASE, (const char*)s1, (int)n, (char*)s2, (int)n, _loc_update.GetLocaleT()->mbcinfo->mbcodepage))) { return _NLSCMPERROR; } return ret - 2; }
extern "C" int __cdecl _strnicoll ( const char *_string1, const char *_string2, size_t count ) { if (!__acrt_locale_changed()) { return _strnicmp(_string1, _string2, count); } else { return _strnicoll_l(_string1, _string2, count, nullptr); } }