Print this page
2964 need POSIX 2008 locale object support
Reviewed by: Robert Mustacchi <rm@joyent.com>
Split |
Close |
Expand all |
Collapse all |
--- old/usr/src/head/locale.h
+++ new/usr/src/head/locale.h
1 1 /*
2 2 * CDDL HEADER START
3 3 *
4 4 * The contents of this file are subject to the terms of the
5 5 * Common Development and Distribution License, Version 1.0 only
6 6 * (the "License"). You may not use this file except in compliance
7 7 * with the License.
8 8 *
9 9 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10 10 * or http://www.opensolaris.org/os/licensing.
11 11 * See the License for the specific language governing permissions
12 12 * and limitations under the License.
13 13 *
14 14 * When distributing Covered Code, include this CDDL HEADER in each
15 15 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16 16 * If applicable, add the following below this CDDL HEADER, with the
↓ open down ↓ |
16 lines elided |
↑ open up ↑ |
17 17 * fields enclosed by brackets "[]" replaced with your own identifying
18 18 * information: Portions Copyright [yyyy] [name of copyright owner]
19 19 *
20 20 * CDDL HEADER END
21 21 */
22 22 /*
23 23 * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
24 24 * Use is subject to license terms.
25 25 */
26 26
27 +/*
28 + * Copyright 2013 Garrett D'Amore <garrett@damore.org>
29 + *
30 + * Portions of this file developed by Garrett D'Amore are licensed
31 + * under the terms of the Common Development and Distribution License (CDDL)
32 + * version 1.0 only. The use of subsequent versions of the License are
33 + * is specifically prohibited unless those terms are not in conflict with
34 + * version 1.0 of the License. You can find this license on-line at
35 + * http://www.illumos.org/license/CDDL
36 + */
37 +
27 38 #ifndef _LOCALE_H
28 39 #define _LOCALE_H
29 40
30 -#pragma ident "%Z%%M% %I% %E% SMI"
31 -
32 41 #include <iso/locale_iso.h>
33 42
34 43 #if (!defined(_STRICT_STDC) && !defined(__XOPEN_OR_POSIX)) || \
35 44 defined(__EXTENSIONS__)
36 45 #include <libintl.h>
37 46 #endif
38 47
39 48 /*
40 49 * Allow global visibility for symbols defined in
41 50 * C++ "std" namespace in <iso/locale_iso.h>.
42 51 */
43 52 #if __cplusplus >= 199711L
44 53 using std::lconv;
45 54 using std::setlocale;
46 55 using std::localeconv;
47 56 #endif
48 57
↓ open down ↓ |
7 lines elided |
↑ open up ↑ |
49 58 #ifdef __cplusplus
50 59 extern "C" {
51 60 #endif
52 61
53 62 #define _LastCategory LC_MESSAGES /* This must be last category */
54 63
55 64 #define _ValidCategory(c) \
56 65 (((int)(c) >= LC_CTYPE) && ((int)(c) <= _LastCategory) || \
57 66 ((int)c == LC_ALL))
58 67
68 +
69 +#if defined(_XPG7) || !defined(_STRICT_SYMBOLS)
70 +
71 +/*
72 + * These were added in POSIX 2008 as part of the newlocale() specification.
73 + */
74 +#define LC_CTYPE_MASK (1 << LC_CTYPE)
75 +#define LC_NUMERIC_MASK (1 << LC_NUMERIC)
76 +#define LC_TIME_MASK (1 << LC_TIME)
77 +#define LC_COLLATE_MASK (1 << LC_COLLATE)
78 +#define LC_MONETARY_MASK (1 << LC_MONETARY)
79 +#define LC_MESSAGES_MASK (1 << LC_MESSAGES)
80 +#define LC_ALL_MASK (0x3f)
81 +
82 +#ifndef _LOCALE_T
83 +#define _LOCALE_T
84 +typedef struct locale *locale_t;
85 +#endif
86 +
87 +#if defined(__STDC__)
88 +locale_t duplocale(locale_t);
89 +void freelocale(locale_t);
90 +locale_t newlocale(int, const char *, locale_t);
91 +locale_t uselocale(locale_t);
92 +#else /* __STDC__ */
93 +locale_t duplocale();
94 +void freelocale();
95 +locale_t newlocale();
96 +locale_t uselocale();
97 +#endif /* __STDC__ */
98 +
99 +#define LC_GLOBAL_LOCALE __global_locale
100 +extern locale_t __global_locale;
101 +
102 +#endif /* defined(_XPG7) || !defined(_STRICT_SYMBOLS) */
103 +
59 104 #ifdef __cplusplus
60 105 }
61 106 #endif
62 107
63 108 #endif /* _LOCALE_H */
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX