Provided by: manpages-pt-dev_20040726-4_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.