#include #include long double __cdecl __mingw_wcstold (const wchar_t * __restrict__ _Str, wchar_t ** __restrict__ _EndPtr); long double __cdecl __mingw_wcstold (const wchar_t * __restrict__ _Str, wchar_t ** __restrict__ _EndPtr) { long double r; char *n, *ep = NULL; size_t l, l2; l = WideCharToMultiByte(CP_UTF8, 0, _Str, -1, NULL, 0, NULL, NULL); n = alloca (l + 1); if (l != 0) WideCharToMultiByte (CP_UTF8, 0, _Str, -1, n, l, NULL, NULL); n[l] = 0; r = __mingw_strtold (n, &ep); if (ep != NULL) { *ep = 0; l2 = MultiByteToWideChar(CP_UTF8, MB_ERR_INVALID_CHARS, n, -1, NULL, 0); if (l2 > 0) l2 -= 1; /* Remove zero terminator from length. */ if (_EndPtr) *_EndPtr = (wchar_t *) &_Str[l2]; } else if (_EndPtr) *_EndPtr = NULL; return r; }