1/*
2 * CDDL HEADER START
3 *
4 * The contents of this file are subject to the terms of the
5 * Common Development and Distribution License, Version 1.0 only
6 * (the "License").  You may not use this file except in compliance
7 * with the License.
8 *
9 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10 * or http://www.opensolaris.org/os/licensing.
11 * See the License for the specific language governing permissions
12 * and limitations under the License.
13 *
14 * When distributing Covered Code, include this CDDL HEADER in each
15 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16 * If applicable, add the following below this CDDL HEADER, with the
17 * fields enclosed by brackets "[]" replaced with your own identifying
18 * information: Portions Copyright [yyyy] [name of copyright owner]
19 *
20 * CDDL HEADER END
21 */
22/*
23 * Copyright 1988 Sun Microsystems, Inc.  All rights reserved.
24 * Use is subject to license terms.
25 */
26
27#ifndef	__locale_h
28#define	__locale_h
29
30#pragma ident	"%Z%%M%	%I%	%E% SMI"
31
32/*
33 * Locale indices.
34 */
35
36#ifndef	NULL
37#define	NULL		0
38#endif
39
40#define	LC_ALL		0
41#define	LC_CTYPE	1
42#define	LC_NUMERIC	2
43#define	LC_TIME		3
44#define	LC_MONETARY	4
45#ifndef	_POSIX_SOURCE
46#define	LANGINFO	5
47#endif
48#define	LC_COLLATE	6
49#define	LC_MESSAGES	7
50
51#ifndef	_POSIX_SOURCE
52#define	MAXLOCALE	8
53
54#define	ON	1
55#define	OFF	0
56/* The maximum number of characters in the locale name */
57
58#define	MAXLOCALENAME   14
59
60/* The maximum number of substitute mappings in LC_COLLATE table */
61
62#define	MAXSUBS   	64
63
64/* Max width of domain name */
65
66#define	MAXDOMAIN	255
67
68/* Max width of format string for message domains */
69
70#define	MAXFMTS		32
71
72/* Max width of the message string */
73
74#define	MAXMSGSTR	255
75
76/* The directory where category components are kept */
77
78#define	LOCALE_DIR	"/usr/share/lib/locale/"
79
80/* The directory that is private to an individual workstation user */
81
82#define	PRIVATE_LOCALE_DIR	"/etc/locale/"
83
84/* The name of the file that contains default locale */
85
86#define	DEFAULT_LOC		".default"
87
88
89/* size of "ctype" */
90
91#define	CTYPE_SIZE	514
92#endif	/* _POSIX_SOURCE */
93
94extern char *		setlocale(/* int category, const char *locale */);
95extern struct lconv *	localeconv(/* void */);
96#ifndef	_POSIX_SOURCE
97extern struct dtconv *	localdtconv();
98#endif
99
100/*
101 * Numeric and monetary conversion information.
102 */
103struct lconv {
104	char	*decimal_point;	/* decimal point character */
105	char	*thousands_sep;	/* thousands separator character */
106	char	*grouping;	/* grouping of digits */
107	char	*int_curr_symbol;	/* international currency symbol */
108	char	*currency_symbol;	/* local currency symbol */
109	char	*mon_decimal_point;	/* monetary decimal point character */
110	char	*mon_thousands_sep;	/* monetary thousands separator */
111	char	*mon_grouping;	/* monetary grouping of digits */
112	char	*positive_sign;	/* monetary credit symbol */
113	char	*negative_sign;	/* monetary debit symbol */
114	char	int_frac_digits; /* intl monetary number of fractional digits */
115	char	frac_digits;	/* monetary number of fractional digits */
116	char	p_cs_precedes;	/* true if currency symbol precedes credit */
117	char	p_sep_by_space;	/* true if space separates c.s.  from credit */
118	char	n_cs_precedes;	/* true if currency symbol precedes debit */
119	char	n_sep_by_space;	/* true if space separates c.s.  from debit */
120	char	p_sign_posn;	/* position of sign for credit */
121	char	n_sign_posn;	/* position of sign for debit */
122};
123
124#ifndef	_POSIX_SOURCE
125/*
126 * Date and time conversion information.
127 */
128struct dtconv {
129	char	*abbrev_month_names[12];	/* abbreviated month names */
130	char	*month_names[12];	/* full month names */
131	char	*abbrev_weekday_names[7];	/* abbreviated weekday names */
132	char	*weekday_names[7];	/* full weekday names */
133	char	*time_format;	/* time format */
134	char	*sdate_format;	/* short date format */
135	char	*dtime_format;	/* date/time format */
136	char	*am_string;	/* AM string */
137	char	*pm_string;	/* PM string */
138	char	*ldate_format;	/* long date format */
139};
140
141/*
142 * Langinfo
143 */
144struct langinfo {
145	char *yesstr;	/* yes string */
146	char *nostr;	/* nostr */
147};
148
149/*
150 * NLS nl_init
151 */
152#define	valid(ptr) (ptr != (char *) NULL)
153#define	nl_init(lang) ((valid(lang) && *lang) ? \
154    (valid(setlocale (LC_ALL, lang) ) ? 0 : -1) \
155    : -1)
156#endif	/* _POSIX_SOURCE */
157
158#endif	/* !__locale_h */
159