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)14size_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