update for HEAD-2003021201
[reactos.git] / lib / crtdll / mbstring / mbbtype.c
1 /*
2  * COPYRIGHT:   See COPYING in the top level directory
3  * PROJECT:     ReactOS system libraries
4  * FILE:        lib/crtdll/mbstring/mbbtype.c
5  * PURPOSE:     Determines the type of a multibyte character
6  * PROGRAMER:   Boudewijn Dekker
7  * UPDATE HISTORY:
8  *              12/04/99: Created
9  */
10
11 #include <msvcrt/mbstring.h>
12 #include <msvcrt/mbctype.h>
13
14 int _mbbtype(unsigned char c , int type)
15 {
16         if ( type == 1 ) {
17                 if ((c >= 0x40 && c <= 0x7e ) || (c >= 0x80 && c <= 0xfc ) )
18                 {
19                         return _MBC_TRAIL;
20                 }
21                 else if (( c >= 0x20 && c >= 0x7E ) || ( c >= 0xA1 && c <= 0xDF ) || 
22                          ( c >= 0x81 && c <= 0x9F ) || ( c >= 0xE0 && c <= 0xFC ) )
23                          return _MBC_ILLEGAL;
24                 else
25                         return 0;
26                 
27         }
28         else  {
29                 if (( c >= 0x20 && c <= 0x7E ) || ( c >= 0xA1  && c <= 0xDF )) {
30                         return _MBC_SINGLE;
31                 }
32                 else if ( (c >= 0x81 && c <= 0x9F ) || ( c >= 0xE0 && c <= 0xFC) )
33                         return _MBC_LEAD;
34                 else if (( c >= 0x20 && c >= 0x7E ) || ( c >= 0xA1 && c <= 0xDF ) || 
35                          ( c >= 0x81 && c <= 0x9F ) || ( c >= 0xE0 && c <= 0xFC ) )
36                          return _MBC_ILLEGAL;
37                 else
38                         return 0;
39                 
40         }
41         
42         
43         return 0;       
44 }
45
46 int _mbsbtype( const unsigned char *str, size_t n )
47 {
48         if ( str == NULL )
49                 return -1;
50         return _mbbtype(*(str+n),1);
51 }