From d105976002aa32a3cbe42b7f06a0dcba5d176afd Mon Sep 17 00:00:00 2001 From: Jakob Kaivo Date: Wed, 5 Jun 2024 14:35:40 -0400 Subject: implement tracking mechanisms for mbstate_t --- src/wchar/mbrtowc.c | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) (limited to 'src/wchar/mbrtowc.c') diff --git a/src/wchar/mbrtowc.c b/src/wchar/mbrtowc.c index 16e2a937..aa7c4803 100644 --- a/src/wchar/mbrtowc.c +++ b/src/wchar/mbrtowc.c @@ -1,27 +1,29 @@ -#if 0 - #include +#include "_wchar.h" +GCC_SSE_HACK size_t mbrtowc(wchar_t * restrict pwc, const char * restrict s, size_t n, mbstate_t * restrict ps) { + static struct __mbstate_t internal = { 0 }; + static mbstate_t ip = { &internal }; + + if (ps == NULL) { + ps = &ip; + } + SIGNAL_SAFE(0); + ASSERT_MBSTATE(ps, MBTOW, s, pwc); /* TODO: overlap */ - (void)ps; (void)pwc; (void)n; - if (s == NULL) { - s = ""; - n = 1; + return mbrtowc(NULL, "", 1, ps); } - /* TODO */ + SET_MBSTATE(ps, MBTOW, s, pwc); - return 0; + return n; } /* STDC(199409) */ - - -#endif -- cgit v1.2.1