mirror of
https://github.com/reactos/reactos.git
synced 2025-06-06 01:40:36 +00:00

Imported from https://www.nuget.org/packages/Microsoft.Windows.SDK.CRTSource/10.0.22621.3 License: MIT
67 lines
1.9 KiB
C++
67 lines
1.9 KiB
C++
/***
|
|
*w_cmp.c - W versions of CompareString.
|
|
*
|
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
*
|
|
*Purpose:
|
|
* Wrapper for CompareStringW.
|
|
*
|
|
*******************************************************************************/
|
|
#include <corecrt_internal.h>
|
|
|
|
/***
|
|
*int __cdecl __acrt_CompareStringW - Get type information about a wide string.
|
|
*
|
|
*Purpose:
|
|
* Internal support function. Assumes info in wide string format.
|
|
*
|
|
*Entry:
|
|
* LPCWSTR LocaleName - locale context for the comparison.
|
|
* DWORD dwCmpFlags - see NT\Chicago docs
|
|
* LPCWSTR lpStringn - wide string to be compared
|
|
* int cchCountn - wide char (word) count (NOT including nullptr)
|
|
* (-1 if nullptr terminated)
|
|
*
|
|
*Exit:
|
|
* Success: 1 - if lpString1 < lpString2
|
|
* 2 - if lpString1 == lpString2
|
|
* 3 - if lpString1 > lpString2
|
|
* Failure: 0
|
|
*
|
|
*Exceptions:
|
|
*
|
|
*******************************************************************************/
|
|
|
|
extern "C" int __cdecl __acrt_CompareStringW(
|
|
LPCWSTR LocaleName,
|
|
DWORD dwCmpFlags,
|
|
PCWCH lpString1,
|
|
int cchCount1,
|
|
PCWCH lpString2,
|
|
int cchCount2
|
|
)
|
|
{
|
|
/*
|
|
* CompareString will compare past nullptr. Must find nullptr if in string
|
|
* before cchCountn wide characters.
|
|
*/
|
|
|
|
if (cchCount1 > 0)
|
|
cchCount1= (int) wcsnlen(lpString1, cchCount1);
|
|
if (cchCount2 > 0)
|
|
cchCount2= (int) wcsnlen(lpString2, cchCount2);
|
|
|
|
if (!cchCount1 || !cchCount2)
|
|
return (cchCount1 - cchCount2 == 0) ? 2 :
|
|
(cchCount1 - cchCount2 < 0) ? 1 : 3;
|
|
|
|
return __acrt_CompareStringEx( LocaleName,
|
|
dwCmpFlags,
|
|
lpString1,
|
|
cchCount1,
|
|
lpString2,
|
|
cchCount2,
|
|
nullptr,
|
|
nullptr,
|
|
0);
|
|
}
|