.Dt MBTOWC 3
.Os
.Sh NAME
-.Nm mbtowc
+.Nm mbtowc ,
+.Nm mbtowc_l
.Nd convert a character to a wide-character code
.Sh LIBRARY
.Lb libc
.In stdlib.h
.Ft int
.Fo mbtowc
-.Fa "wchar_t * restrict wcharp" "const char * restrict mbchar"
-.Fa "size_t nbytes"
+.Fa "wchar_t *restrict pwc"
+.Fa "const char *restrict s"
+.Fa "size_t n"
+.Fc
+.In stdlib.h
+.In xlocale.h
+.Ft int
+.Fo mbtowc_l
+.Fa "wchar_t *restrict pwc"
+.Fa "const char *restrict s"
+.Fa "size_t n"
+.Fa "locale_t loc"
.Fc
.Sh DESCRIPTION
The
.Fn mbtowc
function converts a multibyte character
-.Fa mbchar
-into a wide character according to the current conversion state,
+.Fa s
+into a wide character, according to the current conversion state,
and stores the result
in the object pointed to by
-.Fa wcharp .
+.Fa pwc .
Up to
-.Fa nbytes
+.Fa n
bytes are examined.
.Pp
A call with a null
-.Fa mbchar
+.Fa s
pointer returns nonzero if the current encoding requires shift states,
zero otherwise;
if shift states are required, the shift state is reset to the initial state.
+.Pp
+While the
+.Fn mbtowc
+function uses the current locale, the
+.Fn mbtowc_l
+function may be passed a locale directly. See
+.Xr xlocale 3
+for more information.
.Sh RETURN VALUES
If
-.Fa mbchar
+.Fa s
is
.Dv NULL ,
the
zero otherwise.
.Pp
Otherwise, if
-.Fa mbchar
+.Fa s
is not a null pointer,
.Fn mbtowc
either returns 0 if
-.Fa mbchar
+.Fa s
represents the null wide character, or returns
the number of bytes processed in
-.Fa mbchar ,
+.Fa s ,
or returns \-1 if no multibyte character
could be recognized or converted.
In this case,
.Xr mbrtowc 3 ,
.Xr mbstowcs 3 ,
.Xr multibyte 3 ,
-.Xr wctomb 3
+.Xr wctomb 3 ,
+.Xr xlocale 3
.Sh STANDARDS
The
.Fn mbtowc