Added binary and unicode file i/o support to msvcrt.
[reactos.git] / reactos / 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 }