| #include <uchar.h> | |
| #include <wchar.h> | |
| size_t mbrtoc32(char32_t *restrict pc32, const char *restrict s, size_t n, mbstate_t *restrict ps) | |
| { | |
| static unsigned internal_state; | |
| if (!ps) ps = (void *)&internal_state; | |
| if (!s) return mbrtoc32(0, "", 1, ps); | |
| wchar_t wc; | |
| size_t ret = mbrtowc(&wc, s, n, ps); | |
| if (ret <= 4 && pc32) *pc32 = wc; | |
| return ret; | |
| } |