mirror of
https://github.com/reactos/reactos.git
synced 2025-07-29 09:41:48 +00:00
[UCRT] Import Microsoft.Windows.SDK.CRTSource version 10.0.22621.3
Imported from https://www.nuget.org/packages/Microsoft.Windows.SDK.CRTSource/10.0.22621.3 License: MIT
This commit is contained in:
parent
f1b60c66f0
commit
04e0dc4a7a
568 changed files with 115483 additions and 0 deletions
79
sdk/lib/ucrt/mbstring/mbsicoll.cpp
Normal file
79
sdk/lib/ucrt/mbstring/mbsicoll.cpp
Normal file
|
@ -0,0 +1,79 @@
|
|||
/***
|
||||
*mbsicoll.c - Collate MBCS strings, ignoring case
|
||||
*
|
||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
*
|
||||
*Purpose:
|
||||
* Collate MBCS strings, ignoring case
|
||||
*
|
||||
*******************************************************************************/
|
||||
#ifndef _MBCS
|
||||
#error This file should only be compiled with _MBCS defined
|
||||
#endif
|
||||
|
||||
#include <corecrt_internal.h>
|
||||
#include <corecrt_internal_mbstring.h>
|
||||
#include <locale.h>
|
||||
|
||||
/***
|
||||
* _mbsicoll - Collate MBCS strings, ignoring case
|
||||
*
|
||||
*Purpose:
|
||||
* Collates two strings for lexical order (ignoring case).
|
||||
* Strings are collated on a character basis, not a byte basis.
|
||||
*
|
||||
*Entry:
|
||||
* char *s1, *s2 = strings to collate
|
||||
*
|
||||
*Exit:
|
||||
* Returns <0 if s1 < s2
|
||||
* Returns 0 if s1 == s2
|
||||
* Returns >0 if s1 > s2
|
||||
* Returns _NLSCMPERROR is something went wrong
|
||||
*
|
||||
*Exceptions:
|
||||
* Input parameters are validated. Refer to the validation section of the function.
|
||||
*
|
||||
*******************************************************************************/
|
||||
|
||||
extern "C" int __cdecl _mbsicoll_l(
|
||||
const unsigned char *s1,
|
||||
const unsigned char *s2,
|
||||
_locale_t plocinfo
|
||||
)
|
||||
{
|
||||
int ret;
|
||||
_LocaleUpdate _loc_update(plocinfo);
|
||||
|
||||
/* validation section */
|
||||
_VALIDATE_RETURN(s1 != nullptr, EINVAL, _NLSCMPERROR);
|
||||
_VALIDATE_RETURN(s2 != nullptr, EINVAL, _NLSCMPERROR);
|
||||
|
||||
if (_loc_update.GetLocaleT()->mbcinfo->ismbcodepage == 0)
|
||||
return _stricoll_l((const char *)s1, (const char *)s2, plocinfo);
|
||||
|
||||
if ( 0 == (ret = __acrt_CompareStringA(
|
||||
_loc_update.GetLocaleT(),
|
||||
_loc_update.GetLocaleT()->mbcinfo->mblocalename,
|
||||
SORT_STRINGSORT | NORM_IGNORECASE,
|
||||
(LPCSTR)s1,
|
||||
-1,
|
||||
(LPSTR)s2,
|
||||
-1,
|
||||
_loc_update.GetLocaleT()->mbcinfo->mbcodepage )) )
|
||||
{
|
||||
errno = EINVAL;
|
||||
return _NLSCMPERROR;
|
||||
}
|
||||
|
||||
return ret - 2;
|
||||
|
||||
}
|
||||
|
||||
extern "C" int (__cdecl _mbsicoll)(
|
||||
const unsigned char *s1,
|
||||
const unsigned char *s2
|
||||
)
|
||||
{
|
||||
return _mbsicoll_l(s1, s2, nullptr);
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue