forked from Bananymous/banan-os
LibC: Implement `mblen`
This commit is contained in:
parent
f52877abb4
commit
f55d6b11c5
|
@ -547,6 +547,26 @@ char* ptsname(int fildes)
|
||||||
return buffer;
|
return buffer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int mblen(const char* s, size_t n)
|
||||||
|
{
|
||||||
|
if (s == nullptr)
|
||||||
|
return 0;
|
||||||
|
if (n == 0)
|
||||||
|
return -1;
|
||||||
|
switch (__getlocale(LC_CTYPE))
|
||||||
|
{
|
||||||
|
case LOCALE_INVALID:
|
||||||
|
ASSERT_NOT_REACHED();
|
||||||
|
case LOCALE_POSIX:
|
||||||
|
return 1;
|
||||||
|
case LOCALE_UTF8:
|
||||||
|
if (const auto bytes = BAN::UTF8::byte_length(*s); n >= bytes)
|
||||||
|
return bytes;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
ASSERT_NOT_REACHED();
|
||||||
|
}
|
||||||
|
|
||||||
size_t mbstowcs(wchar_t* __restrict pwcs, const char* __restrict s, size_t n)
|
size_t mbstowcs(wchar_t* __restrict pwcs, const char* __restrict s, size_t n)
|
||||||
{
|
{
|
||||||
auto* us = reinterpret_cast<const unsigned char*>(s);
|
auto* us = reinterpret_cast<const unsigned char*>(s);
|
||||||
|
|
Loading…
Reference in New Issue