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