1 /* 2 * Copyright (c) 1991, 1993 3 * The Regents of the University of California. 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. Neither the name of the University nor the names of its contributors 14 * may be used to endorse or promote products derived from this software 15 * without specific prior written permission. 16 * 17 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 18 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20 * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 21 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 22 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 23 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 24 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 25 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 26 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 27 * SUCH DAMAGE. 28 * 29 * @(#)locale.h 8.1 (Berkeley) 6/2/93 30 * $FreeBSD$ 31 */ 32 33 #ifndef _LOCALE_H_ 34 #define _LOCALE_H_ 35 36 #include <sys/_null.h> 37 38 struct lconv { 39 char *decimal_point; 40 char *thousands_sep; 41 char *grouping; 42 char *int_curr_symbol; 43 char *currency_symbol; 44 char *mon_decimal_point; 45 char *mon_thousands_sep; 46 char *mon_grouping; 47 char *positive_sign; 48 char *negative_sign; 49 char int_frac_digits; 50 char frac_digits; 51 char p_cs_precedes; 52 char p_sep_by_space; 53 char n_cs_precedes; 54 char n_sep_by_space; 55 char p_sign_posn; 56 char n_sign_posn; 57 char int_p_cs_precedes; 58 char int_n_cs_precedes; 59 char int_p_sep_by_space; 60 char int_n_sep_by_space; 61 char int_p_sign_posn; 62 char int_n_sign_posn; 63 }; 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(void); 79 char *setlocale(int, const char *); 80 __END_DECLS 81 82 #if __POSIX_VISIBLE >= 200809 83 84 #define LC_COLLATE_MASK (1<<0) 85 #define LC_CTYPE_MASK (1<<1) 86 #define LC_MESSAGES_MASK (1<<2) 87 #define LC_MONETARY_MASK (1<<3) 88 #define LC_NUMERIC_MASK (1<<4) 89 #define LC_TIME_MASK (1<<5) 90 #define LC_ALL_MASK (LC_COLLATE_MASK | LC_CTYPE_MASK | LC_MESSAGES_MASK | \ 91 LC_MONETARY_MASK | LC_NUMERIC_MASK | LC_TIME_MASK) 92 93 #define LC_GLOBAL_LOCALE ((locale_t)-1) 94 95 __BEGIN_DECLS 96 97 typedef struct _xlocale *locale_t; 98 /** 99 * Creates a new locale. 100 */ 101 locale_t newlocale(int mask, const char *locale, locale_t base); 102 103 /** 104 * Returns an identical duplicate of the passed locale. The returned locale 105 * must be freed with freelocale(). The returned locale will share components 106 * with the original. 107 */ 108 locale_t duplocale(locale_t base); 109 /* 110 * Free a locale_t. This is quite a poorly named function. It actually 111 * disclaims a reference to a locale_t, rather than freeing it. 112 */ 113 int freelocale(locale_t loc); 114 115 /* 116 * Returns the name of the locale for a particular component of a locale_t. 117 */ 118 const char *querylocale(int mask, locale_t loc); 119 120 /* 121 * Installs the specified locale_t as this thread's locale. 122 */ 123 locale_t uselocale(locale_t loc); 124 125 __END_DECLS 126 127 #endif /* __POSIX_VISIBLE >= 200809 */ 128 129 130 #endif /* _LOCALE_H_ */ 131