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