Man Linux: Main Page and Category List

NAME

       mbrtowc - convert a character to a wide-character code (restartable)

SYNOPSIS

       #include <wchar.h>

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

DESCRIPTION

       If  s  is a null pointer, the mbrtowc() function shall be equivalent to
       the call:

              mbrtowc(NULL, "", 1, ps)

       In this case, the values of the arguments pwc and n are ignored.

       If s is not a null pointer, the mbrtowc()  function  shall  inspect  at
       most  n  bytes  beginning  at the byte pointed to by s to determine the
       number of bytes needed to complete the next  character  (including  any
       shift sequences). If the function determines that the next character is
       completed, it shall determine  the  value  of  the  corresponding  wide
       character  and  then,  if  pwc  is not a null pointer, shall store that
       value in the object pointed  to  by  pwc.  If  the  corresponding  wide
       character  is  the  null  wide character, the resulting state described
       shall be the initial conversion state.

       If ps is a null pointer, the  mbrtowc()  function  shall  use  its  own
       internal mbstate_t object, which shall be initialized at program start-
       up to the initial conversion state.  Otherwise,  the  mbstate_t  object
       pointed  to  by  ps  shall  be  used to completely describe the current
       conversion  state   of   the   associated   character   sequence.   The
       implementation shall behave as if no function defined in this volume of
       IEEE Std 1003.1-2001 calls mbrtowc().

       The behavior of this function is affected by the LC_CTYPE  category  of
       the current locale.

RETURN VALUE

       The  mbrtowc()  function  shall  return the first of the following that
       applies:

       0      If the next  n  or  fewer  bytes  complete  the  character  that
              corresponds  to  the  null  wide  character  (which is the value
              stored).

       between 1 and n inclusive

              If the next n or fewer bytes complete a valid  character  (which
              is  the value stored); the value returned shall be the number of
              bytes that complete the character.

       (size_t)-2
              If the next n bytes contribute to an incomplete but  potentially
              valid  character,  and all n bytes have been processed (no value
              is stored). When n has at least the value  of  the  {MB_CUR_MAX}
              macro,  this  case  can  only occur if s points at a sequence of
              redundant  shift  sequences  (for  implementations  with  state-
              dependent encodings).

       (size_t)-1
              If  an  encoding error occurs, in which case the next n or fewer
              bytes do not contribute to a complete and  valid  character  (no
              value  is  stored).  In  this  case, [EILSEQ] shall be stored in
              errno and the conversion state is undefined.

ERRORS

       The mbrtowc() function may fail if:

       EINVAL ps points to an  object  that  contains  an  invalid  conversion
              state.

       EILSEQ Invalid character sequence is detected.

       The following sections are informative.

EXAMPLES

       None.

APPLICATION USAGE

       None.

RATIONALE

       None.

FUTURE DIRECTIONS

       None.

SEE ALSO

       mbsinit()  ,  the  Base  Definitions  volume  of  IEEE Std 1003.1-2001,
       <wchar.h>

COPYRIGHT

       Portions of this text are reprinted and reproduced in  electronic  form
       from IEEE Std 1003.1, 2003 Edition, Standard for Information Technology
       -- Portable Operating System Interface (POSIX),  The  Open  Group  Base
       Specifications  Issue  6,  Copyright  (C) 2001-2003 by the Institute of
       Electrical and Electronics Engineers, Inc and The Open  Group.  In  the
       event of any discrepancy between this version and the original IEEE and
       The Open Group Standard, the original IEEE and The Open Group  Standard
       is  the  referee document. The original Standard can be obtained online
       at http://www.opengroup.org/unix/online.html .