:pserver:cvsanon@mok.lvcm.com:/CVS/ReactOS reactos
[reactos.git] / lib / crtdll / mbstring / mbsicoll.c
1 /*
2  * COPYRIGHT:   See COPYING in the top level directory
3  * PROJECT:     ReactOS system libraries
4  * FILE:        lib/crtdll/mbstring/iskpun.c
5  * PURPOSE:     
6  * PROGRAMER:   Boudewijn Dekker
7  * UPDATE HISTORY:
8  *              12/04/99: Created
9  */
10 #include <crtdll/mbstring.h>
11 #include <crtdll/mbctype.h>
12 #include <crtdll/ctype.h>
13 int colldif(unsigned short c1, unsigned short c2);
14 int _mbsicoll(const unsigned char *str1, const unsigned char *str2)
15 {
16         unsigned char *s1 = (unsigned char *)str1;
17         unsigned char *s2 = (unsigned char *)str2;
18
19         unsigned short *short_s1, *short_s2;
20
21         int l1, l2;
22
23         while ( *s1 != 0 ) {
24                 
25                 if (*s1 == 0)
26                         break;  
27
28                 l1 = _ismbblead(*s1);
29                 l2 = _ismbblead(*s2);
30                 if ( !l1 &&  !l2  ) {
31
32                         if (toupper(*s1) != toupper(*s2))
33                                 return colldif(*s1, *s2);
34                         else {
35                                 s1 += 1;
36                                 s2 += 1;
37                         }
38                 }
39                 else if ( l1 && l2 ){
40                         short_s1 = (unsigned short *)s1;
41                         short_s2 = (unsigned short *)s2;
42                         if ( _mbctoupper(*short_s1) != _mbctoupper(*short_s2 ))
43                                 return colldif(*short_s1, *short_s2);
44                         else {
45                                 s1 += 2;
46                                 s2 += 2;
47
48                         }
49                 }
50                 else
51                         return colldif(*s1, *s2);
52         } ;
53         return 0;
54 }