xref: /dflybsd-src/lib/libc/locale/mbrtowc.3 (revision 74ffc4e3746fcc0ff792deef041c1bbb1deb019b)
10d5acd74SJohn Marino.\" Copyright (c) 2002-2004 Tim J. Robbins
2eee2ef09SJoerg Sonnenberger.\" All rights reserved.
3eee2ef09SJoerg Sonnenberger.\"
4eee2ef09SJoerg Sonnenberger.\" Redistribution and use in source and binary forms, with or without
5eee2ef09SJoerg Sonnenberger.\" modification, are permitted provided that the following conditions
6eee2ef09SJoerg Sonnenberger.\" are met:
7eee2ef09SJoerg Sonnenberger.\" 1. Redistributions of source code must retain the above copyright
8eee2ef09SJoerg Sonnenberger.\"    notice, this list of conditions and the following disclaimer.
9eee2ef09SJoerg Sonnenberger.\" 2. Redistributions in binary form must reproduce the above copyright
10eee2ef09SJoerg Sonnenberger.\"    notice, this list of conditions and the following disclaimer in the
11eee2ef09SJoerg Sonnenberger.\"    documentation and/or other materials provided with the distribution.
12eee2ef09SJoerg Sonnenberger.\"
13eee2ef09SJoerg Sonnenberger.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
14eee2ef09SJoerg Sonnenberger.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15eee2ef09SJoerg Sonnenberger.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
16eee2ef09SJoerg Sonnenberger.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
17eee2ef09SJoerg Sonnenberger.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
18eee2ef09SJoerg Sonnenberger.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
19eee2ef09SJoerg Sonnenberger.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
20eee2ef09SJoerg Sonnenberger.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
21eee2ef09SJoerg Sonnenberger.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
22eee2ef09SJoerg Sonnenberger.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
23eee2ef09SJoerg Sonnenberger.\" SUCH DAMAGE.
24eee2ef09SJoerg Sonnenberger.\"
250d5acd74SJohn Marino.\" $FreeBSD: head/lib/libc/locale/mbrtowc.3 250883 2013-05-21 19:59:37Z ed $
260d5acd74SJohn Marino.\"
27*74ffc4e3SSascha Wildner.Dd May 4, 2019
28eee2ef09SJoerg Sonnenberger.Dt MBRTOWC 3
29eee2ef09SJoerg Sonnenberger.Os
30eee2ef09SJoerg Sonnenberger.Sh NAME
310d5acd74SJohn Marino.Nm mbrtowc ,
327d3de48cSSascha Wildner.Nm mbrtowc_l ,
330d5acd74SJohn Marino.Nm mbrtoc16 ,
34*74ffc4e3SSascha Wildner.Nm mbrtoc16_l ,
35*74ffc4e3SSascha Wildner.Nm mbrtoc32 ,
36*74ffc4e3SSascha Wildner.Nm mbrtoc32_l
370d5acd74SJohn Marino.Nd "convert a character to a wide-character code (restartable)"
38eee2ef09SJoerg Sonnenberger.Sh LIBRARY
39eee2ef09SJoerg Sonnenberger.Lb libc
40eee2ef09SJoerg Sonnenberger.Sh SYNOPSIS
41eee2ef09SJoerg Sonnenberger.In wchar.h
42eee2ef09SJoerg Sonnenberger.Ft size_t
430d5acd74SJohn Marino.Fo mbrtowc
440d5acd74SJohn Marino.Fa "wchar_t * restrict pc" "const char * restrict s" "size_t n"
450d5acd74SJohn Marino.Fa "mbstate_t * restrict ps"
460d5acd74SJohn Marino.Fc
470d5acd74SJohn Marino.In uchar.h
480d5acd74SJohn Marino.Ft size_t
490d5acd74SJohn Marino.Fo mbrtoc16
500d5acd74SJohn Marino.Fa "char16_t * restrict pc" "const char * restrict s" "size_t n"
510d5acd74SJohn Marino.Fa "mbstate_t * restrict ps"
520d5acd74SJohn Marino.Fc
530d5acd74SJohn Marino.Ft size_t
540d5acd74SJohn Marino.Fo mbrtoc32
550d5acd74SJohn Marino.Fa "char32_t * restrict pc" "const char * restrict s" "size_t n"
560d5acd74SJohn Marino.Fa "mbstate_t * restrict ps"
570d5acd74SJohn Marino.Fc
587d3de48cSSascha Wildner.In xlocale.h
597d3de48cSSascha Wildner.Ft size_t
607d3de48cSSascha Wildner.Fo mbrtowc_l
617d3de48cSSascha Wildner.Fa "wchar_t * restrict pc" "const char * restrict s" "size_t n"
627d3de48cSSascha Wildner.Fa "mbstate_t * restrict ps" "locale_t locale"
637d3de48cSSascha Wildner.Fc
64*74ffc4e3SSascha Wildner.Ft size_t
65*74ffc4e3SSascha Wildner.Fo mbrtoc16_l
66*74ffc4e3SSascha Wildner.Fa "char16_t * restrict pc" "const char * restrict s" "size_t n"
67*74ffc4e3SSascha Wildner.Fa "mbstate_t * restrict ps" "locale_t locale"
68*74ffc4e3SSascha Wildner.Fc
69*74ffc4e3SSascha Wildner.Ft size_t
70*74ffc4e3SSascha Wildner.Fo mbrtoc32_l
71*74ffc4e3SSascha Wildner.Fa "char32_t * restrict pc" "const char * restrict s" "size_t n"
72*74ffc4e3SSascha Wildner.Fa "mbstate_t * restrict ps" "locale_t locale"
73*74ffc4e3SSascha Wildner.Fc
74eee2ef09SJoerg Sonnenberger.Sh DESCRIPTION
75eee2ef09SJoerg SonnenbergerThe
76eee2ef09SJoerg Sonnenberger.Fn mbrtowc ,
777d3de48cSSascha Wildner.Fn mbrtowc_l ,
78*74ffc4e3SSascha Wildner.Fn mbrtoc16 ,
79*74ffc4e3SSascha Wildner.Fn mbrtoc16_l ,
80*74ffc4e3SSascha Wildner.Fn mbrtoc32 ,
810d5acd74SJohn Marinoand
82*74ffc4e3SSascha Wildner.Fn mbrtoc32_l
830d5acd74SJohn Marinofunctions inspect at most
840d5acd74SJohn Marino.Fa n
850d5acd74SJohn Marinobytes pointed to by
86eee2ef09SJoerg Sonnenberger.Fa s
870d5acd74SJohn Marinoto determine the number of bytes needed to complete the next multibyte
880d5acd74SJohn Marinocharacter.
890d5acd74SJohn MarinoIf a character can be completed, and
900d5acd74SJohn Marino.Fa pc
910d5acd74SJohn Marinois not
920d5acd74SJohn Marino.Dv NULL ,
930d5acd74SJohn Marinothe wide character which is represented by
940d5acd74SJohn Marino.Fa s
950d5acd74SJohn Marinois stored in the
960d5acd74SJohn Marino.Vt wchar_t ,
970d5acd74SJohn Marino.Vt char16_t
980d5acd74SJohn Marinoor
990d5acd74SJohn Marino.Vt char32_t
1000d5acd74SJohn Marinoit points to.
1010d5acd74SJohn Marino.Pp
102eee2ef09SJoerg SonnenbergerIf
103eee2ef09SJoerg Sonnenberger.Fa s
1040d5acd74SJohn Marinois
1050d5acd74SJohn Marino.Dv NULL ,
1060d5acd74SJohn Marinothese functions behave as if
1070d5acd74SJohn Marino.Fa pc
1080d5acd74SJohn Marinowas
1090d5acd74SJohn Marino.Dv NULL ,
110eee2ef09SJoerg Sonnenberger.Fa s
1110d5acd74SJohn Marinowas an empty string
1120d5acd74SJohn Marino.Pq Qq
1130d5acd74SJohn Marinoand
114eee2ef09SJoerg Sonnenberger.Fa n
1150d5acd74SJohn Marinowas 1.
1160d5acd74SJohn Marino.Pp
1170d5acd74SJohn MarinoThe
1180d5acd74SJohn Marino.Vt mbstate_t
1190d5acd74SJohn Marinoargument,
1200d5acd74SJohn Marino.Fa ps ,
1210d5acd74SJohn Marinois used to keep track of the shift state.
1220d5acd74SJohn MarinoIf it is
1230d5acd74SJohn Marino.Dv NULL ,
1240d5acd74SJohn Marinothese functions use an internal, static
1250d5acd74SJohn Marino.Vt mbstate_t
1260d5acd74SJohn Marinoobject, which is initialized to the initial conversion state
1270d5acd74SJohn Marinoat program startup.
1280d5acd74SJohn Marino.Pp
1290d5acd74SJohn MarinoAs a single
1300d5acd74SJohn Marino.Vt char16_t
1310d5acd74SJohn Marinois not large enough to represent certain multibyte characters, the
1320d5acd74SJohn Marino.Fn mbrtoc16
1330d5acd74SJohn Marinofunction may need to be invoked multiple times to convert a single
1340d5acd74SJohn Marinomultibyte character sequence.
1357d3de48cSSascha Wildner.Pp
1367d3de48cSSascha WildnerThe
137*74ffc4e3SSascha Wildner.Fn mbrtowc_l ,
138*74ffc4e3SSascha Wildner.Fn mbrtoc16_l ,
139*74ffc4e3SSascha Wildnerand
140*74ffc4e3SSascha Wildner.Fn mbrtoc32_l
141*74ffc4e3SSascha Wildnerfunctions take an explicit
1427d3de48cSSascha Wildner.Fa locale
1437d3de48cSSascha Wildnerargument, whereas the
144*74ffc4e3SSascha Wildner.Fn mbrtowc ,
145*74ffc4e3SSascha Wildner.Fn mbrtoc16 ,
146*74ffc4e3SSascha Wildnerand
147*74ffc4e3SSascha Wildner.Fn mbrtoc32
148*74ffc4e3SSascha Wildnerfunctions use the current global or per-thread locale.
1490d5acd74SJohn Marino.Sh RETURN VALUES
1500d5acd74SJohn MarinoThe
1510d5acd74SJohn Marino.Fn mbrtowc ,
1527d3de48cSSascha Wildner.Fn mbrtowc_l ,
153*74ffc4e3SSascha Wildner.Fn mbrtoc16 ,
154*74ffc4e3SSascha Wildner.Fn mbrtoc16_l ,
155*74ffc4e3SSascha Wildner.Fn mbrtoc32 ,
1560d5acd74SJohn Marinoand
157*74ffc4e3SSascha Wildner.Fn mbrtoc32_l
1580d5acd74SJohn Marinofunctions return:
1590d5acd74SJohn Marino.Bl -tag -width indent
1600d5acd74SJohn Marino.It 0
1610d5acd74SJohn MarinoThe next
1620d5acd74SJohn Marino.Fa n
1630d5acd74SJohn Marinoor fewer bytes
1640d5acd74SJohn Marinorepresent the null wide character
1650d5acd74SJohn Marino.Pq Li "L'\e0'" .
1660d5acd74SJohn Marino.It >0
1670d5acd74SJohn MarinoThe next
1680d5acd74SJohn Marino.Fa n
1690d5acd74SJohn Marinoor fewer bytes represent a valid character, these functions
1700d5acd74SJohn Marinoreturn the number of bytes used to complete the multibyte character.
1710d5acd74SJohn Marino.It Po Vt size_t Pc Ns \-1
1720d5acd74SJohn MarinoAn encoding error has occurred.
1730d5acd74SJohn MarinoThe next
1740d5acd74SJohn Marino.Fa n
1750d5acd74SJohn Marinoor fewer bytes do not contribute to a valid multibyte character.
1760d5acd74SJohn Marino.It Po Vt size_t Pc Ns \-2
1770d5acd74SJohn MarinoThe next
1780d5acd74SJohn Marino.Fa n
1790d5acd74SJohn Marinocontribute to, but do not complete, a valid multibyte character sequence,
1800d5acd74SJohn Marinoand all
1810d5acd74SJohn Marino.Fa n
1820d5acd74SJohn Marinobytes have been processed.
183eee2ef09SJoerg Sonnenberger.El
1840d5acd74SJohn Marino.Pp
1850d5acd74SJohn MarinoThe
1860d5acd74SJohn Marino.Fn mbrtoc16
187*74ffc4e3SSascha Wildnerand
188*74ffc4e3SSascha Wildner.Fn mbrtoc16_l
189*74ffc4e3SSascha Wildnerfunctions also return:
1900d5acd74SJohn Marino.Bl -tag -width indent
1910d5acd74SJohn Marino.It Po Vt size_t Pc Ns \-3
1920d5acd74SJohn MarinoThe next character resulting from a previous call has been stored.
1930d5acd74SJohn MarinoNo bytes from the input have been consumed.
1940d5acd74SJohn Marino.El
195eee2ef09SJoerg Sonnenberger.Sh ERRORS
1960d5acd74SJohn MarinoThe
1970d5acd74SJohn Marino.Fn mbrtowc ,
1987d3de48cSSascha Wildner.Fn mbrtowc_l ,
199*74ffc4e3SSascha Wildner.Fn mbrtoc16 ,
200*74ffc4e3SSascha Wildner.Fn mbrtoc16_l ,
201*74ffc4e3SSascha Wildner.Fn mbrtoc32 ,
2020d5acd74SJohn Marinoand
203*74ffc4e3SSascha Wildner.Fn mbrtoc32_l
2040d5acd74SJohn Marinofunctions will fail if:
205eee2ef09SJoerg Sonnenberger.Bl -tag -width Er
206eee2ef09SJoerg Sonnenberger.It Bq Er EILSEQ
2070d5acd74SJohn MarinoAn invalid multibyte sequence was detected.
208eee2ef09SJoerg Sonnenberger.It Bq Er EINVAL
2090d5acd74SJohn MarinoThe conversion state is invalid.
210eee2ef09SJoerg Sonnenberger.El
211eee2ef09SJoerg Sonnenberger.Sh SEE ALSO
212eee2ef09SJoerg Sonnenberger.Xr mbtowc 3 ,
2130d5acd74SJohn Marino.Xr multibyte 3 ,
2140d5acd74SJohn Marino.Xr setlocale 3 ,
2157d3de48cSSascha Wildner.Xr wcrtomb 3 ,
2167d3de48cSSascha Wildner.Xr xlocale 3
217eee2ef09SJoerg Sonnenberger.Sh STANDARDS
218eee2ef09SJoerg SonnenbergerThe
2190d5acd74SJohn Marino.Fn mbrtowc ,
2200d5acd74SJohn Marino.Fn mbrtoc16
2210d5acd74SJohn Marinoand
2220d5acd74SJohn Marino.Fn mbrtoc32
2230d5acd74SJohn Marinofunctions conform to
2240d5acd74SJohn Marino.St -isoC-2011 .
225