diff --git a/userspace/libraries/LibC/wchar.cpp b/userspace/libraries/LibC/wchar.cpp index 05b96bcd..88722355 100644 --- a/userspace/libraries/LibC/wchar.cpp +++ b/userspace/libraries/LibC/wchar.cpp @@ -5,6 +5,8 @@ #include #include +#include + wint_t btowc(int c) { if (c == 0 || c > 0x7F) @@ -31,8 +33,6 @@ int mbsinit(const mbstate_t* ps) } wchar_t* wcstok(wchar_t* __restrict, const wchar_t* __restrict, wchar_t** __restrict) { ASSERT_NOT_REACHED(); } -long wcstol(const wchar_t* __restrict, wchar_t** __restrict, int) { ASSERT_NOT_REACHED(); } -unsigned long wcstoul(const wchar_t* __restrict, wchar_t** __restrict, int) { ASSERT_NOT_REACHED(); } int swprintf(wchar_t* __restrict, size_t, const wchar_t* __restrict, ...) { ASSERT_NOT_REACHED(); } size_t wcsrtombs(char* __restrict, const wchar_t** __restrict, size_t, mbstate_t* __restrict) { ASSERT_NOT_REACHED(); } @@ -354,6 +354,41 @@ wchar_t* wmemset(wchar_t* ws, wchar_t wc, size_t n) return ws; } +float wcstof(const wchar_t* __restrict nptr, wchar_t** __restrict endptr) +{ + return strtoT(nptr, endptr, errno); +} + +double wcstod(const wchar_t* __restrict nptr, wchar_t** __restrict endptr) +{ + return strtoT(nptr, endptr, errno); +} + +long double wcstold(const wchar_t* __restrict nptr, wchar_t** __restrict endptr) +{ + return strtoT(nptr, endptr, errno); +} + +long wcstol(const wchar_t* __restrict nptr, wchar_t** __restrict endptr, int base) +{ + return strtoT(nptr, endptr, base, errno); +} + +long long wcstoll(const wchar_t* __restrict nptr, wchar_t** __restrict endptr, int base) +{ + return strtoT(nptr, endptr, base, errno); +} + +unsigned long wcstoul(const wchar_t* __restrict nptr, wchar_t** __restrict endptr, int base) +{ + return strtoT(nptr, endptr, base, errno); +} + +unsigned long long wcstoull(const wchar_t* __restrict nptr, wchar_t** __restrict endptr, int base) +{ + return strtoT(nptr, endptr, base, errno); +} + // FIXME: actually support multibyte :D wint_t towlower(wint_t wc)