1.\" Copyright (c) 2002-2004 Tim J. Robbins. All rights reserved. 2.\" Copyright (c) 1993 3.\" The Regents of the University of California. All rights reserved. 4.\" 5.\" This code is derived from software contributed to Berkeley by 6.\" Donn Seeley of BSDI. 7.\" 8.\" Redistribution and use in source and binary forms, with or without 9.\" modification, are permitted provided that the following conditions 10.\" are met: 11.\" 1. Redistributions of source code must retain the above copyright 12.\" notice, this list of conditions and the following disclaimer. 13.\" 2. Redistributions in binary form must reproduce the above copyright 14.\" notice, this list of conditions and the following disclaimer in the 15.\" documentation and/or other materials provided with the distribution. 16.\" 4. Neither the name of the University nor the names of its contributors 17.\" may be used to endorse or promote products derived from this software 18.\" without specific prior written permission. 19.\" 20.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 21.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 22.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 23.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 24.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 25.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 26.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 27.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 28.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 29.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 30.\" SUCH DAMAGE. 31.\" 32.\" From @(#)multibyte.3 8.1 (Berkeley) 6/4/93 33.\" From FreeBSD: src/lib/libc/locale/multibyte.3,v 1.22 2003/11/08 03:23:11 tjr Exp 34.\" $FreeBSD: head/lib/libc/locale/wctomb.3 165903 2007-01-09 00:28:16Z imp $ 35.\" 36.Dd December 27, 2013 37.Dt WCTOMB 3 38.Os 39.Sh NAME 40.Nm wctomb , 41.Nm wctomb_l 42.Nd convert a wide-character code to a character 43.Sh LIBRARY 44.Lb libc 45.Sh SYNOPSIS 46.In stdlib.h 47.Ft int 48.Fn wctomb "char *mbchar" "wchar_t wchar" 49.In xlocale.h 50.Ft int 51.Fn wctomb_l "char *mbchar" "wchar_t wchar" "locale_t locale" 52.Sh DESCRIPTION 53The 54.Fn wctomb 55and 56.Fn wctomb_l 57functions convert a wide character 58.Fa wchar 59into a multibyte character and store 60the result in 61.Fa mbchar . 62The object pointed to by 63.Fa mbchar 64must be large enough to accommodate the multibyte character, which 65may be up to 66.Dv MB_LEN_MAX 67bytes. 68.Pp 69A call with a null 70.Fa mbchar 71pointer returns nonzero if the current locale requires shift states, 72zero otherwise; 73if shift states are required, the shift state is reset to the initial state. 74.Pp 75The 76.Fn wctomb_l 77function takes an explicit 78.Fa locale 79argument, whereas the 80.Fn wctomb 81function uses the current global or per-thread locale. 82.Sh RETURN VALUES 83If 84.Fa mbchar 85is 86.Dv NULL , 87the 88.Fn wctomb 89and 90.Fn wctomb_l 91functions return nonzero if shift states are supported, 92zero otherwise. 93If 94.Fa mbchar 95is valid, 96.Fn wctomb 97and 98.Fn wctomb_l 99return 100the number of bytes processed in 101.Fa mbchar , 102or \-1 if no multibyte character 103could be recognized or converted. 104In this case, 105.Fn wctomb Ns 's 106and 107.Fn wctomb_l Ns 's 108internal conversion states are undefined. 109.Sh ERRORS 110The 111.Fn wctomb 112and 113.Fn wctomb_l 114functions will fail if: 115.Bl -tag -width Er 116.It Bq Er EILSEQ 117An invalid multibyte sequence was detected. 118.It Bq Er EINVAL 119The internal conversion state is invalid. 120.El 121.Sh SEE ALSO 122.Xr mbtowc 3 , 123.Xr wcrtomb 3 , 124.Xr wcstombs 3 , 125.Xr wctob 3 , 126.Xr xlocale 3 127.Sh STANDARDS 128The 129.Fn wctomb 130function conforms to 131.St -isoC-99 . 132