Details | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
6607 | serge | 1 | #include |
2 | #include |
||
3 | #include "local.h" |
||
4 | |||
5 | size_t |
||
6 | _DEFUN (_mbstowcs_r, (reent, pwcs, s, n, state), |
||
7 | struct _reent *r _AND |
||
8 | wchar_t *__restrict pwcs _AND |
||
9 | const char *__restrict s _AND |
||
10 | size_t n _AND |
||
11 | mbstate_t *state) |
||
12 | { |
||
13 | size_t ret = 0; |
||
14 | char *t = (char *)s; |
||
15 | int bytes; |
||
16 | |||
17 | if (!pwcs) |
||
18 | n = (size_t) 1; /* Value doesn't matter as long as it's not 0. */ |
||
19 | while (n > 0) |
||
20 | { |
||
21 | bytes = __mbtowc (r, pwcs, t, MB_CUR_MAX, __locale_charset (), state); |
||
22 | if (bytes < 0) |
||
23 | { |
||
24 | state->__count = 0; |
||
25 | return -1; |
||
26 | } |
||
27 | else if (bytes == 0) |
||
28 | break; |
||
29 | t += bytes; |
||
30 | ++ret; |
||
31 | if (pwcs) |
||
32 | { |
||
33 | ++pwcs; |
||
34 | --n; |
||
35 | } |
||
36 | } |
||
37 | return ret; |
||
38 | }> |