7 size_t mbstowcs(wchar_t* wcstr
, const char* mbstr
, size_t count
)
12 printf("\nmbstowcs(%p, %p, %d) called.\n\n", wcstr
, mbstr
, count
);
14 if (count
<= 0 || !mbstr
)
22 // return required size for the converted string
23 return strlen(mbstr
); // TODO: fixme
25 for (size
= 0, i
= 0; i
< count
; size
++) {
28 ////int mbtowc( wchar_t *wchar, const char *mbchar, size_t count )
29 //// result = mbtowc(wcstr + size, mbstr + i, count - i);
30 // result = mbtowc(wcstr + size, mbstr + i, 1);
32 /////////////////////////////////////////
36 wcstr
[size
] = mbstr
[i
];
39 /////////////////////////////////////////
42 } else if (result
== 0) {
56 //int mbtowc(wchar_t *dst, const char *str, size_t n)
57 size_t mbstowcs(wchar_t* wcstr
, const char* mbstr
, size_t count
)
61 if (count
<= 0 || !mbstr
)
63 len
= MultiByteToWideChar(CP_ACP
, 0, mbstr
, count
, wcstr
, (wcstr
== NULL
) ? 0 : count
);
66 DWORD err
= GetLastError();
68 case ERROR_INSUFFICIENT_BUFFER
:
70 case ERROR_INVALID_FLAGS
:
72 case ERROR_INVALID_PARAMETER
:
74 case ERROR_NO_UNICODE_TRANSLATION
:
81 /* return the number of bytes from src that have been used */
84 // if (count >= 2 && isleadbyte(*mbstr) && mbstr[1])
91 size_t mbstowcs(wchar_t* wcstr
, const char* mbstr
, size_t count
)
97 // return required size for the converted string
98 return strlen(mbstr
); // TODO: fixme
100 for (size
= 0, i
= 0; i
< count
; size
++) {
103 //int mbtowc( wchar_t *wchar, const char *mbchar, size_t count )
104 // result = mbtowc(wcstr + size, mbstr + i, count - i);
105 result
= mbtowc(wcstr
+ size
, mbstr
+ i
, 1);
108 } else if (result
== 0) {