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.