ReactOS  0.4.14-dev-854-gb9426a3
mbscoll.c
Go to the documentation of this file.
1 /*
2  * COPYRIGHT: See COPYING in the top level directory
3  * PROJECT: ReactOS system libraries
4  * FILE: lib/sdk/crt/mbstring/mbscoll.c
5  * PURPOSE:
6  * PROGRAMER: Ariadne
7  * UPDATE HISTORY:
8  * 12/04/99: Created
9  */
10 
11 #include <mbstring.h>
12 
13 int colldif(unsigned short c1, unsigned short c2);
14 
15 /*
16  * @implemented
17  */
18 int _mbscoll(const unsigned char *str1, const unsigned char *str2)
19 {
20  unsigned char *s1 = (unsigned char *)str1;
21  unsigned char *s2 = (unsigned char *)str2;
22 
23  unsigned short *short_s1, *short_s2;
24 
25  int l1, l2;
26 
27  while ( *s1 != 0 ) {
28 
29  if (*s1 == 0)
30  break;
31 
32  l1 = _ismbblead(*s1);
33  l2 = _ismbblead(*s2);
34  if ( !l1 && !l2 ) {
35 
36  if (*s1 != *s2)
37  return colldif(*s1, *s2);
38  else {
39  s1 += 1;
40  s2 += 1;
41  }
42  }
43  else if ( l1 && l2 ){
44  short_s1 = (unsigned short *)s1;
45  short_s2 = (unsigned short *)s2;
46  if ( *short_s1 != *short_s2 )
47  return colldif(*short_s1, *short_s2);
48  else {
49  s1 += 2;
50  s2 += 2;
51 
52  }
53  }
54  else
55  return colldif(*s1, *s2);
56  } ;
57  return 0;
58 }
59 
60 #if 0
61 int _mbsbcoll(const unsigned char *str1, const unsigned char *str2)
62 {
63  unsigned char *s1 = (unsigned char *)str1;
64  unsigned char *s2 = (unsigned char *)str2;
65 
66  unsigned short *short_s1, *short_s2;
67 
68  int l1, l2;
69 
70 
71  while ( *s1 != 0 ) {
72 
73 
74  l1 = _ismbblead(*s1);
75  l2 = _ismbblead(*s2);
76  if ( !l1 && !l2 ) {
77 
78  if (*s1 != *s2)
79  return colldif(*s1, *s2);
80  else {
81  s1 += 1;
82  s2 += 1;
83  }
84  }
85  else if ( l1 && l2 ){
86  short_s1 = (unsigned short *)s1;
87  short_s2 = (unsigned short *)s2;
88  if ( *short_s1 != *short_s2 )
89  return colldif(*short_s1, *short_s2);
90  else {
91  s1 += 2;
92  s2 += 2;
93  }
94  }
95  else
96  return colldif(*s1, *s2);
97  } ;
98  return 0;
99 }
100 #endif
struct S2 s2
int colldif(unsigned short c1, unsigned short c2)
Definition: mbsncoll.c:13
struct S1 s1
int _mbscoll(const unsigned char *str1, const unsigned char *str2)
Definition: mbscoll.c:18
int __cdecl _ismbblead(unsigned int)
Definition: ismblead.c:20