From 0d8d731d91f62d52a352aa42d37f4e69c2a969ff Mon Sep 17 00:00:00 2001 From: Bananymous Date: Sat, 4 Jul 2026 02:39:50 +0300 Subject: [PATCH] LibC: Implement wsctoT functions --- userspace/libraries/LibC/wchar.cpp | 39 ++++++++++++++++++++++++++++-- 1 file changed, 37 insertions(+), 2 deletions(-) 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)