summaryrefslogtreecommitdiff
path: root/src/wchar/mbsrtowcs.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/wchar/mbsrtowcs.c')
-rw-r--r--src/wchar/mbsrtowcs.c24
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