Provided by: manpages-pt-dev_20040726-2_all bug

NAME

       mbrtowc - convert a multibyte sequence to a wide character

SYNOPSIS

       #include <wchar.h>

       size_t mbrtowc (wchar_t *pwc, const char *s, size_t n, mbstate_t *ps);

DESCRIPTION

       The  main  case  for this function is when s is not NULL and pwc is not
       NULL. In this case, the mbrtowc function inspects at most  n  bytes  of
       the  multibyte  string  starting  at  s,  extracts  the  next  complete
       multibyte character, converts it to a wide character and stores  it  at
       *pwc.  It  updates the shift state *ps. If the converted wide character
       is not L’\0’, it returns the number of bytes that were consumed from s.
       If the converted wide character is L’\0’, it resets the shift state *ps
       to the initial state and returns 0.

       If the n bytes starting at  s  do  not  contain  a  complete  multibyte
       character,  mbrtowc  returns (size_t)(-2). This can happen even if n >=
       MB_CUR_MAX, if the multibyte string contains redundant shift sequences.

       If  the  multibyte  string  starting at s contains an invalid multibyte
       sequence  before  the  next   complete   character,   mbrtowc   returns
       (size_t)(-1) and sets errno to EILSEQ. In this case, the effects on *ps
       are undefined.

       A different case is when s is not NULL but pwc is NULL.  In  this  case
       the  mbrtowc  function behaves as above, excepts that it does not store
       the converted wide character in memory.

       A third case is when s is NULL. In this case, pwc and  n  are  ignored.
       The mbrtowc function puts *ps in the initial state and returns 0.

       In  all of the above cases, if ps is a NULL pointer, a static anonymous
       state only known to the mbrtowc function is used instead.

RETURN VALUE

       The mbrtowc function returns  the  number  of  bytes  parsed  from  the
       multibyte  sequence  starting  at  s, if a non-L’\0’ wide character was
       recognized.  It returns 0, if a L’\0’ wide character was recognized. It
       returns  (size_t)(-1) and sets errno to EILSEQ, if an invalid multibyte
       sequence was encountered. It returns (size_t)(-2) if it couldn’t  parse
       a complete multibyte character, meaning that n should be increased.

CONFORMING TO

       ISO/ANSI C, UNIX98

SEE ALSO

       mbsrtowcs(3)

NOTES

       The  behaviour  of  mbrtowc  depends  on  the  LC_CTYPE category of the
       current locale.