6 //--------------------stdlib.h------------------
8 int cp932towcs(const char *p1, int n, wchar_t *unicode){
10 int right = sizeof(cp932_unicode) / sizeof(cp932_unicode[0]);
13 unsigned char *p = (unsigned char *)p1;
15 //fprintf(stderr, "c:%02X\n", *p);
19 }else if (c >= 0xa1 && c <= 0xdf){
26 cp932 = p[1] | (p[0] << 8);
27 //fprintf(stderr, "p:%p\n", cp932);
35 int mid = (right + left) / 2;
36 //printf("r:%04X(%04X) l:%04X(%04X) m:%04X(%04X)\n", right, cp932_unicode[right].cp932, left, cp932_unicode[left].cp932, mid, cp932_unicode[mid].cp932);
37 if(cp932_unicode[mid].cp932 < cp932){
39 }else if(cp932_unicode[mid].cp932 > cp932){
42 *unicode = cp932_unicode[mid].unicode;
52 size_t mbstowcs(wchar_t *dest, const char *src, size_t n){
56 int r = cp932towcs(src, 10, dest + p);
74 int r = cp932towcs(src, 10, &u);
88 //----------------------string.h--------------------------
91 int wcslen(const wchar_t *p){
97 wchar_t *wcsncpy(wchar_t *dest, const wchar_t *src, int n){
98 for(int i = 0; i < n; i++){
99 if(!(dest[i] = src[i])){
106 int wcsicmp(const wchar_t *s1, const wchar_t *s2){
108 for(i = 0; towlower(s1[i]) == towlower(s2[i]); i++){
109 if(s1[i] == L'\0' || s2[i] == L'\0'){
110 return (int)s1[i] - (int)s2[i];
113 return (int)towlower(s1[i]) - (int)towlower(s2[i]);