locale.h revision 227753
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: head/include/locale.h 227753 2011-11-20 14:45:42Z theraven $ 31 */ 32 33#ifndef _LOCALE_H_ 34#define _LOCALE_H_ 35 36#include <sys/_null.h> 37 38struct 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 78struct lconv *localeconv(void); 79char *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 97typedef struct _xlocale *locale_t; 98/** 99 * Creates a new locale. 100 */ 101locale_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 */ 108locale_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 */ 113int freelocale(locale_t loc); 114 115/* 116 * Returns the name of the locale for a particular component of a locale_t. 117 */ 118const char *querylocale(int mask, locale_t loc); 119 120/* 121 * Installs the specified locale_t as this thread's locale. 122 */ 123locale_t uselocale(locale_t loc); 124 125__END_DECLS 126 127#endif /* __POSIX_VISIBLE >= 200809 */ 128 129 130#endif /* _LOCALE_H_ */ 131