zig/libc/mingw/misc/mingw_wcstold.c
Andrew Kelley 2bb93784c6
mingw: build and link mingwex.lib
zig can now cross compile hello.c targeting windows
2019-07-10 17:41:34 -04:00

33 lines
828 B
C

#include <windows.h>
#include <stdio.h>
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;
}