0,0 → 1,38 |
#include <stdlib.h> |
#include <wchar.h> |
#include "local.h" |
|
size_t |
_DEFUN (_mbstowcs_r, (reent, pwcs, s, n, state), |
struct _reent *r _AND |
wchar_t *__restrict pwcs _AND |
const char *__restrict s _AND |
size_t n _AND |
mbstate_t *state) |
{ |
size_t ret = 0; |
char *t = (char *)s; |
int bytes; |
|
if (!pwcs) |
n = (size_t) 1; /* Value doesn't matter as long as it's not 0. */ |
while (n > 0) |
{ |
bytes = __mbtowc (r, pwcs, t, MB_CUR_MAX, __locale_charset (), state); |
if (bytes < 0) |
{ |
state->__count = 0; |
return -1; |
} |
else if (bytes == 0) |
break; |
t += bytes; |
++ret; |
if (pwcs) |
{ |
++pwcs; |
--n; |
} |
} |
return ret; |
} |