1 /*
2   partial mbstowcs implementation:
3   - doesn't change *ps
4   - ignores n
5   - dest should always be NULL
6   - src should NOT be NULL
7 */
8 
9 #include "dictP.h"
10 
11 #include <wchar.h>
12 #include <assert.h>
13 
mbstowcs__(wchar_t * dest,const char * src,size_t n)14 size_t mbstowcs__ (wchar_t *dest, const char *src, size_t n)
15 {
16    int ret = 0;
17    int len = 0;
18    int c;
19 
20    assert (src);   /* not implemented */
21    assert (!dest); /* not implemented */
22 
23    while (*src){
24       c = *(const unsigned char *)src;
25 
26       if (c <= 0x7F)
27 	 len = 1;
28       else if (MB_CUR_MAX__ == 1)
29 	 len = 1;
30       else if (c <= 0xBF)
31 	 return (size_t) -1;
32       else if (c <= 0xDF)
33 	 len = 2;
34       else if (c <= 0xEF)
35 	 len = 3;
36       else if (c <= 0xF7)
37 	 len = 4;
38       else if (c <= 0xFB)
39 	 len = 5;
40       else if (c <= 0xFD)
41 	 len = 6;
42       else
43 	 return (size_t) -1;
44 
45       ret += 1;
46       src += len;
47    }
48 
49    return ret;
50 }
51