From 95c32fdf19adbc94223c8a288f72e9c3d71aaba5 Mon Sep 17 00:00:00 2001 From: Daniel Bertalan Date: Sat, 16 Oct 2021 10:40:27 +0200 Subject: LibC: Primitively implement wcsxfrm The `wcsxfrm` function copies a wide character string into a buffer, such that comparing the new string against any similarly pre-processed string with `wcscmp` produces the same result as if the original strings were compared with `wcscoll`. Our current `wcscoll` implementation is simply an alias for `wcscmp`, so `wcsxfrm` needs to perform no actions other than copying the string. --- Userland/Libraries/LibC/wchar.cpp | 6 ++++++ Userland/Libraries/LibC/wchar.h | 1 + 2 files changed, 7 insertions(+) diff --git a/Userland/Libraries/LibC/wchar.cpp b/Userland/Libraries/LibC/wchar.cpp index 9462f87c04..b408e4fb71 100644 --- a/Userland/Libraries/LibC/wchar.cpp +++ b/Userland/Libraries/LibC/wchar.cpp @@ -331,6 +331,12 @@ int wcscoll(const wchar_t* ws1, const wchar_t* ws2) return wcscmp(ws1, ws2); } +size_t wcsxfrm(wchar_t* dest, const wchar_t* src, size_t n) +{ + // TODO: This needs to be changed when wcscoll is not just doing wcscmp + return wcslcpy(dest, src, n); +} + int wctob(wint_t c) { if (c > 0x7f) diff --git a/Userland/Libraries/LibC/wchar.h b/Userland/Libraries/LibC/wchar.h index 12ef0f530c..e52869722d 100644 --- a/Userland/Libraries/LibC/wchar.h +++ b/Userland/Libraries/LibC/wchar.h @@ -44,6 +44,7 @@ size_t mbrtowc(wchar_t*, const char*, size_t, mbstate_t*); size_t mbrlen(const char*, size_t, mbstate_t*); size_t wcrtomb(char*, wchar_t, mbstate_t*); int wcscoll(const wchar_t*, const wchar_t*); +size_t wcsxfrm(wchar_t*, const wchar_t*, size_t); int wctob(wint_t); int mbsinit(const mbstate_t*); wchar_t* wcspbrk(const wchar_t*, const wchar_t*); -- cgit v1.2.3