extern "C" int __cdecl _mbsncoll_l( const unsigned char *s1, const unsigned char *s2, size_t n, _locale_t plocinfo ) { int ret; size_t bcnt1, bcnt2; _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 _strncoll_l((const char *)s1, (const char *)s2, n, plocinfo); bcnt1 = _mbsnbcnt_l(s1, n, _loc_update.GetLocaleT()); bcnt2 = _mbsnbcnt_l(s2, n, _loc_update.GetLocaleT()); if ( 0 == (ret = __crtCompareStringA( _loc_update.GetLocaleT(), _loc_update.GetLocaleT()->mbcinfo->mblocalename, SORT_STRINGSORT, (const char *)s1, (int)bcnt1, (char *)s2, (int)bcnt2, _loc_update.GetLocaleT()->mbcinfo->mbcodepage )) ) { errno = EINVAL; return _NLSCMPERROR; } return ret - 2; }
extern "C" unsigned char * __cdecl _mbsninc_l( const unsigned char *string, size_t ccnt, _locale_t plocinfo ) { if (string == nullptr) return nullptr; return const_cast<unsigned char*>(string) + (unsigned int)_mbsnbcnt_l(string, ccnt, plocinfo); }