locale.h revision 1.4 1 /*
2 * Copyright (c) 1991 The Regents of the University of California.
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright
11 * notice, this list of conditions and the following disclaimer in the
12 * documentation and/or other materials provided with the distribution.
13 * 3. All advertising materials mentioning features or use of this software
14 * must display the following acknowledgement:
15 * This product includes software developed by the University of
16 * California, Berkeley and its contributors.
17 * 4. Neither the name of the University nor the names of its contributors
18 * may be used to endorse or promote products derived from this software
19 * without specific prior written permission.
20 *
21 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
22 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24 * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
25 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
26 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
27 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
28 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
29 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
30 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
31 * SUCH DAMAGE.
32 *
33 * from: @(#)locale.h 5.2 (Berkeley) 2/24/91
34 * $Id: locale.h,v 1.4 1994/05/25 01:14:14 jtc Exp $
35 */
36
37 #ifndef _LOCALE_H_
38 #define _LOCALE_H_
39
40 struct lconv {
41 char *decimal_point;
42 char *thousands_sep;
43 char *grouping;
44 char *int_curr_symbol;
45 char *currency_symbol;
46 char *mon_decimal_point;
47 char *mon_thousands_sep;
48 char *mon_grouping;
49 char *positive_sign;
50 char *negative_sign;
51 char int_frac_digits;
52 char frac_digits;
53 char p_cs_precedes;
54 char p_sep_by_space;
55 char n_cs_precedes;
56 char n_sep_by_space;
57 char p_sign_posn;
58 char n_sign_posn;
59 };
60
61 #ifndef NULL
62 #define NULL 0
63 #endif
64
65 #define LC_ALL 0
66 #define LC_COLLATE 1
67 #define LC_CTYPE 2
68 #define LC_MONETARY 3
69 #define LC_NUMERIC 4
70 #define LC_TIME 5
71 #define LC_MESSAGES 6
72
73 #define _LC_LAST 7 /* marks end */
74
75 #include <sys/cdefs.h>
76
77 __BEGIN_DECLS
78 struct lconv *localeconv __P((void));
79 char *setlocale __P((int, const char *));
80 __END_DECLS
81
82
83 #ifdef _LOCALE_PRIVATE
84
85 #include <sys/param.h>
86 #include <sys/types.h>
87
88 #define _LOCALE_MAGIC 0x12345678
89
90
91 /* On disk structure of LC_MONETARY locale data */
92 typedef struct
93 {
94 u_long magic;
95 u_short len;
96
97 u_short int_curr_symbol_off;
98 u_short currency_symbol_off;
99 u_short mon_decimal_point_off;
100 u_short mon_thousands_sep_off;
101 u_short mon_grouping_off;
102 u_short positive_sign_off;
103 u_short negative_sign_off;
104 char int_frac_digits;
105 char frac_digits;
106 char p_cs_precedes;
107 char p_sep_by_space;
108 char n_cs_precedes;
109 char n_sep_by_space;
110 char p_sign_posn;
111 char n_sign_posn;
112 } _MonetaryLocaleHeader;
113
114 /* In core structure of LC_MONETARY locale data */
115 typedef struct
116 {
117 char *int_curr_symbol;
118 char *currency_symbol;
119 char *mon_decimal_point;
120 char *mon_thousands_sep;
121 char *mon_grouping;
122 char *positive_sign;
123 char *negative_sign;
124 char int_frac_digits;
125 char frac_digits;
126 char p_cs_precedes;
127 char p_sep_by_space;
128 char n_cs_precedes;
129 char n_sep_by_space;
130 char p_sign_posn;
131 char n_sign_posn;
132
133 char data[0];
134 } _MonetaryLocale;
135
136 extern const _MonetaryLocale *_CurrentMonetaryLocale;
137 extern const _MonetaryLocale _DefaultMonetaryLocale;
138
139
140 /* On disk structure of LC_NUMERIC locale data */
141 typedef struct
142 {
143 u_long magic;
144 u_short len;
145
146 u_short decimal_point_off;
147 u_short thousands_sep_off;
148 u_short grouping_off;
149 } _NumericLocaleHeader;
150
151 /* In core structure of LC_NUMERIC locale data */
152 typedef struct
153 {
154 const char *decimal_point;
155 const char *thousands_sep;
156 const char *grouping;
157
158 char data[0];
159 } _NumericLocale;
160
161 extern const _NumericLocale *_CurrentNumericLocale;
162 extern const _NumericLocale _DefaultNumericLocale;
163
164
165 /* On disk structure of LC_TIME locale data */
166 typedef struct
167 {
168 u_long magic; /* magic number */
169 u_short len; /* len of variable-size data after hdr */
170
171 u_short abday_off[7]; /* offsets of strings in data block */
172 u_short day_off[7];
173 u_short abmon_off[12];
174 u_short mon_off[12];
175 u_short am_pm_off[2];
176 u_short d_t_fmt_off;
177 u_short d_fmt_off;
178 u_short t_fmt_off;
179 u_short t_fmt_ampm_off;
180 } _TimeLocaleHeader;
181
182 /* In core structure of LC_TIME locale data */
183 typedef struct {
184 const char *abday[7];
185 const char *day[7];
186 const char *abmon[12];
187 const char *mon[12];
188 const char *am_pm[2];
189 const char *d_t_fmt;
190 const char *d_fmt;
191 const char *t_fmt;
192 const char *t_fmt_ampm;
193
194 char data[0];
195 } _TimeLocale;
196
197 extern const _TimeLocale *_CurrentTimeLocale;
198 extern const _TimeLocale _DefaultTimeLocale;
199
200 #endif /* _LOCALE_PRIVATE */
201
202 #endif /* _LOCALE_H_ */
203