Subversion Repositories Kolibri OS

Rev

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
}