nrelease - fix/improve livecd
[dragonfly.git] / lib / libc / locale / xlocale.3
1 .\" Copyright (c) 2011 The FreeBSD Foundation
2 .\" All rights reserved.
3 .\"
4 .\" This documentation was written by David Chisnall under sponsorship from
5 .\" the FreeBSD Foundation.
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 REGENTS 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 REGENTS 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 .\" $FreeBSD: head/lib/libc/locale/xlocale.3 250244 2013-05-04 17:06:47Z pluknet $
29 .\"
30 .Dd September 17, 2011
31 .Dt XLOCALE 3
32 .Os
33 .Sh NAME
34 .Nm xlocale
35 .Nd Thread-safe extended locale support
36 .Sh LIBRARY
37 .Lb libc
38 .Sh SYNOPSIS
39 .In xlocale.h
40 .Sh DESCRIPTION
41 The extended locale support includes a set of functions for setting
42 thread-local locales,
43 as well convenience functions for performing locale-aware
44 calls with a specified locale.
45 .Pp
46 The core of the xlocale API is the
47 .Fa locale_t
48 type.
49 This is an opaque type encapsulating a locale.
50 Instances of this can be either set as the locale for a specific thread or
51 passed directly to the
52 .Fa _l
53 suffixed variants of various standard C functions.
54 Two special
55 .Fa locale_t
56 values are available:
57 .Bl -bullet -offset indent
58 .It
59 NULL refers to the current locale for the thread,
60 or to the global locale if no locale has been set for this thread.
61 .It
62 .Dv LC_GLOBAL_LOCALE
63 refers to the global locale.
64 .El
65 .Pp
66 The global locale is the locale set with the
67 .Xr setlocale 3
68 function.
69 .Sh SEE ALSO
70 .Xr duplocale 3 ,
71 .Xr freelocale 3 ,
72 .Xr localeconv 3 ,
73 .Xr newlocale 3 ,
74 .Xr querylocale 3 ,
75 .Xr uselocale 3
76 .Sh CONVENIENCE FUNCTIONS
77 The xlocale API includes a number of
78 .Fa _l
79 suffixed convenience functions.
80 These are variants of standard C functions
81 that have been modified to take an explicit
82 .Fa locale_t
83 parameter as the final argument or, in the case of variadic functions,
84 as an additional argument directly before the format string.
85 Each of these functions accepts either NULL or
86 .Dv LC_GLOBAL_LOCALE .
87 In these functions, NULL refers to the C locale,
88 rather than the thread's current locale.
89 If you wish to use the thread's current locale,
90 then use the unsuffixed version of the function.
91 .Pp
92 These functions are exposed by including
93 .In xlocale.h
94 .Em after
95 including the relevant headers for the standard variant.
96 For example, the
97 .Xr strtol_l 3
98 function is exposed by including
99 .In xlocale.h
100 after
101 .In stdlib.h ,
102 which defines
103 .Xr strtol 3 .
104 .Pp
105 For reference,
106 a complete list of the locale-aware functions that are available in this form,
107 along with the headers that expose them, is provided here:
108 .Bl -tag -width ".In monetary.h"
109 .It In wctype.h
110 .Xr iswalnum_l 3 ,
111 .Xr iswalpha_l 3 ,
112 .Xr iswcntrl_l 3 ,
113 .Xr iswctype_l 3 ,
114 .Xr iswdigit_l 3 ,
115 .Xr iswgraph_l 3 ,
116 .Xr iswlower_l 3 ,
117 .Xr iswprint_l 3 ,
118 .Xr iswpunct_l 3 ,
119 .Xr iswspace_l 3 ,
120 .Xr iswupper_l 3 ,
121 .Xr iswxdigit_l 3 ,
122 .Xr towlower_l 3 ,
123 .Xr towupper_l 3 ,
124 .Xr wctype_l 3 ,
125 .It In ctype.h
126 .Xr digittoint_l 3 ,
127 .Xr isalnum_l 3 ,
128 .Xr isalpha_l 3 ,
129 .Xr isblank_l 3 ,
130 .Xr iscntrl_l 3 ,
131 .Xr isdigit_l 3 ,
132 .Xr isgraph_l 3 ,
133 .Xr ishexnumber_l 3 ,
134 .Xr isideogram_l 3 ,
135 .Xr islower_l 3 ,
136 .Xr isnumber_l 3 ,
137 .Xr isphonogram_l 3 ,
138 .Xr isprint_l 3 ,
139 .Xr ispunct_l 3 ,
140 .Xr isrune_l 3 ,
141 .Xr isspace_l 3 ,
142 .Xr isspecial_l 3 ,
143 .Xr isupper_l 3 ,
144 .Xr isxdigit_l 3 ,
145 .Xr tolower_l 3 ,
146 .Xr toupper_l 3
147 .It In inttypes.h
148 .Xr strtoimax_l 3 ,
149 .Xr strtoumax_l 3 ,
150 .Xr wcstoimax_l 3 ,
151 .Xr wcstoumax_l 3
152 .It In langinfo.h
153 .Xr nl_langinfo_l 3
154 .It In monetary.h
155 .Xr strfmon_l 3
156 .It In stdio.h
157 .Xr asprintf_l 3 ,
158 .Xr fprintf_l 3 ,
159 .Xr fscanf_l 3 ,
160 .Xr printf_l 3 ,
161 .Xr scanf_l 3 ,
162 .Xr snprintf_l 3 ,
163 .Xr sprintf_l 3 ,
164 .Xr sscanf_l 3 ,
165 .Xr vasprintf_l 3 ,
166 .Xr vfprintf_l 3 ,
167 .Xr vfscanf_l 3 ,
168 .Xr vprintf_l 3 ,
169 .Xr vscanf_l 3 ,
170 .Xr vsnprintf_l 3 ,
171 .Xr vsprintf_l 3 ,
172 .Xr vsscanf_l 3
173 .It In stdlib.h
174 .Xr atof_l 3 ,
175 .Xr atoi_l 3 ,
176 .Xr atol_l 3 ,
177 .Xr atoll_l 3 ,
178 .Xr mblen_l 3 ,
179 .Xr mbstowcs_l 3 ,
180 .Xr mbtowc_l 3 ,
181 .Xr strtod_l 3 ,
182 .Xr strtof_l 3 ,
183 .Xr strtol_l 3 ,
184 .Xr strtold_l 3 ,
185 .Xr strtoll_l 3 ,
186 .Xr strtoul_l 3 ,
187 .Xr strtoull_l 3 ,
188 .Xr wcstombs_l 3 ,
189 .Xr wctomb_l 3
190 .It In string.h
191 .Xr strcoll_l 3 ,
192 .Xr strxfrm_l 3 ,
193 .Xr strcasecmp_l 3 ,
194 .Xr strcasestr_l 3 ,
195 .Xr strncasecmp_l 3
196 .It In time.h
197 .Xr strftime_l 3
198 .Xr strptime_l 3
199 .It In wchar.h
200 .Xr btowc_l 3 ,
201 .Xr fgetwc_l 3 ,
202 .Xr fgetws_l 3 ,
203 .Xr fputwc_l 3 ,
204 .Xr fputws_l 3 ,
205 .Xr fwprintf_l 3 ,
206 .Xr fwscanf_l 3 ,
207 .Xr getwc_l 3 ,
208 .Xr getwchar_l 3 ,
209 .Xr mbrlen_l 3 ,
210 .Xr mbrtowc_l 3 ,
211 .Xr mbsinit_l 3 ,
212 .Xr mbsnrtowcs_l 3 ,
213 .Xr mbsrtowcs_l 3 ,
214 .Xr putwc_l 3 ,
215 .Xr putwchar_l 3 ,
216 .Xr swprintf_l 3 ,
217 .Xr swscanf_l 3 ,
218 .Xr ungetwc_l 3 ,
219 .Xr vfwprintf_l 3 ,
220 .Xr vfwscanf_l 3 ,
221 .Xr vswprintf_l 3 ,
222 .Xr vswscanf_l 3 ,
223 .Xr vwprintf_l 3 ,
224 .Xr vwscanf_l 3 ,
225 .Xr wcrtomb_l 3 ,
226 .Xr wcscoll_l 3 ,
227 .Xr wcsftime_l 3 ,
228 .Xr wcsnrtombs_l 3 ,
229 .Xr wcsrtombs_l 3 ,
230 .Xr wcstod_l 3 ,
231 .Xr wcstof_l 3 ,
232 .Xr wcstol_l 3 ,
233 .Xr wcstold_l 3 ,
234 .Xr wcstoll_l 3 ,
235 .Xr wcstoul_l 3 ,
236 .Xr wcstoull_l 3 ,
237 .Xr wcswidth_l 3 ,
238 .Xr wcsxfrm_l 3 ,
239 .Xr wctob_l 3 ,
240 .Xr wcwidth_l 3 ,
241 .Xr wprintf_l 3 ,
242 .Xr wscanf_l 3
243 .It In wctype.h
244 .Xr iswblank_l 3 ,
245 .Xr iswhexnumber_l 3 ,
246 .Xr iswideogram_l 3 ,
247 .Xr iswnumber_l 3 ,
248 .Xr iswphonogram_l 3 ,
249 .Xr iswrune_l 3 ,
250 .Xr iswspecial_l 3 ,
251 .Xr nextwctype_l 3 ,
252 .Xr towctrans_l 3 ,
253 .Xr wctrans_l 3
254 .It In xlocale.h
255 .Xr localeconv_l 3
256 .El
257 .Sh STANDARDS
258 The functions
259 conform to
260 .St -p1003.1-2008 .
261 .Sh HISTORY
262 The xlocale APIs first appeared in Darwin 8.0.
263 This implementation was written by David Chisnall,
264 under sponsorship from the
265 .Fx
266 Foundation and first appeared in
267 .Fx 9.1 .
268 .Sh CAVEATS
269 The
270 .Xr setlocale 3
271 function, and others in the family, refer to the global locale.
272 Other functions that depend on the locale, however,
273 will take the thread-local locale if one has been set.
274 This means that the idiom of setting the locale using
275 .Xr setlocale 3 ,
276 calling a locale-dependent function,
277 and then restoring the locale will not
278 have the expected behavior if the current thread has had a locale set using
279 .Xr uselocale 3 .
280 You should avoid this idiom and prefer to use the
281 .Fa _l
282 suffixed versions instead.