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


       mbsrtowcs - convert a multibyte string to a wide character string


       #include <wchar.h>

       size_t mbsrtowcs (wchar_t *dest, const char **src,
                         size_t len, mbstate_t *ps);


       If  dest  is not a NULL pointer, the mbsrtowcs function converts the multibyte string *src
       to a wide-character string starting at dest.  At most len wide characters are  written  to
       dest.  The  shift  state  *ps  is  updated.  The  conversion  is  effectively performed by
       repeatedly calling mbrtowc(dest,*src,n,ps) where n is some positive  number,  as  long  as
       this  call  succeeds,  and  then  incrementing dest by one and *src by the number of bytes
       consumed. The conversion can stop for three reasons:

       1. An invalid multibyte sequence has been encountered. In this case *src is left  pointing
       to the invalid multibyte sequence, (size_t)(-1) is returned, and errno is set to EILSEQ.

       2.  len  non-L'\0'  wide  characters  have  been stored at dest. In this case *src is left
       pointing to the next multibyte sequence to be converted, and the number of wide characters
       written to dest is returned.

       3.  The  multibyte  string  has  been completely converted, including the terminating '\0'
       (which has the side effect of bringing back *ps to the initial state). In this  case  *src
       is  set  to  NULL,  and  the  number  of  wide  characters  written to dest, excluding the
       terminating L'\0' character, is returned.

       If dest is NULL, len is ignored, and the conversion proceeds as  above,  except  that  the
       converted wide characters are not written out to memory, and that no length limit exists.

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

       The programmer must ensure that there is room for at least len wide characters at dest.


       The mbsrtowcs function returns the number of wide characters that make  up  the  converted
       part  of  the wide character string, not including the terminating null wide character. If
       an invalid multibyte sequence was encountered, (size_t)(-1) is returned, and errno set  to


       ISO/ANSI C, UNIX98


       mbstowcs(3), mbsnrtowcs(3), iconv(3)


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

       Passing NULL as ps is not multi-thread safe.