2 #include <msvcrt/stdlib.h>
5 size_t mbstowcs(wchar_t* wcstr, const char* mbstr, size_t count)
10 printf("\nmbstowcs(%p, %p, %d) called.\n\n", wcstr, mbstr, count);
12 if (count <= 0 || !mbstr)
20 // return required size for the converted string
21 return strlen(mbstr); // TODO: fixme
23 for (size = 0, i = 0; i < count; size++) {
26 ////int mbtowc( wchar_t *wchar, const char *mbchar, size_t count )
27 //// result = mbtowc(wcstr + size, mbstr + i, count - i);
28 // result = mbtowc(wcstr + size, mbstr + i, 1);
30 /////////////////////////////////////////
34 wcstr[size] = mbstr[i];
37 /////////////////////////////////////////
40 } else if (result == 0) {
54 //int mbtowc(wchar_t *dst, const char *str, size_t n)
55 size_t mbstowcs(wchar_t* wcstr, const char* mbstr, size_t count)
59 if (count <= 0 || !mbstr)
61 len = MultiByteToWideChar(CP_ACP, 0, mbstr, count, wcstr, (wcstr == NULL) ? 0 : count);
64 DWORD err = GetLastError();
66 case ERROR_INSUFFICIENT_BUFFER:
68 case ERROR_INVALID_FLAGS:
70 case ERROR_INVALID_PARAMETER:
72 case ERROR_NO_UNICODE_TRANSLATION:
79 /* return the number of bytes from src that have been used */
82 // if (count >= 2 && isleadbyte(*mbstr) && mbstr[1])
89 size_t mbstowcs(wchar_t* wcstr, const char* mbstr, size_t count)
95 // return required size for the converted string
96 return strlen(mbstr); // TODO: fixme
98 for (size = 0, i = 0; i < count; size++) {
101 //int mbtowc( wchar_t *wchar, const char *mbchar, size_t count )
102 // result = mbtowc(wcstr + size, mbstr + i, count - i);
103 result = mbtowc(wcstr + size, mbstr + i, 1);
106 } else if (result == 0) {