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 94 extern char * setlocale(/* int category, const char *locale */); 95 extern struct lconv * localeconv(/* void */); 96 #ifndef _POSIX_SOURCE 97 extern struct dtconv * localdtconv(); 98 #endif 99 100 /* 101 * Numeric and monetary conversion information. 102 */ 103 struct 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 */ 128 struct 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 */ 144 struct 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