Esempio n. 1
0
size_t
_mbrtowc_r (struct _reent *ptr,
	wchar_t *pwc,
	const char *s,
	size_t n,
	mbstate_t *ps)
{
  int retval = 0;

#ifdef _MB_CAPABLE
  if (ps == NULL)
    {
      _REENT_CHECK_MISC(ptr);
      ps = &(_REENT_MBRTOWC_STATE(ptr));
    }
#endif

  if (s == NULL)
    retval = __MBTOWC (ptr, NULL, "", 1, ps);
  else
    retval = __MBTOWC (ptr, pwc, s, n, ps);

  if (retval == -1)
    {
      ps->__count = 0;
      __errno_r(ptr) = EILSEQ;
      return (size_t)(-1);
    }
  else
    return (size_t)retval;
}
Esempio n. 2
0
#include <wchar.h>
#include "local.h"

int
_DEFUN (mblen, (s, n), 
        const char *s _AND
        size_t n)
{
#ifdef _MB_CAPABLE
  int retval = 0;
  struct _reent *reent = _REENT;
  mbstate_t *state;
  
  _REENT_CHECK_MISC(reent);
  state = &(_REENT_MBLEN_STATE(reent));
  retval = __MBTOWC (reent, NULL, s, n, state);
  if (retval < 0)
    {
      state->__count = 0;
      return -1;
    }
  else
    return retval;
  
#else /* not _MB_CAPABLE */
  if (s == NULL || *s == '\0')
    return 0;
  if (n == 0)
    return -1;
  return 1;
#endif /* not _MB_CAPABLE */
Esempio n. 3
0
#include "local.h"

int
mbtowc (wchar_t *__restrict pwc,
        const char *__restrict s,
        size_t n)
{
#ifdef _MB_CAPABLE
  int retval = 0;
  struct _reent *reent = _REENT;
  mbstate_t *ps;

  _REENT_CHECK_MISC(reent);
  ps = &(_REENT_MBTOWC_STATE(reent));
  
  retval = __MBTOWC (reent, pwc, s, n, ps);
  
  if (retval < 0)
    {
      ps->__count = 0;
      return -1;
    }
  return retval;
#else /* not _MB_CAPABLE */
  if (s == NULL)
    return 0;
  if (n == 0)
    return -1;
  if (pwc)
    *pwc = (wchar_t) *s;
  return (*s != '\0');