1 '\" te 2 .\" 3 .\" This file and its contents are supplied under the terms of the 4 .\" Common Development and Distribution License ("CDDL"), version 1.0. 5 .\" You may only use this file in accordance with the terms of version 6 .\" 1.0 of the CDDL. 7 .\" 8 .\" A full copy of the text of the CDDL should have accompanied this 9 .\" source. A copy of the CDDL is also available via the Internet at 10 .\" http://www.illumos.org/license/CDDL. 11 .\" 12 .\" 13 .\" Copyright (c) 2014 Joyent, Inc. All rights reserved. 14 .\" 15 .TH NEWLOCALE 3C "Jun 11, 2014" 16 17 .SH NAME 18 19 duplocale, freelocale, newlocale \- create, duplicate, and destroy locale objects 20 21 .SH SYNOPSIS 22 23 .LP 24 .nf 25 #include <locale.h> 26 27 .BI "locale_t newlocale(int " category_mask, " const char *" locale, 28 .BI " locale_t " base ); 29 .LP 30 .BI "locale_t duplocale(locale_t " loc ); 31 .LP 32 .BI "void freelocale(locale_t " loc ); 33 34 .SH DESCRIPTION 35 .LP 36 These functions manipulate locale objects that can be used 37 .BR uselocale (3C) 38 and functions that take arguments of type 39 .BR locale_t . 40 41 .LP 42 The function 43 .I newlocale 44 can be used to create a new locale object. It can also be used to modify an 45 existing locale object, the new locale object will be a replacement for the 46 modified locale object. To create a new locale, the argument 47 .I base 48 should be passed the special argument 49 .RB ( locale_t )0. 50 This will use a copy of the current global locale as a starting point. To modify 51 an existing locale object, it should be passed in as the argument 52 .IR base . 53 The new locale object is constructed by taking the categories specified in 54 .I category_mask 55 from the locale specified by the string 56 .IR locale , 57 and filling in the remaining categories from the locale 58 .IR base . 59 When 60 .B newlocale 61 returns, callers must no longer use 62 .IR base 63 and assume that 64 .BR freelocale (3C) 65 has been called on it. In addition to locales defined on the system, the 66 following three locales may always be passed in as the string 67 .IR locale : 68 69 .sp 70 .ne 2 71 .na 72 "C" 73 .ad 74 .sp .6 75 .RS 4n 76 Specifies the traditional UNIX system behavior. 77 .RE 78 79 .sp 80 .ne 2 81 .na 82 "POSIX" 83 .ad 84 .sp .6 85 .RS 4n 86 An alternate name fo the locale "C". 87 .RE 88 89 .sp 90 .ne 2 91 .na 92 "" 93 .ad 94 .sp .6 95 .RS 4n 96 Indicates that the locale should be processed based in the values in the 97 environment. See 98 .BR setlocale "(3C) and " environ (5) 99 for more information. 100 .RE 101 102 103 104 .LP 105 The value of 106 .I category_mask 107 is a bitwise-inclusive or of the following macros which correspond to categories 108 as defined in 109 .BR locale "(5) and " environ" (5): 110 111 .sp 112 .ne 2 113 .na 114 LC_CTYPE_MASK 115 .ad 116 .sp .6 117 .RS 4n 118 Character classification and case conversion. 119 .RE 120 121 .sp 122 .ne 2 123 .na 124 LC_NUMERIC_MASK 125 .ad 126 .sp .6 127 .RS 4n 128 Numeric formatting. 129 .RE 130 131 .sp 132 .ne 2 133 .na 134 LC_TIME_MASK 135 .ad 136 .sp .6 137 .RS 4n 138 Date and time formatting. 139 .RE 140 141 .sp 142 .ne 2 143 .na 144 LC_COLLATE_MASK 145 .ad 146 .sp .6 147 .RS 4n 148 Collation order. 149 .RE 150 151 .sp 152 .ne 2 153 .na 154 LC_MONETARY_MASK 155 .ad 156 .sp .6 157 .RS 4n 158 Monetary formating. 159 .RE 160 161 .sp 162 .ne 2 163 .na 164 LC_MESSAGES_MASK 165 .ad 166 .sp .6 167 .RS 4n 168 Formats of informative and diagnostic messages and interactive responses. 169 .RE 170 171 .sp 172 .ne 2 173 .na 174 LC_ALL_MASK 175 .ad 176 .sp .6 177 .RS 4n 178 Instructs that all the categories defined above, be used. 179 .RE 180 181 .LP 182 The function 183 .B duplocale() 184 duplicates the locale object specified by 185 .IR loc . 186 If the locale object passed is 187 .BR LC_GLOBAL_LOCALE , 188 .B duplocale() 189 creates a copy of the current global locale as defined through calls to 190 .BR setlocale (3C). 191 192 .LP 193 The function 194 .B freelocale() 195 removes and releases all resources associated with the locale object 196 .IR loc . 197 Programs must not call 198 .B freelocale() 199 on 200 .BR LC_GLOBAL_LOCALE . 201 202 .SH RETURN VALUES 203 204 On success, the functions 205 .B newlocale() 206 and 207 .B duplocale() 208 return a new locale object that can be used with functions that take a 209 .BR locale_t . 210 Locale objects created this way should be freed with 211 .BR freelocale() . 212 On error, the functions 213 .B newlocale() 214 and 215 .B duplocale() 216 return 217 .BR (locale_t) 0 218 and 219 .B errno 220 is set to indicate the error. The 221 .B freelocale() 222 function does not set 223 .B errno. 224 225 .SH ERRORS 226 .LP 227 The 228 .B newlocale() 229 and 230 .B duplocale() 231 functions will fail if: 232 .sp 233 .ne 2 234 .na 235 .B ENOMEM 236 .ad 237 .RS 10n 238 Insufficient memory was available to create the locale object or to load the 239 requested locale data. 240 .RE 241 242 .LP 243 The 244 .B newlocale() 245 function will fail if: 246 .sp 247 .ne 2 248 .na 249 .B EINVAL 250 .ad 251 .RS 10n 252 An unknown bit is specified in 253 .IR category_mask . 254 .RE 255 .sp 256 .ne 2 257 .na 258 .B ENOENT 259 .ad 260 .RS 10n 261 Locale data was not found for a category specified in 262 .IR category_mask . 263 .RE 264 265 .SH ATTRIBUTES 266 .sp 267 .TS 268 box; 269 c | c 270 l | l . 271 ATTRIBUTE TYPE ATTRIBUTE VALUE 272 _ 273 Interface Stability Standard 274 _ 275 MT-Level Safe 276 .TE 277 278 .SH SEE ALSO 279 .BR locale (1), 280 .BR setlocale (3C), 281 .BR uselocale (3C), 282 .BR environ (5), 283 .BR locale (5)