* unnecessary.
*/
-#include <stdlib.h>
-#include <inttypes.h>
#include <wchar.h>
-#include <errno.h>
-
-#include "internal.h"
size_t wcsrtombs(char *restrict s, const wchar_t **restrict ws, size_t n, mbstate_t *restrict st)
{
}
return n;
}
- while (n>=4 && **ws) {
- if (**ws >= 0x80u) {
+ while (n>=4) {
+ if (**ws-1u >= 0x7fu) {
+ if (!**ws) {
+ *s = 0;
+ *ws = 0;
+ return N-n;
+ }
l = wcrtomb(s, **ws, 0);
if (!(l+1)) return -1;
s += l;
}
(*ws)++;
}
- while (n && **ws) {
- if (**ws >= 0x80u) {
+ while (n) {
+ if (**ws-1u >= 0x7fu) {
+ if (!**ws) {
+ *s = 0;
+ *ws = 0;
+ return N-n;
+ }
l = wcrtomb(buf, **ws, 0);
if (!(l+1)) return -1;
if (l>n) return N-n;
}
(*ws)++;
}
- if (n) *s = 0;
- *ws = 0;
- return N-n;
+ return N;
}