1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-28 19:45:10 +00:00

LibC: Implement wmemcpy

This commit is contained in:
Tim Schumacher 2021-09-22 10:21:06 +00:00 committed by Brian Gianforcaro
parent 0ca1df4dc6
commit 485c0ef691
3 changed files with 26 additions and 0 deletions

View file

@ -6,6 +6,7 @@
#include <LibTest/TestCase.h> #include <LibTest/TestCase.h>
#include <string.h>
#include <wchar.h> #include <wchar.h>
TEST_CASE(wcspbrk) TEST_CASE(wcspbrk)
@ -97,6 +98,22 @@ TEST_CASE(wmemchr)
EXPECT_EQ(ret, input + 6); EXPECT_EQ(ret, input + 6);
} }
TEST_CASE(wmemcpy)
{
const wchar_t* input = L"abc\0def";
auto buf = static_cast<wchar_t*>(malloc(8 * sizeof(wchar_t)));
if (!buf) {
FAIL("Could not allocate space for copy target");
return;
}
wchar_t* ret = wmemcpy(buf, input, 8);
EXPECT_EQ(ret, buf);
EXPECT_EQ(memcmp(buf, input, 8 * sizeof(wchar_t)), 0);
}
TEST_CASE(wcscoll) TEST_CASE(wcscoll)
{ {
// Check if wcscoll is sorting correctly. At the moment we are doing raw char comparisons, // Check if wcscoll is sorting correctly. At the moment we are doing raw char comparisons,

View file

@ -385,4 +385,12 @@ wchar_t* wmemchr(const wchar_t* s, wchar_t c, size_t n)
return nullptr; return nullptr;
} }
wchar_t* wmemcpy(wchar_t* dest, const wchar_t* src, size_t n)
{
for (size_t i = 0; i < n; i++)
dest[i] = src[i];
return dest;
}
} }

View file

@ -44,5 +44,6 @@ int mbsinit(const mbstate_t*);
wchar_t* wcspbrk(const wchar_t*, const wchar_t*); wchar_t* wcspbrk(const wchar_t*, const wchar_t*);
wchar_t* wcsstr(const wchar_t*, const wchar_t*); wchar_t* wcsstr(const wchar_t*, const wchar_t*);
wchar_t* wmemchr(const wchar_t*, wchar_t, size_t); wchar_t* wmemchr(const wchar_t*, wchar_t, size_t);
wchar_t* wmemcpy(wchar_t*, const wchar_t*, size_t);
__END_DECLS __END_DECLS