diff options
author | Jakob Kaivo <jkk@ung.org> | 2024-06-05 14:35:40 -0400 |
---|---|---|
committer | Jakob Kaivo <jkk@ung.org> | 2024-06-05 14:35:40 -0400 |
commit | d105976002aa32a3cbe42b7f06a0dcba5d176afd (patch) | |
tree | ccd57fa63807cb15cc08eb43231b15b60c660d5f /src/wchar/mbsrtowcs.c | |
parent | 9252dc08f0a9ac7507b28e55b8ae7e4df605c79d (diff) |
implement tracking mechanisms for mbstate_t
Diffstat (limited to 'src/wchar/mbsrtowcs.c')
-rw-r--r-- | src/wchar/mbsrtowcs.c | 24 |
1 files changed, 16 insertions, 8 deletions
diff --git a/src/wchar/mbsrtowcs.c b/src/wchar/mbsrtowcs.c index 2f273598..a23402b3 100644 --- a/src/wchar/mbsrtowcs.c +++ b/src/wchar/mbsrtowcs.c @@ -1,19 +1,27 @@ -#if 0 - #include <wchar.h> +#include "_wchar.h" -size_t mbsrtowcs(wchar_t * restrict dst, const char * restrict src, size_t len, mbstate_t * restrict ps) +GCC_SSE_HACK +size_t mbsrtowcs(wchar_t * restrict dst, const char ** restrict src, size_t len, 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, *src, dst); /* TODO: overlap */ - (void)dst; (void)src; (void)len; (void)ps; - return 0; + SET_MBSTATE(ps, MBTOW, *src, dst); + + /* TODO: implement */ + + return len; } /* STDC(199409) */ - - -#endif |