summaryrefslogtreecommitdiffstats
path: root/newlib/libc/stdlib/mbsrtowcs.c
blob: 256ab0d7b3f9989149f95af232eb763b8368bbdf (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <wchar.h>
#include <stdlib.h>
#include <stdio.h>
#include <reent.h>
#include <errno.h>

size_t
mbsrtowcs(wchar_t *dst, const char **src, size_t len, mbstate_t *ps)
{
  int retval = 0;
  mbstate_t internal;

  _REENT_CHECK_MISC(_REENT);

  retval = _mbstowcs_r (_REENT, dst, *src, len, ps != NULL ? ps : &internal);

  if (retval == -1)
    {
      _REENT->_errno = EILSEQ;
      return (size_t)(-1);
    }
  else
    return (size_t)retval;
}