1 /*        $NetBSD: locale.h,v 1.28 2016/04/29 16:26:48 joerg Exp $    */
2 
3 /*
4  * Copyright (c) 1991, 1993
5  *        The Regents of the University of California.  All rights reserved.
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  * 3. Neither the name of the University nor the names of its contributors
16  *    may be used to endorse or promote products derived from this software
17  *    without specific prior written permission.
18  *
19  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
20  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
22  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
23  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
24  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
25  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
26  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
27  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
28  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
29  * SUCH DAMAGE.
30  *
31  *        @(#)locale.h        8.1 (Berkeley) 6/2/93
32  */
33 
34 #ifndef _LOCALE_H_
35 #define _LOCALE_H_
36 
37 #include <sys/featuretest.h>
38 
39 struct lconv {
40           char      *decimal_point;
41           char      *thousands_sep;
42           char      *grouping;
43           char      *int_curr_symbol;
44           char      *currency_symbol;
45           char      *mon_decimal_point;
46           char      *mon_thousands_sep;
47           char      *mon_grouping;
48           char      *positive_sign;
49           char      *negative_sign;
50           char      int_frac_digits;
51           char      frac_digits;
52           char      p_cs_precedes;
53           char      p_sep_by_space;
54           char      n_cs_precedes;
55           char      n_sep_by_space;
56           char      p_sign_posn;
57           char      n_sign_posn;
58           char      int_p_cs_precedes;
59           char      int_n_cs_precedes;
60           char      int_p_sep_by_space;
61           char      int_n_sep_by_space;
62           char      int_p_sign_posn;
63           char      int_n_sign_posn;
64 };
65 
66 #include <sys/null.h>
67 
68 #define   LC_ALL              0
69 #define   LC_COLLATE          1
70 #define   LC_CTYPE  2
71 #define   LC_MONETARY         3
72 #define   LC_NUMERIC          4
73 #define   LC_TIME             5
74 #define LC_MESSAGES 6
75 
76 #define   _LC_LAST  7                   /* marks end */
77 
78 #include <sys/cdefs.h>
79 
80 #if (_POSIX_C_SOURCE - 0) >= 200809L || defined(_NETBSD_SOURCE) || \
81     defined(__SETLOCALE_SOURCE__)
82 #  ifndef __LOCALE_T_DECLARED
83 typedef struct _locale                  *locale_t;
84 #  define __LOCALE_T_DECLARED
85 #  endif
86 #endif
87 
88 __BEGIN_DECLS
89 struct lconv *localeconv(void);
90 char *setlocale(int, const char *) __RENAME(__setlocale50);
91 
92 #if (_POSIX_C_SOURCE - 0) >= 200809L || defined(_NETBSD_SOURCE)
93 #  ifndef __LOCALE_T_DECLARED
94 typedef struct _locale                  *locale_t;
95 #  define __LOCALE_T_DECLARED
96 #  endif
97 #define   LC_ALL_MASK                   ((int)~0)
98 #define   LC_COLLATE_MASK               ((int)(1 << LC_COLLATE))
99 #define   LC_CTYPE_MASK                 ((int)(1 << LC_CTYPE))
100 #define   LC_MONETARY_MASK    ((int)(1 << LC_MONETARY))
101 #define   LC_NUMERIC_MASK               ((int)(1 << LC_NUMERIC))
102 #define   LC_TIME_MASK                  ((int)(1 << LC_TIME))
103 #define   LC_MESSAGES_MASK    ((int)(1 << LC_MESSAGES))
104 locale_t  duplocale(locale_t);
105 void                freelocale(locale_t);
106 struct lconv        *localeconv_l(locale_t);
107 locale_t  newlocale(int, const char *, locale_t);
108 
109 extern                     struct _locale         _lc_global_locale;
110 #define LC_GLOBAL_LOCALE      (&_lc_global_locale)
111 #endif /* _POSIX_SOURCE >= 200809 || _NETBSD_SOURCE */
112 
113 #if defined(_NETBSD_SOURCE)
114 extern                     const struct _locale _lc_C_locale;
115 #define LC_C_LOCALE           ((locale_t)__UNCONST(&_lc_C_locale))
116 #endif
117 __END_DECLS
118 
119 #endif /* _LOCALE_H_ */
120