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