perl/locale_table.h
Karl Williamson 03e269a367 regen/locale.pl: Use 'USE_LOCALE" not 'NO_LOCALE'
NO_LOCALE is a Configure option used to override setting the internal
option USE_LOCALE.  Internal checks should use the internal version.

Not doing this caused z/OS to think it should be using locales on
threaded systems, whereas it shouldn't.

FYI, the reason this is is that the OS refuses to change the locale at
all once a second thread is started.  Perl relies on the ability to
change the locale at will to accommodate locales that have a comma be the
radix (decimal point) character and the huge amount of code that has
been written expecting that at all times a dot is the radix character.
This includes core code (which we could change) and XS code (which would
be overwhelming to change).
2025-07-22 09:52:18 -06:00

243 lines
6.1 KiB
C

/* -*- mode: C; buffer-read-only: t -*-
*
* locale_table.h
*
* Copyright (C) 2023, 2024 by Larry Wall and others
*
* You may distribute under the terms of either the GNU General Public
* License or the Artistic License, as specified in the README file.
*
* !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
* This file is built by regen/locale.pl from data in regen/locale.pl.
* Any changes made here will be lost!
*/
/* This defines a macro for each individual locale category used on this
* system. (The conglomerate category LC_ALL is not included.) This file
* will be #included as the interior of various parallel arrays and in other
* constructs; each usage will re-#define the macro to generate its
* appropriate data.
*
* This guarantees the arrays will be parallel, and populated in the order
* given here. That order is mostly arbitrary. LC_CTYPE is first because when
* we are setting multiple categories, CTYPE often needs to match the other(s),
* and the way the code is constructed, if we set the other category first, we
* might otherwise have to set CTYPE twice.
*
* Each entry takes the token giving the category name, and either the name of
* a function to call that does specialized set up for this category when it is
* changed into, or NULL if no such set up is needed
*/
#ifdef LC_CTYPE
# if ! defined(USE_LOCALE) || defined(NO_LOCALE_CTYPE)
PERL_LOCALE_TABLE_ENTRY(CTYPE, NULL)
# define HAS_IGNORED_LOCALE_CATEGORIES_
# define LC_CTYPE_AVAIL_ 0
# else
PERL_LOCALE_TABLE_ENTRY(CTYPE, S_new_ctype)
# define LC_CTYPE_AVAIL_ 1
# define USE_LOCALE_CTYPE
# endif
#else
# define LC_CTYPE_AVAIL_ 0
#endif
#ifdef LC_NUMERIC
# if ! defined(USE_LOCALE) || defined(NO_LOCALE_NUMERIC)
PERL_LOCALE_TABLE_ENTRY(NUMERIC, NULL)
# define HAS_IGNORED_LOCALE_CATEGORIES_
# define LC_NUMERIC_AVAIL_ 0
# else
PERL_LOCALE_TABLE_ENTRY(NUMERIC, S_new_numeric)
# define LC_NUMERIC_AVAIL_ 1
# define USE_LOCALE_NUMERIC
# endif
#else
# define LC_NUMERIC_AVAIL_ 0
#endif
#ifdef LC_COLLATE
/* Perl outsources all its collation efforts to the libc strxfrm(), so
* if it isn't available on the system, default "C" locale collation
* gets used */
# if ! defined(USE_LOCALE) || defined(NO_LOCALE_COLLATE) || ! defined(HAS_STRXFRM)
PERL_LOCALE_TABLE_ENTRY(COLLATE, NULL)
# define HAS_IGNORED_LOCALE_CATEGORIES_
# define LC_COLLATE_AVAIL_ 0
# else
PERL_LOCALE_TABLE_ENTRY(COLLATE, S_new_collate)
# define LC_COLLATE_AVAIL_ 1
# define USE_LOCALE_COLLATE
# endif
#else
# define LC_COLLATE_AVAIL_ 0
#endif
#ifdef LC_TIME
PERL_LOCALE_TABLE_ENTRY(TIME, NULL)
# if ! defined(USE_LOCALE) || defined(NO_LOCALE_TIME)
# define HAS_IGNORED_LOCALE_CATEGORIES_
# define LC_TIME_AVAIL_ 0
# else
# define LC_TIME_AVAIL_ 1
# define USE_LOCALE_TIME
# endif
#else
# define LC_TIME_AVAIL_ 0
#endif
#ifdef LC_MESSAGES
PERL_LOCALE_TABLE_ENTRY(MESSAGES, NULL)
# if ! defined(USE_LOCALE) || defined(NO_LOCALE_MESSAGES)
# define HAS_IGNORED_LOCALE_CATEGORIES_
# define LC_MESSAGES_AVAIL_ 0
# else
# define LC_MESSAGES_AVAIL_ 1
# define USE_LOCALE_MESSAGES
# endif
#else
# define LC_MESSAGES_AVAIL_ 0
#endif
#ifdef LC_MONETARY
PERL_LOCALE_TABLE_ENTRY(MONETARY, NULL)
# if ! defined(USE_LOCALE) || defined(NO_LOCALE_MONETARY)
# define HAS_IGNORED_LOCALE_CATEGORIES_
# define LC_MONETARY_AVAIL_ 0
# else
# define LC_MONETARY_AVAIL_ 1
# define USE_LOCALE_MONETARY
# endif
#else
# define LC_MONETARY_AVAIL_ 0
#endif
#ifdef LC_ADDRESS
PERL_LOCALE_TABLE_ENTRY(ADDRESS, NULL)
# if ! defined(USE_LOCALE) || defined(NO_LOCALE_ADDRESS)
# define HAS_IGNORED_LOCALE_CATEGORIES_
# define LC_ADDRESS_AVAIL_ 0
# else
# define LC_ADDRESS_AVAIL_ 1
# define USE_LOCALE_ADDRESS
# endif
#else
# define LC_ADDRESS_AVAIL_ 0
#endif
#ifdef LC_IDENTIFICATION
PERL_LOCALE_TABLE_ENTRY(IDENTIFICATION, NULL)
# if ! defined(USE_LOCALE) || defined(NO_LOCALE_IDENTIFICATION)
# define HAS_IGNORED_LOCALE_CATEGORIES_
# define LC_IDENTIFICATION_AVAIL_ 0
# else
# define LC_IDENTIFICATION_AVAIL_ 1
# define USE_LOCALE_IDENTIFICATION
# endif
#else
# define LC_IDENTIFICATION_AVAIL_ 0
#endif
#ifdef LC_MEASUREMENT
PERL_LOCALE_TABLE_ENTRY(MEASUREMENT, NULL)
# if ! defined(USE_LOCALE) || defined(NO_LOCALE_MEASUREMENT)
# define HAS_IGNORED_LOCALE_CATEGORIES_
# define LC_MEASUREMENT_AVAIL_ 0
# else
# define LC_MEASUREMENT_AVAIL_ 1
# define USE_LOCALE_MEASUREMENT
# endif
#else
# define LC_MEASUREMENT_AVAIL_ 0
#endif
#ifdef LC_PAPER
PERL_LOCALE_TABLE_ENTRY(PAPER, NULL)
# if ! defined(USE_LOCALE) || defined(NO_LOCALE_PAPER)
# define HAS_IGNORED_LOCALE_CATEGORIES_
# define LC_PAPER_AVAIL_ 0
# else
# define LC_PAPER_AVAIL_ 1
# define USE_LOCALE_PAPER
# endif
#else
# define LC_PAPER_AVAIL_ 0
#endif
#ifdef LC_TELEPHONE
PERL_LOCALE_TABLE_ENTRY(TELEPHONE, NULL)
# if ! defined(USE_LOCALE) || defined(NO_LOCALE_TELEPHONE)
# define HAS_IGNORED_LOCALE_CATEGORIES_
# define LC_TELEPHONE_AVAIL_ 0
# else
# define LC_TELEPHONE_AVAIL_ 1
# define USE_LOCALE_TELEPHONE
# endif
#else
# define LC_TELEPHONE_AVAIL_ 0
#endif
#ifdef LC_NAME
PERL_LOCALE_TABLE_ENTRY(NAME, NULL)
# if ! defined(USE_LOCALE) || defined(NO_LOCALE_NAME)
# define HAS_IGNORED_LOCALE_CATEGORIES_
# define LC_NAME_AVAIL_ 0
# else
# define LC_NAME_AVAIL_ 1
# define USE_LOCALE_NAME
# endif
#else
# define LC_NAME_AVAIL_ 0
#endif
#ifdef LC_SYNTAX
PERL_LOCALE_TABLE_ENTRY(SYNTAX, NULL)
# if ! defined(USE_LOCALE) || defined(NO_LOCALE_SYNTAX)
# define HAS_IGNORED_LOCALE_CATEGORIES_
# define LC_SYNTAX_AVAIL_ 0
# else
# define LC_SYNTAX_AVAIL_ 1
# define USE_LOCALE_SYNTAX
# endif
#else
# define LC_SYNTAX_AVAIL_ 0
#endif
#ifdef LC_TOD
PERL_LOCALE_TABLE_ENTRY(TOD, NULL)
# if ! defined(USE_LOCALE) || defined(NO_LOCALE_TOD)
# define HAS_IGNORED_LOCALE_CATEGORIES_
# define LC_TOD_AVAIL_ 0
# else
# define LC_TOD_AVAIL_ 1
# define USE_LOCALE_TOD
# endif
#else
# define LC_TOD_AVAIL_ 0
#endif
/* ex: set ro ft=c: */