add directory gnu

This commit is contained in:
gohigh
2024-02-19 00:24:47 -05:00
parent 32616db5a4
commit a40f4cadb0
5086 changed files with 1860970 additions and 0 deletions

View File

@@ -0,0 +1,7 @@
#include <ansidecl.h>
#include <localeinfo.h>
#include <stddef.h>
CONST struct collate_info __collate_C = { 0, NULL, NULL, NULL };
CONST struct collate_info *_collate_info = &__collate_C;

View File

@@ -0,0 +1,14 @@
#include <ansidecl.h>
#include <localeinfo.h>
#include <stddef.h>
extern CONST struct ctype_ctype_info __ctype_ctype_C;
extern CONST struct ctype_mbchar_info __ctype_mbchar_C;
CONST struct ctype_info __ctype_C =
{
(struct ctype_ctype_info*)&__ctype_ctype_C,
(struct ctype_mbchar_info*) &__ctype_mbchar_C
};
CONST struct ctype_info *_ctype_info = &__ctype_C;

View File

@@ -0,0 +1,793 @@
#include <ansidecl.h>
#include <localeinfo.h>
#include <stddef.h>
#include <ctype.h>
CONST unsigned short int __ctype_b_C[] =
{
0,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl|_ISspace|_ISblank,
_IScntrl|_ISspace,
_IScntrl|_ISspace,
_IScntrl|_ISspace,
_IScntrl|_ISspace,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_ISspace|_NOgraph|_ISblank,
_ISpunct,
_ISpunct,
_ISpunct,
_ISpunct,
_ISpunct,
_ISpunct,
_ISpunct,
_ISpunct,
_ISpunct,
_ISpunct,
_ISpunct,
_ISpunct,
_ISpunct,
_ISpunct,
_ISpunct,
_ISdigit|_IShex,
_ISdigit|_IShex,
_ISdigit|_IShex,
_ISdigit|_IShex,
_ISdigit|_IShex,
_ISdigit|_IShex,
_ISdigit|_IShex,
_ISdigit|_IShex,
_ISdigit|_IShex,
_ISdigit|_IShex,
_ISpunct,
_ISpunct,
_ISpunct,
_ISpunct,
_ISpunct,
_ISpunct,
_ISpunct,
_ISupper|_IShex,
_ISupper|_IShex,
_ISupper|_IShex,
_ISupper|_IShex,
_ISupper|_IShex,
_ISupper|_IShex,
_ISupper,
_ISupper,
_ISupper,
_ISupper,
_ISupper,
_ISupper,
_ISupper,
_ISupper,
_ISupper,
_ISupper,
_ISupper,
_ISupper,
_ISupper,
_ISupper,
_ISupper,
_ISupper,
_ISupper,
_ISupper,
_ISupper,
_ISupper,
_ISpunct,
_ISpunct,
_ISpunct,
_ISpunct,
_ISpunct,
_ISpunct,
_ISlower|_IShex,
_ISlower|_IShex,
_ISlower|_IShex,
_ISlower|_IShex,
_ISlower|_IShex,
_ISlower|_IShex,
_ISlower,
_ISlower,
_ISlower,
_ISlower,
_ISlower,
_ISlower,
_ISlower,
_ISlower,
_ISlower,
_ISlower,
_ISlower,
_ISlower,
_ISlower,
_ISlower,
_ISlower,
_ISlower,
_ISlower,
_ISlower,
_ISlower,
_ISlower,
_ISpunct,
_ISpunct,
_ISpunct,
_ISpunct,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
_IScntrl,
};
CONST unsigned char __ctype_tolower_C[] =
{
'\377',
'\000',
'\001',
'\002',
'\003',
'\004',
'\005',
'\006',
'\007',
'\010',
'\011',
'\012',
'\013',
'\014',
'\015',
'\016',
'\017',
'\020',
'\021',
'\022',
'\023',
'\024',
'\025',
'\026',
'\027',
'\030',
'\031',
'\032',
'\033',
'\034',
'\035',
'\036',
'\037',
'\040',
'!',
'"',
'#',
'$',
'%',
'&',
'\'',
'(',
')',
'*',
'+',
',',
'-',
'.',
'/',
'0',
'1',
'2',
'3',
'4',
'5',
'6',
'7',
'8',
'9',
':',
';',
'<',
'=',
'>',
'?',
'@',
'a',
'b',
'c',
'd',
'e',
'f',
'g',
'h',
'i',
'j',
'k',
'l',
'm',
'n',
'o',
'p',
'q',
'r',
's',
't',
'u',
'v',
'w',
'x',
'y',
'z',
'[',
'\\',
']',
'^',
'_',
'`',
'a',
'b',
'c',
'd',
'e',
'f',
'g',
'h',
'i',
'j',
'k',
'l',
'm',
'n',
'o',
'p',
'q',
'r',
's',
't',
'u',
'v',
'w',
'x',
'y',
'z',
'{',
'|',
'}',
'~',
'\177',
'\200',
'\201',
'\202',
'\203',
'\204',
'\205',
'\206',
'\207',
'\210',
'\211',
'\212',
'\213',
'\214',
'\215',
'\216',
'\217',
'\220',
'\221',
'\222',
'\223',
'\224',
'\225',
'\226',
'\227',
'\230',
'\231',
'\232',
'\233',
'\234',
'\235',
'\236',
'\237',
'\240',
'\241',
'\242',
'\243',
'\244',
'\245',
'\246',
'\247',
'\250',
'\251',
'\252',
'\253',
'\254',
'\255',
'\256',
'\257',
'\260',
'\261',
'\262',
'\263',
'\264',
'\265',
'\266',
'\267',
'\270',
'\271',
'\272',
'\273',
'\274',
'\275',
'\276',
'\277',
'\300',
'\301',
'\302',
'\303',
'\304',
'\305',
'\306',
'\307',
'\310',
'\311',
'\312',
'\313',
'\314',
'\315',
'\316',
'\317',
'\320',
'\321',
'\322',
'\323',
'\324',
'\325',
'\326',
'\327',
'\330',
'\331',
'\332',
'\333',
'\334',
'\335',
'\336',
'\337',
'\340',
'\341',
'\342',
'\343',
'\344',
'\345',
'\346',
'\347',
'\350',
'\351',
'\352',
'\353',
'\354',
'\355',
'\356',
'\357',
'\360',
'\361',
'\362',
'\363',
'\364',
'\365',
'\366',
'\367',
'\370',
'\371',
'\372',
'\373',
'\374',
'\375',
'\376',
'\377',
};
CONST unsigned char __ctype_toupper_C[] =
{
'\377',
'\000',
'\001',
'\002',
'\003',
'\004',
'\005',
'\006',
'\007',
'\010',
'\011',
'\012',
'\013',
'\014',
'\015',
'\016',
'\017',
'\020',
'\021',
'\022',
'\023',
'\024',
'\025',
'\026',
'\027',
'\030',
'\031',
'\032',
'\033',
'\034',
'\035',
'\036',
'\037',
'\040',
'!',
'"',
'#',
'$',
'%',
'&',
'\'',
'(',
')',
'*',
'+',
',',
'-',
'.',
'/',
'0',
'1',
'2',
'3',
'4',
'5',
'6',
'7',
'8',
'9',
':',
';',
'<',
'=',
'>',
'?',
'@',
'A',
'B',
'C',
'D',
'E',
'F',
'G',
'H',
'I',
'J',
'K',
'L',
'M',
'N',
'O',
'P',
'Q',
'R',
'S',
'T',
'U',
'V',
'W',
'X',
'Y',
'Z',
'[',
'\\',
']',
'^',
'_',
'`',
'A',
'B',
'C',
'D',
'E',
'F',
'G',
'H',
'I',
'J',
'K',
'L',
'M',
'N',
'O',
'P',
'Q',
'R',
'S',
'T',
'U',
'V',
'W',
'X',
'Y',
'Z',
'{',
'|',
'}',
'~',
'\177',
'\200',
'\201',
'\202',
'\203',
'\204',
'\205',
'\206',
'\207',
'\210',
'\211',
'\212',
'\213',
'\214',
'\215',
'\216',
'\217',
'\220',
'\221',
'\222',
'\223',
'\224',
'\225',
'\226',
'\227',
'\230',
'\231',
'\232',
'\233',
'\234',
'\235',
'\236',
'\237',
'\240',
'\241',
'\242',
'\243',
'\244',
'\245',
'\246',
'\247',
'\250',
'\251',
'\252',
'\253',
'\254',
'\255',
'\256',
'\257',
'\260',
'\261',
'\262',
'\263',
'\264',
'\265',
'\266',
'\267',
'\270',
'\271',
'\272',
'\273',
'\274',
'\275',
'\276',
'\277',
'\300',
'\301',
'\302',
'\303',
'\304',
'\305',
'\306',
'\307',
'\310',
'\311',
'\312',
'\313',
'\314',
'\315',
'\316',
'\317',
'\320',
'\321',
'\322',
'\323',
'\324',
'\325',
'\326',
'\327',
'\330',
'\331',
'\332',
'\333',
'\334',
'\335',
'\336',
'\337',
'\340',
'\341',
'\342',
'\343',
'\344',
'\345',
'\346',
'\347',
'\350',
'\351',
'\352',
'\353',
'\354',
'\355',
'\356',
'\357',
'\360',
'\361',
'\362',
'\363',
'\364',
'\365',
'\366',
'\367',
'\370',
'\371',
'\372',
'\373',
'\374',
'\375',
'\376',
'\377',
};
CONST struct ctype_ctype_info __ctype_ctype_C =
{
(unsigned short int *) __ctype_b_C,
(unsigned char *) __ctype_tolower_C,
(unsigned char *) __ctype_toupper_C
};

View File

@@ -0,0 +1,9 @@
#include <ansidecl.h>
#include <localeinfo.h>
#include <stddef.h>
CONST struct ctype_mbchar_info __ctype_mbchar_C =
{
0, NULL
};

View File

@@ -0,0 +1,22 @@
#include <ansidecl.h>
#include <localeinfo.h>
#include <stddef.h>
CONST struct monetary_info __monetary_C =
{
(char *) "", (char *) "",
(char *) "", (char *) "",
(char *) "",
(char *) "", (char *) "",
CHAR_MAX,
CHAR_MAX,
CHAR_MAX,
CHAR_MAX,
CHAR_MAX,
CHAR_MAX,
CHAR_MAX,
CHAR_MAX
};
CONST struct monetary_info *_monetary_info = &__monetary_C;

View File

@@ -0,0 +1,12 @@
#include <ansidecl.h>
#include <localeinfo.h>
#include <stddef.h>
CONST struct numeric_info __numeric_C =
{
(char *) ".", (char *) "",
(char *) "\177"
};
CONST struct numeric_info *_numeric_info = &__numeric_C;

View File

@@ -0,0 +1,12 @@
#include <ansidecl.h>
#include <localeinfo.h>
#include <stddef.h>
CONST struct response_info __response_C =
{
(char *) "[yY][[:alpha:]]",
(char *) "[nN][[:alpha:]]"
};
CONST struct response_info *_response_info = &__response_C;

View File

@@ -0,0 +1,25 @@
/* Built-in time information for `C' locale,
generated Thu Jan 1 00:00:00 1970 by li2c. */
#include <ansidecl.h>
#include <localeinfo.h>
#include <stddef.h>
CONST struct time_info __time_C =
{
{
(char *) "Sun", (char *) "Mon", (char *) "Tue", (char *) "Wed", (char *) "Thu", (char *) "Fri", (char *) "Sat", },
{
(char *) "Sunday", (char *) "Monday", (char *) "Tuesday", (char *) "Wednesday", (char *) "Thursday", (char *) "Friday", (char *) "Saturday", },
{
(char *) "Jan", (char *) "Feb", (char *) "Mar", (char *) "Apr", (char *) "May", (char *) "Jun", (char *) "Jul", (char *) "Aug", (char *) "Sep", (char *) "Oct", (char *) "Nov", (char *) "Dec", },
{
(char *) "January", (char *) "February", (char *) "March", (char *) "April", (char *) "May", (char *) "June", (char *) "July", (char *) "August", (char *) "September", (char *) "October", (char *) "November", (char *) "December", },
{ (char *) "AM", (char *) "PM" },
(char *) "%a %b %d %H:%M:%S %Y", (char *) "%m/%d/%y", (char *) "%H:%M:%S",
(char *) "GMT", (char *) ""
};
CONST struct time_info *_time_info = &__time_C;

View File

@@ -0,0 +1,31 @@
# Copyright (C) 1991, 1992 Free Software Foundation, Inc.
# This file is part of the GNU C Library.
# The GNU C Library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Library General Public License as
# published by the Free Software Foundation; either version 2 of the
# License, or (at your option) any later version.
# The GNU C Library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Library General Public License for more details.
# You should have received a copy of the GNU Library General Public
# License along with the GNU C Library; see the file COPYING.LIB. If
# not, write to the Free Software Foundation, Inc., 675 Mass Ave,
# Cambridge, MA 02139, USA.
#
# Makefile for locales.
#
subdir := locale
headers := locale.h localeinfo.h
routines := setlocale localeconv
aux := C-collate C-ctype C-ctype_ct C-ctype_mb \
C-monetary C-numeric C-response C-time
include ../Rules

View File

@@ -0,0 +1,95 @@
/* Copyright (C) 1991 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If
not, write to the Free Software Foundation, Inc., 675 Mass Ave,
Cambridge, MA 02139, USA. */
/*
* ANSI Standard: 4.4 LOCALIZATION <locale.h>
*/
#ifndef _LOCALE_H
#define _LOCALE_H 1
#include <features.h>
/* These are the possibilities for the first argument to setlocale.
Note that although they are bit masks, they cannot be OR'd together
to form a new argument to pass. They must be used one at a time. */
#define LC_COLLATE (1 << 0)
#define LC_CTYPE (1 << 1)
#define LC_MONETARY (1 << 2)
#define LC_NUMERIC (1 << 3)
#define LC_TIME (1 << 4)
#define LC_RESPONSE (1 << 5)
#define LC_ALL (LC_COLLATE|LC_CTYPE|LC_MONETARY|LC_NUMERIC|LC_TIME|\
LC_RESPONSE)
/* Structure giving information about numeric and monetary notation. */
struct lconv
{
/* Numeric (non-monetary) information. */
char *decimal_point; /* Decimal point character. */
char *thousands_sep; /* Thousands separator. */
/* Each element is the number of digits in each group;
elements with higher indices are farther left.
An element with value CHAR_MAX means that no further grouping is done.
An element with value 0 means that the previous element is used
for all groups farther left. */
char *grouping;
/* Monetary information. */
/* First three chars are a currency symbol from ISO 4217.
Fourth char is the separator. Fifth char is '\0'. */
char *int_curr_symbol;
char *currency_symbol; /* Local currency symbol. */
char *mon_decimal_point; /* Decimal point character. */
char *mon_thousands_sep; /* Thousands separator. */
char *mon_grouping; /* Like `grouping' element (above). */
char *positive_sign; /* Sign for positive values. */
char *negative_sign; /* Sign for negative values. */
char int_frac_digits; /* Int'l fractional digits. */
char frac_digits; /* Local fractional digits. */
/* 1 if currency_symbol precedes a positive value, 0 if succeeds. */
char p_cs_precedes;
/* 1 iff a space separates currency_symbol from a positive value. */
char p_sep_by_space;
/* 1 if currency_symbol precedes a negative value, 0 if succeeds. */
char n_cs_precedes;
/* 1 iff a space separates currency_symbol from a negative value. */
char n_sep_by_space;
/* Positive and negative sign positions:
0 Parentheses surround the quantity and currency_symbol.
1 The sign string precedes the quantity and currency_symbol.
2 The sign string succedes the quantity and currency_symbol.
3 The sign string immediately precedes the currency_symbol.
4 The sign string immediately succedes the currency_symbol. */
char p_sign_posn;
char n_sign_posn;
};
/* Set and/or return the current locale. */
extern char *EXFUN(setlocale, (int __category, CONST char *__locale));
/* Return the numeric/monetary information for the current locale. */
extern struct lconv *EXFUN(localeconv, (NOARGS));
#endif /* locale.h */

View File

@@ -0,0 +1,49 @@
/* Copyright (C) 1991 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 1, or (at your option)
any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with the GNU C Library; see the file COPYING. If not, write to
the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#include <ansidecl.h>
#include <localeinfo.h>
#include <locale.h>
/* Return monetary and numeric information about the current locale. */
struct lconv *
DEFUN_VOID(localeconv)
{
static struct lconv result;
result.decimal_point = (char *) _numeric_info->decimal_point;
result.thousands_sep = (char *) _numeric_info->thousands_sep;
result.grouping = (char *) _numeric_info->grouping;
result.int_curr_symbol = (char *) _monetary_info->int_curr_symbol;
result.currency_symbol = (char *) _monetary_info->currency_symbol;
result.mon_decimal_point = (char *) _monetary_info->mon_decimal_point;
result.mon_thousands_sep = (char *) _monetary_info->mon_thousands_sep;
result.mon_grouping = (char *) _monetary_info->mon_grouping;
result.positive_sign = (char *) _monetary_info->positive_sign;
result.negative_sign = (char *) _monetary_info->negative_sign;
result.frac_digits = _monetary_info->frac_digits;
result.p_cs_precedes = _monetary_info->p_cs_precedes;
result.p_sep_by_space = _monetary_info->p_sep_by_space;
result.n_cs_precedes = _monetary_info->p_cs_precedes;
result.n_sep_by_space = _monetary_info->n_sep_by_space;
result.p_sign_posn = _monetary_info->p_sign_posn;
result.n_sign_posn = _monetary_info->n_sign_posn;
return &result;
}

View File

@@ -0,0 +1,208 @@
/* Copyright (C) 1991 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If
not, write to the Free Software Foundation, Inc., 675 Mass Ave,
Cambridge, MA 02139, USA. */
/* Locale-specific information. */
#ifndef _LOCALEINFO_H
#define _LOCALEINFO_H 1
#define __need_size_t
#define __need_wchar_t
#include <stddef.h>
#include <limits.h>
/* Change these if the `wchar_t' type is changed. */
#define WCHAR_MAX ((wchar_t) UCHAR_MAX)
/* Used by multibyte char functions. */
typedef struct
{
char *string; /* Bytes. */
size_t len; /* # of bytes. */
long int shift; /* # of mb_char's to shift. */
} mb_char;
struct ctype_mbchar_info
{
size_t mb_max; /* Max MB char length. */
mb_char *mb_chars; /* MB chars. */
};
struct ctype_ctype_info
{
unsigned short int *ctype_b; /* Characteristics. */
unsigned char *ctype_tolower; /* Case mappings. */
unsigned char *ctype_toupper; /* Case mappings. */
};
struct ctype_info
{
struct ctype_ctype_info *ctype;
struct ctype_mbchar_info *mbchar;
};
extern CONST struct ctype_info *_ctype_info;
/* These are necessary because they are used in a header file. */
extern CONST unsigned short int *__ctype_b;
extern CONST unsigned char *__ctype_tolower;
extern CONST unsigned char *__ctype_toupper;
/* Used by strcoll and strxfrm. */
typedef struct
{
unsigned char *values;
size_t nvalues;
} literal_value;
typedef struct
{
union
{
literal_value literal;
/* %%% This may become a regex_t in the future. */
char *regexp;
} replace, with;
unsigned int regexp:1;
} subst;
struct collate_info
{
size_t nsubsts;
subst *substs;
unsigned char *values;
unsigned char *offsets;
};
extern CONST struct collate_info *_collate_info;
/* Used by strtod, atof. */
struct numeric_info
{
char *decimal_point;
char *thousands_sep;
char *grouping;
};
extern CONST struct numeric_info *_numeric_info;
/* Used in the return value of localeconv. */
struct monetary_info
{
char *int_curr_symbol;
char *currency_symbol;
char *mon_decimal_point;
char *mon_thousands_sep;
char *mon_grouping;
char *positive_sign;
char *negative_sign;
char int_frac_digits;
char frac_digits;
char p_cs_precedes;
char p_sep_by_space;
char n_cs_precedes;
char n_sep_by_space;
char p_sign_posn;
char n_sign_posn;
};
extern CONST struct monetary_info *_monetary_info;
/* Used by strftime, asctime. */
struct time_info
{
char *abbrev_wkday[7]; /* Short weekday names. */
char *full_wkday[7]; /* Full weekday names. */
char *abbrev_month[12]; /* Short month names. */
char *full_month[12]; /* Full month names. */
char *ampm[2]; /* "AM" and "PM" strings. */
char *date_time; /* Appropriate date and time format. */
char *date; /* Appropriate date format. */
char *time; /* Appropriate time format. */
char *ut0; /* Name for GMT. */
char *tz; /* Default TZ value. */
};
extern CONST struct time_info *_time_info;
struct response_info
{
/* Regexp for affirmative answers. */
char *yesexpr;
/* Regexp for negative answers. */
char *noexpr;
};
extern CONST struct response_info *_response_info;
/* Locale structure. */
typedef struct
{
char *name;
int categories;
unsigned int allocated:1;
int subcategories;
size_t num_sublocales;
struct sub_locale *sublocales;
PTR *info;
} locale;
typedef struct sub_locale
{
unsigned int pointer:1;
int categories;
char *name;
locale *locale;
} sublocale;
/* This is the magic number that localeinfo object files begin with.
In case you're wondering why I chose the value 0x051472CA, it's
because I was born on 05-14-72 in Oakland, CA. */
#define LIMAGIC 0x051472CA
/* This is the magic number that precedes each category-specific section
of a localeinfo object file. It's the arbitrary magic number above,
but modified by the category so that it's different from the per-file
magic number and unique for each category. */
#define CATEGORY_MAGIC(x) (LIMAGIC ^ (x))
extern CONST char *__lidir, *__lidefault;
extern locale *EXFUN(__find_locale, (int categories, CONST char *name));
extern locale *EXFUN(__new_locale, (locale *));
extern locale *EXFUN(__localefile, (CONST char *file));
extern void EXFUN(__free_locale, (locale *));
#endif /* localeinfo.h */

View File

@@ -0,0 +1,45 @@
/* Copyright (C) 1991 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If
not, write to the Free Software Foundation, Inc., 675 Mass Ave,
Cambridge, MA 02139, USA. */
#include <ansidecl.h>
#include <localeinfo.h>
#include <errno.h>
#include <locale.h>
#include <string.h>
/* Switch to the locale called NAME in CATEGORY.
Return a string describing the locale. This string can
be used as the NAME argument in a later call.
If NAME is NULL, don't switch locales, but return the current one.
If NAME is "", switch to a locale based on the environment variables,
as per POSIX. Return NULL on error. */
char *
DEFUN(setlocale, (category, name), int category AND CONST char *name)
{
/* Braindead implementation until I finish the fancy one. */
if (name == NULL)
return (char *) "C";
if (!strcmp(name, "C") || !strcmp(name, "POSIX"))
return (char *) name;
errno = EINVAL;
return NULL;
}