ReactOS 0.4.16-dev-959-g2ec3a19
mbsnicmp.cpp File Reference
#include <corecrt_internal_mbstring.h>
#include <locale.h>
#include <string.h>
Include dependency graph for mbsnicmp.cpp:

Go to the source code of this file.

Functions

int __cdecl _mbsnicmp_l (const unsigned char *s1, const unsigned char *s2, size_t n, _locale_t plocinfo)
 
 int (__cdecl _mbsnicmp)(const unsigned char *s1
 

Variables

const unsigned chars2
 
const unsigned char size_t n
 

Function Documentation

◆ _mbsnicmp_l()

int __cdecl _mbsnicmp_l ( const unsigned char s1,
const unsigned char s2,
size_t  n,
_locale_t  plocinfo 
)

Definition at line 41 of file mbsnicmp.cpp.

47{
48 unsigned short c1, c2;
49
50 if (n==0)
51 return(0);
52
53 _LocaleUpdate _loc_update(plocinfo);
54 if (_loc_update.GetLocaleT()->mbcinfo->ismbcodepage == 0)
55 return _strnicmp((const char *)s1, (const char *)s2, n);
56
57 /* validation section */
60
61 while (n--) {
62
63 c1 = *s1++;
64 if ( _ismbblead_l(c1, _loc_update.GetLocaleT()) ) {
65 if (*s1 == '\0')
66 c1 = 0;
67 else {
68 c1 = ((c1<<8) | *s1++);
69
70 if ( ((c1 >= _MBUPPERLOW1_MT(_loc_update.GetLocaleT())) &&
71 (c1 <= _MBUPPERHIGH1_MT(_loc_update.GetLocaleT()))) )
72 c1 += _MBCASEDIFF1_MT(_loc_update.GetLocaleT());
73 else if ( ((c1 >= _MBUPPERLOW2_MT(_loc_update.GetLocaleT())) &&
74 (c1 <= _MBUPPERHIGH2_MT(_loc_update.GetLocaleT()))) )
75 c1 += _MBCASEDIFF2_MT(_loc_update.GetLocaleT());
76 }
77 }
78 else
79 c1 = _mbbtolower_l(c1, _loc_update.GetLocaleT());
80
81 c2 = *s2++;
82 if ( _ismbblead_l(c2, _loc_update.GetLocaleT()) ) {
83 if (*s2 == '\0')
84 c2 = 0;
85 else {
86 c2 = ((c2<<8) | *s2++);
87 if ( ((c2 >= _MBUPPERLOW1_MT(_loc_update.GetLocaleT())) &&
88 (c2 <= _MBUPPERHIGH1_MT(_loc_update.GetLocaleT()))) )
89 c2 += _MBCASEDIFF1_MT(_loc_update.GetLocaleT());
90 else if ( ((c2 >= _MBUPPERLOW2_MT(_loc_update.GetLocaleT())) &&
91 (c2 <= _MBUPPERHIGH2_MT(_loc_update.GetLocaleT()))) )
92 c2 += _MBCASEDIFF2_MT(_loc_update.GetLocaleT());
93 }
94 }
95 else
96 c2 = _mbbtolower_l(c2, _loc_update.GetLocaleT());
97
98 if (c1 != c2)
99 return( (c1 > c2) ? 1 : -1 );
100
101 if (c1 == 0)
102 return(0);
103 }
104
105 return(0);
106}
#define EINVAL
Definition: acclib.h:90
#define _MBUPPERHIGH1_MT(p)
#define _MBCASEDIFF2_MT(p)
#define _MBUPPERLOW2_MT(p)
#define _mbbtolower_l(_c, p)
#define _MBUPPERHIGH2_MT(p)
#define _ismbblead_l(_c, p)
#define _MBCASEDIFF1_MT(p)
#define _MBUPPERLOW1_MT(p)
#define _VALIDATE_RETURN(expr, errorcode, retexpr)
#define _strnicmp(_String1, _String2, _MaxCount)
Definition: compat.h:23
GLdouble n
Definition: glext.h:7729
_locale_t plocinfo
Definition: ismbbyte.cpp:75
const unsigned char * s2
Definition: mbsnicmp.cpp:110
struct S1 s1
#define _NLSCMPERROR
Definition: string.h:19

◆ int()

int ( __cdecl  _mbsnicmp) const

Variable Documentation

◆ n

Initial value:
{
return _mbsnicmp_l(s1, s2, n, nullptr)
int __cdecl _mbsnicmp_l(const unsigned char *s1, const unsigned char *s2, size_t n, _locale_t plocinfo)
Definition: mbsnicmp.cpp:41

Definition at line 111 of file mbsnicmp.cpp.

◆ s2

Definition at line 110 of file mbsnicmp.cpp.

Referenced by _mbsnicmp_l().