Add wchar and multibyte related man pages.
[dragonfly.git] / lib / libc / locale / wcrtomb.3
1 .\" $NetBSD: src/lib/libc/locale/wcrtomb.3,v 1.6 2004/09/27 07:07:04 yamt Exp $
2 .\" $DragonFly: src/lib/libc/locale/wcrtomb.3,v 1.1 2005/03/12 00:18:01 joerg Exp $
3 .\"
4 .\" Copyright (c)2002 Citrus Project,
5 .\" All rights reserved.
6 .\"
7 .\" Redistribution and use in source and binary forms, with or without
8 .\" modification, are permitted provided that the following conditions
9 .\" are met:
10 .\" 1. Redistributions of source code must retain the above copyright
11 .\"    notice, this list of conditions and the following disclaimer.
12 .\" 2. Redistributions in binary form must reproduce the above copyright
13 .\"    notice, this list of conditions and the following disclaimer in the
14 .\"    documentation and/or other materials provided with the distribution.
15 .\"
16 .\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
17 .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18 .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19 .\" ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
20 .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21 .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
22 .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
23 .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
24 .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
25 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
26 .\" SUCH DAMAGE.
27 .\"
28 .Dd February 4, 2002
29 .Dt WCRTOMB 3
30 .Os
31 .\" ----------------------------------------------------------------------
32 .Sh NAME
33 .Nm wcrtomb
34 .Nd converts a wide character to a multibyte character (restartable)
35 .\" ----------------------------------------------------------------------
36 .Sh LIBRARY
37 .Lb libc
38 .\" ----------------------------------------------------------------------
39 .Sh SYNOPSIS
40 .In wchar.h
41 .Ft size_t
42 .Fn wcrtomb "char * restrict s" "wchar_t wc" "mbstate_t * restrict ps"
43 .\" ----------------------------------------------------------------------
44 .Sh DESCRIPTION
45 .Fn wcrtomb
46 converts the wide character given by
47 .Fa wc
48 to the corresponding multibyte character, and stores it in the array
49 pointed to by
50 .Fa s
51 unless
52 .Fa s
53 is a null pointer.
54 This function will modify the first at most
55 .Dv MB_CUR_MAX
56 bytes of the array pointed to by
57 .Fa s .
58 .Pp
59 The behaviour of
60 .Fn wcrtomb
61 is affected by the
62 .Dv LC_CTYPE
63 category of the current locale.
64 .Pp
65 These are the special cases:
66 .Bl -tag -width 012345678901
67 .It "wc == 0"
68 For state-dependent encodings,
69 .Fn wcrtomb
70 stores a null byte preceded by special byte sequence (if any)
71 to return to an initial state in the array pointed to by
72 .Fa s ,
73 and the state object pointed to by
74 .Fa ps
75 also returns to an initial state.
76 .It "s == NULL"
77 .Fn wcrtomb
78 just places
79 .Fa ps
80 into a initial state.
81 It is equivalent to the following call:
82 .Bd -literal -offset indent
83 wcrtomb(buf, L'\\0', ps);
84 .Ed
85 .Pp
86 Here,
87 .Fa buf
88 is a dummy buffer.
89 In this case,
90 .Fa wc
91 is ignored.
92 .It "ps == NULL"
93 .Fn mbrtowc
94 uses its own internal state object to keep the conversion state,
95 instead of
96 .Fa ps
97 mentioned in this manual page.
98 .Pp
99 Calling any other functions in
100 .Lb libc
101 never changes the internal
102 state of
103 .Fn mbrtowc ,
104 which is initialized at startup time of the program.
105 .El
106 .\" ----------------------------------------------------------------------
107 .Sh RETURN VALUES
108 .Fn wcrtomb
109 returns:
110 .Bl -tag -width 012345678901
111 .It "positive"
112 The number of bytes (including any shift sequences)
113 which are stored in the array.
114 .It "(size_t)-1"
115 .Fa wc
116 is not a valid wide character.
117 In this case,
118 .Fn wcrtomb
119 also sets
120 .Va errno
121 to indicate the error.
122 .El
123 .\" ----------------------------------------------------------------------
124 .Sh ERRORS
125 .Fn wcrtomb
126 may cause an error in the following case:
127 .Bl -tag -width Er
128 .It Bq Er EILSEQ
129 .Fa wc
130 is not a valid wide character.
131 .It Bq Er EINVAL
132 .Fa ps
133 points to an invalid or uninitialized mbstate_t object.
134 .El
135 .\" ----------------------------------------------------------------------
136 .Sh SEE ALSO
137 .Xr setlocale 3 ,
138 .Xr wctomb 3
139 .\" ----------------------------------------------------------------------
140 .Sh STANDARDS
141 The
142 .Fn wcrtomb
143 function conforms to
144 .St -isoC-amd1 .
145 The restrict qualifier is added at
146 .St -isoC-99 .