summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Bertalan <dani@danielbertalan.dev>2021-10-16 10:40:27 +0200
committerLinus Groh <mail@linusgroh.de>2021-10-17 17:09:58 +0100
commit95c32fdf19adbc94223c8a288f72e9c3d71aaba5 (patch)
tree2d729faa891606c3c2bda8b158e054e0b0936655
parent13e6d9d71a57d6127207af66b708f545719064da (diff)
downloadserenity-95c32fdf19adbc94223c8a288f72e9c3d71aaba5.zip
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.
-rw-r--r--Userland/Libraries/LibC/wchar.cpp6
-rw-r--r--Userland/Libraries/LibC/wchar.h1
2 files changed, 7 insertions, 0 deletions
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*);