xref: /freebsd/lib/libc/locale/wcrtomb.3 (revision 279062fae149e105dae7c28b638d49ba5715725d)
1.\" Copyright (c) 2002 Tim J. Robbins
2.\" All rights reserved.
3.\"
4.\" Redistribution and use in source and binary forms, with or without
5.\" modification, are permitted provided that the following conditions
6.\" are met:
7.\" 1. Redistributions of source code must retain the above copyright
8.\"    notice, this list of conditions and the following disclaimer.
9.\" 2. Redistributions in binary form must reproduce the above copyright
10.\"    notice, this list of conditions and the following disclaimer in the
11.\"    documentation and/or other materials provided with the distribution.
12.\"
13.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
14.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
16.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
17.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
18.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
19.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
20.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
21.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
22.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
23.\" SUCH DAMAGE.
24.\"
25.\" $FreeBSD$
26.\"
27.Dd August 15, 2002
28.Dt WCRTOMB 3
29.Os
30.Sh NAME
31.Nm wcrtomb
32.Nd "convert a wide-character code to a character (restartable)"
33.Sh LIBRARY
34.Lb libc
35.Sh SYNOPSIS
36.In wchar.h
37.Ft size_t
38.Fn wcrtomb "char * restrict s" "wchar_t wc" "mbstate_t * restrict ps"
39.Sh DESCRIPTION
40The
41.Fn wcrtomb
42function stores a multibyte sequence representing the
43wide character
44.Fa wc ,
45including any necessary shift sequences, to the
46character array
47.Fa s ,
48storing a maximum of
49.Dv MB_CUR_MAX
50bytes.
51.Pp
52If
53.Fa s
54is
55.Dv NULL ,
56.Fn wcrtomb
57behaves as if
58.Fa s
59pointed to an internal buffer and
60.Fa wc
61was a null wide character (L'\e0').
62.Pp
63The
64.Ft mbstate_t
65argument,
66.Fa ps ,
67is used to keep track of the shift state.
68If it is
69.Dv NULL ,
70.Fn wcrtomb
71uses an internal, static
72.Vt mbstate_t
73object.
74.Sh RETURN VALUES
75The
76.Fn wcrtomb
77functions returns the length (in bytes) of the multibyte sequence
78needed to represent
79.Fa wc ,
80or
81.Po Vt size_t Pc Ns \-1
82if
83.Fa wc
84is not a valid wide character code.
85.Sh ERRORS
86The
87.Fn wcrtomb
88function will fail if:
89.Bl -tag -width Er
90.\".It Bq Er EINVAL
91.\"Invalid argument.
92.It Bq Er EILSEQ
93An invalid wide character code was specified.
94.El
95.Sh SEE ALSO
96.Xr mbrtowc 3 ,
97.Xr setlocale 3 ,
98.Xr wctomb 3
99.Sh STANDARDS
100The
101.Fn wcrtomb
102function conforms to
103.St -isoC-99 .
104.Sh BUGS
105The current implementation does not support shift states.
106