2 #include <msvcrt/stdlib.h>
8 size_t mbstowcs(wchar_t* wcstr, const char* mbstr, size_t count)
13 printf("\nmbstowcs(%p, %p, %d) called.\n\n", wcstr, mbstr, count);
15 if (count <= 0 || !mbstr)
23 // return required size for the converted string
24 return strlen(mbstr); // TODO: fixme
26 for (size = 0, i = 0; i < count; size++) {
29 ////int mbtowc( wchar_t *wchar, const char *mbchar, size_t count )
30 //// result = mbtowc(wcstr + size, mbstr + i, count - i);
31 // result = mbtowc(wcstr + size, mbstr + i, 1);
33 /////////////////////////////////////////
37 wcstr[size] = mbstr[i];
40 /////////////////////////////////////////
43 } else if (result == 0) {
57 //int mbtowc(wchar_t *dst, const char *str, size_t n)
58 size_t mbstowcs(wchar_t* wcstr, const char* mbstr, size_t count)
62 if (count <= 0 || !mbstr)
64 len = MultiByteToWideChar(CP_ACP, 0, mbstr, count, wcstr, (wcstr == NULL) ? 0 : count);
67 DWORD err = GetLastError();
69 case ERROR_INSUFFICIENT_BUFFER:
71 case ERROR_INVALID_FLAGS:
73 case ERROR_INVALID_PARAMETER:
75 case ERROR_NO_UNICODE_TRANSLATION:
82 /* return the number of bytes from src that have been used */
85 // if (count >= 2 && isleadbyte(*mbstr) && mbstr[1])
92 size_t mbstowcs(wchar_t* wcstr, const char* mbstr, size_t count)
98 // return required size for the converted string
99 return strlen(mbstr); // TODO: fixme
101 for (size = 0, i = 0; i < count; size++) {
104 //int mbtowc( wchar_t *wchar, const char *mbchar, size_t count )
105 // result = mbtowc(wcstr + size, mbstr + i, count - i);
106 result = mbtowc(wcstr + size, mbstr + i, 1);
109 } else if (result == 0) {