2023-01-06 21:08:04 +00:00
|
|
|
/* Copyright (C) 1996-2023 Free Software Foundation, Inc.
|
2000-07-26 17:52:36 +00:00
|
|
|
This file is part of the GNU C Library.
|
|
|
|
|
|
|
|
The GNU C Library is free software; you can redistribute it and/or
|
2001-07-06 04:58:11 +00:00
|
|
|
modify it under the terms of the GNU Lesser General Public
|
|
|
|
License as published by the Free Software Foundation; either
|
|
|
|
version 2.1 of the License, or (at your option) any later version.
|
2000-07-26 17:52:36 +00:00
|
|
|
|
|
|
|
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
|
2001-07-06 04:58:11 +00:00
|
|
|
Lesser General Public License for more details.
|
2000-07-26 17:52:36 +00:00
|
|
|
|
2001-07-06 04:58:11 +00:00
|
|
|
You should have received a copy of the GNU Lesser General Public
|
2012-02-09 23:18:22 +00:00
|
|
|
License along with the GNU C Library; if not, see
|
Prefer https to http for gnu.org and fsf.org URLs
Also, change sources.redhat.com to sourceware.org.
This patch was automatically generated by running the following shell
script, which uses GNU sed, and which avoids modifying files imported
from upstream:
sed -ri '
s,(http|ftp)(://(.*\.)?(gnu|fsf|sourceware)\.org($|[^.]|\.[^a-z])),https\2,g
s,(http|ftp)(://(.*\.)?)sources\.redhat\.com($|[^.]|\.[^a-z]),https\2sourceware.org\4,g
' \
$(find $(git ls-files) -prune -type f \
! -name '*.po' \
! -name 'ChangeLog*' \
! -path COPYING ! -path COPYING.LIB \
! -path manual/fdl-1.3.texi ! -path manual/lgpl-2.1.texi \
! -path manual/texinfo.tex ! -path scripts/config.guess \
! -path scripts/config.sub ! -path scripts/install-sh \
! -path scripts/mkinstalldirs ! -path scripts/move-if-change \
! -path INSTALL ! -path locale/programs/charmap-kw.h \
! -path po/libc.pot ! -path sysdeps/gnu/errlist.c \
! '(' -name configure \
-execdir test -f configure.ac -o -f configure.in ';' ')' \
! '(' -name preconfigure \
-execdir test -f preconfigure.ac ';' ')' \
-print)
and then by running 'make dist-prepare' to regenerate files built
from the altered files, and then executing the following to cleanup:
chmod a+x sysdeps/unix/sysv/linux/riscv/configure
# Omit irrelevant whitespace and comment-only changes,
# perhaps from a slightly-different Autoconf version.
git checkout -f \
sysdeps/csky/configure \
sysdeps/hppa/configure \
sysdeps/riscv/configure \
sysdeps/unix/sysv/linux/csky/configure
# Omit changes that caused a pre-commit check to fail like this:
# remote: *** error: sysdeps/powerpc/powerpc64/ppc-mcount.S: trailing lines
git checkout -f \
sysdeps/powerpc/powerpc64/ppc-mcount.S \
sysdeps/unix/sysv/linux/s390/s390-64/syscall.S
# Omit change that caused a pre-commit check to fail like this:
# remote: *** error: sysdeps/sparc/sparc64/multiarch/memcpy-ultra3.S: last line does not end in newline
git checkout -f sysdeps/sparc/sparc64/multiarch/memcpy-ultra3.S
2019-09-07 05:40:42 +00:00
|
|
|
<https://www.gnu.org/licenses/>. */
|
2000-07-26 17:52:36 +00:00
|
|
|
|
2001-01-26 13:42:50 +00:00
|
|
|
#include <locale.h>
|
2000-07-26 17:52:36 +00:00
|
|
|
#include <string.h>
|
|
|
|
#include <wctype.h>
|
|
|
|
#include "../locale/localeinfo.h"
|
|
|
|
|
|
|
|
wctrans_t
|
Use locale_t, not __locale_t, throughout glibc
<locale.h> is specified to define locale_t in POSIX.1-2008, and so are
all of the headers that define functions that take locale_t arguments.
Under _GNU_SOURCE, the additional headers that define such functions
have also always defined locale_t. Therefore, there is no need to use
__locale_t in public function prototypes, nor in any internal code.
* ctype/ctype-c99_l.c, ctype/ctype.h, ctype/ctype_l.c
* include/monetary.h, include/stdlib.h, include/time.h
* include/wchar.h, locale/duplocale.c, locale/freelocale.c
* locale/global-locale.c, locale/langinfo.h, locale/locale.h
* locale/localeinfo.h, locale/newlocale.c
* locale/nl_langinfo_l.c, locale/uselocale.c
* localedata/bug-usesetlocale.c, localedata/tst-xlocale2.c
* stdio-common/vfscanf.c, stdlib/monetary.h, stdlib/stdlib.h
* stdlib/strfmon_l.c, stdlib/strtod_l.c, stdlib/strtof_l.c
* stdlib/strtol.c, stdlib/strtol_l.c, stdlib/strtold_l.c
* stdlib/strtoll_l.c, stdlib/strtoul_l.c, stdlib/strtoull_l.c
* string/strcasecmp.c, string/strcoll_l.c, string/string.h
* string/strings.h, string/strncase.c, string/strxfrm_l.c
* sysdeps/ieee754/float128/strtof128_l.c
* sysdeps/ieee754/float128/wcstof128.c
* sysdeps/ieee754/float128/wcstof128_l.c
* sysdeps/ieee754/ldbl-128ibm/strtold_l.c
* sysdeps/ieee754/ldbl-64-128/strtold_l.c
* sysdeps/ieee754/ldbl-opt/nldbl-compat.c
* sysdeps/ieee754/ldbl-opt/nldbl-strfmon_l.c
* sysdeps/ieee754/ldbl-opt/nldbl-strtold_l.c
* sysdeps/ieee754/ldbl-opt/nldbl-wcstold_l.c
* sysdeps/powerpc/powerpc32/power7/strcasecmp.S
* sysdeps/powerpc/powerpc64/power7/strcasecmp.S
* sysdeps/x86_64/strcasecmp_l-nonascii.c
* sysdeps/x86_64/strncase_l-nonascii.c, time/strftime_l.c
* time/strptime_l.c, time/time.h, wcsmbs/mbsrtowcs_l.c
* wcsmbs/wchar.h, wcsmbs/wcscasecmp.c, wcsmbs/wcsncase.c
* wcsmbs/wcstod.c, wcsmbs/wcstod_l.c, wcsmbs/wcstof.c
* wcsmbs/wcstof_l.c, wcsmbs/wcstol_l.c, wcsmbs/wcstold.c
* wcsmbs/wcstold_l.c, wcsmbs/wcstoll_l.c, wcsmbs/wcstoul_l.c
* wcsmbs/wcstoull_l.c, wctype/iswctype_l.c
* wctype/towctrans_l.c, wctype/wcfuncs_l.c
* wctype/wctrans_l.c, wctype/wctype.h, wctype/wctype_l.c:
Change all uses of __locale_t to locale_t.
2017-06-20 13:26:43 +00:00
|
|
|
__wctrans_l (const char *property, locale_t locale)
|
2000-07-26 17:52:36 +00:00
|
|
|
{
|
|
|
|
const char *names;
|
|
|
|
size_t cnt;
|
Update.
2000-08-31 Bruno Haible <haible@clisp.cons.org>
* wctype/wcfuncs.c (iswblank): New function.
* wctype/wcfuncs_l.c (__iswblank_l): New function.
* wctype/wcextra.c: Remove file.
* wctype/wcextra_l.c: Remove file.
* wctype/Makefile (distribute): Remove wcextra and wcextra_l.
2000-08-31 Bruno Haible <haible@clisp.cons.org>
* locale/programs/ld-collate.c (collate_output): Remove redundant
assert call.
* string/strcoll.c: Likewise.
* string/strxfrm.c: Include assert.h. Add assert calls like in
string/strcoll.c.
2000-08-31 Bruno Haible <haible@clisp.cons.org>
* locale/categories.def (_NL_COLLATE_HASH_SIZE,
_NL_COLLATE_HASH_LAYERS, _NL_COLLATE_NAMES, _NL_CTYPE_NAMES,
_NL_CTYPE_HASH_SIZE, _NL_CTYPE_HASH_LAYERS): Remove definitions.
* locale/langinfo.h (_NL_COLLATE_HASH_SIZE, _NL_COLLATE_HASH_LAYERS,
_NL_COLLATE_NAMES): Rename to _NL_COLLATE_GAP1/2/3 respectively.
(_NL_CTYPE_NAMES): Rename to _NL_CTYPE_GAP3.
(_NL_CTYPE_GAP3): Rename to _NL_CTYPE_GAP4.
(_NL_CTYPE_HASH_SIZE, _NL_CTYPE_HASH_LAYERS): Rename to
_NL_CTYPE_GAP5/6 respectively.
* locale/C-ctype.c (_nl_C_LC_CTYPE): Update.
* ctype/ctype-info.c (__ctype_names, __ctype_width): Remove variables.
* locale/lc-ctype.c (_nl_postload_ctype): Assume new locale format.
Don't initialize __ctype_names and __ctype_width.
* wctype/cname-lookup.h: Remove file.
* wctype/Makefile (distribute): Remove cname-lookup.h.
* wctype/wchar-lookup.h: Include stdint.h.
* wctype/wctype.c (__wctype): Assume new locale format.
* wctype/wctype_l.c (__wctype_l): Likewise.
* wctype/iswctype.c: Don't include cname-lookup.h.
(__iswctype): Assume new locale format.
* wctype/iswctype_l.c: Don't include cname-lookup.h.
(__iswctype_l): Assume new locale format.
* wctype/wctrans.c: Don't include ctype.h.
(wctrans): Assume new locale format.
* wctype/wctrans_l.c (__wctrans_l): Likewise.
* wctype/towctrans.c: Don't include cname-lookup.h.
(__towctrans): Assume new locale format.
* wctype/towctrans_l.c: Don't include cname-lookup.h.
(__towctrans_l): Assume new locale format.
* wctype/wcfuncs.c: Don't include ctype.h and cname-lookup.h. Include
localeinfo.h instead.
(__NO_WCTYPE): Remove unused macro.
(__ctype32_b, __ctype32_toupper, __ctype32_tolower): Remove
declarations.
(iswalnum, iswalpha, iswcntrl, iswdigit, iswlower, iswgraph, iswprint,
iswpunct, iswspace, iswupper, iswxdigit): Assume new locale format.
(towlower, towupper): Likewise.
* wctype/wcfuncs_l.c: Don't include cname-lookup.h. Include
localeinfo.h instead.
(__NO_WCTYPE): Remove unused macro.
(__iswalnum_l, __iswalpha_l, __iswcntrl_l, __iswdigit_l, __iswlower_l,
__iswgraph_l, __iswprint_l, __iswpunct_l, __iswspace_l, __iswupper_l,
__iswxdigit_l): Assume new locale format.
(__towlower_l, __towupper_l): Likewise.
* wcsmbs/wcwidth.h: Don't include cname-lookup.h.
(__ctype32_b): Remove declaration.
(internal_wcwidth): Assume new locale format.
* locale/programs/ld-ctype.c (struct locale_ctype_t): Remove fields
plane_size, plane_cnt, names, width. Rename map to map_b, rename map32
to map32_b, rename width_3level to width.
(ctype_output): Always create new locale format. Don't emit
_NL_CTYPE_NAMES, _NL_CTYPE_HASH_SIZE, _NL_CTYPE_HASH_LAYERS any more.
(allocate_arrays): Always create new locale format.
* locale/C-collate.c (_nl_C_LC_COLLATE): Update.
* locale/weightwc.h (findidx): Assume new locale format.
* string/strcoll.c (wcscoll): Remove local variables size, layers,
names.
* string/strxfrm.c (wcsxfrm): Likewise.
* posix/fnmatch_loop.c (internal_fnwmatch): Likewise. Change type of
local variable collseq to 'const char *'.
(SUFFIX): Don't use, don't undefine.
* posix/fnmatch.c: Remove SUFFIX definition.
* locale/programs/ld-collate.c (struct locale_collate_t): Remove
fields plane_size, plane_cnt, wcheads, wcseqorder. Rename
wcheads_3level to wcheads, rename wcseqorder_3level to wcseqorder.
(collate_finish): Always create new locale format. Remove local
variables min_total, act_size.
(collate_output): Always create new locale format. Remove local
variables table_size, names, tablewc. Rename tablewc_3level to
tablewc.
2000-08-31 Bruno Haible <haible@clisp.cons.org>
* locale/programs/ld-collate.c (obstack_int32_grow,
obstack_int32_grow_fast): New inline functions.
(output_weightwc, collate_output): Use them where possible.
2000-09-01 19:36:44 +00:00
|
|
|
size_t i;
|
2000-07-26 17:52:36 +00:00
|
|
|
|
|
|
|
names = locale->__locales[LC_CTYPE]->values[_NL_ITEM_INDEX (_NL_CTYPE_MAP_NAMES)].string;
|
|
|
|
cnt = 0;
|
|
|
|
while (names[0] != '\0')
|
|
|
|
{
|
|
|
|
if (strcmp (property, names) == 0)
|
|
|
|
break;
|
|
|
|
|
|
|
|
names = strchr (names, '\0') + 1;
|
|
|
|
++cnt;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (names[0] == '\0')
|
|
|
|
return 0;
|
|
|
|
|
Update.
2000-08-31 Bruno Haible <haible@clisp.cons.org>
* wctype/wcfuncs.c (iswblank): New function.
* wctype/wcfuncs_l.c (__iswblank_l): New function.
* wctype/wcextra.c: Remove file.
* wctype/wcextra_l.c: Remove file.
* wctype/Makefile (distribute): Remove wcextra and wcextra_l.
2000-08-31 Bruno Haible <haible@clisp.cons.org>
* locale/programs/ld-collate.c (collate_output): Remove redundant
assert call.
* string/strcoll.c: Likewise.
* string/strxfrm.c: Include assert.h. Add assert calls like in
string/strcoll.c.
2000-08-31 Bruno Haible <haible@clisp.cons.org>
* locale/categories.def (_NL_COLLATE_HASH_SIZE,
_NL_COLLATE_HASH_LAYERS, _NL_COLLATE_NAMES, _NL_CTYPE_NAMES,
_NL_CTYPE_HASH_SIZE, _NL_CTYPE_HASH_LAYERS): Remove definitions.
* locale/langinfo.h (_NL_COLLATE_HASH_SIZE, _NL_COLLATE_HASH_LAYERS,
_NL_COLLATE_NAMES): Rename to _NL_COLLATE_GAP1/2/3 respectively.
(_NL_CTYPE_NAMES): Rename to _NL_CTYPE_GAP3.
(_NL_CTYPE_GAP3): Rename to _NL_CTYPE_GAP4.
(_NL_CTYPE_HASH_SIZE, _NL_CTYPE_HASH_LAYERS): Rename to
_NL_CTYPE_GAP5/6 respectively.
* locale/C-ctype.c (_nl_C_LC_CTYPE): Update.
* ctype/ctype-info.c (__ctype_names, __ctype_width): Remove variables.
* locale/lc-ctype.c (_nl_postload_ctype): Assume new locale format.
Don't initialize __ctype_names and __ctype_width.
* wctype/cname-lookup.h: Remove file.
* wctype/Makefile (distribute): Remove cname-lookup.h.
* wctype/wchar-lookup.h: Include stdint.h.
* wctype/wctype.c (__wctype): Assume new locale format.
* wctype/wctype_l.c (__wctype_l): Likewise.
* wctype/iswctype.c: Don't include cname-lookup.h.
(__iswctype): Assume new locale format.
* wctype/iswctype_l.c: Don't include cname-lookup.h.
(__iswctype_l): Assume new locale format.
* wctype/wctrans.c: Don't include ctype.h.
(wctrans): Assume new locale format.
* wctype/wctrans_l.c (__wctrans_l): Likewise.
* wctype/towctrans.c: Don't include cname-lookup.h.
(__towctrans): Assume new locale format.
* wctype/towctrans_l.c: Don't include cname-lookup.h.
(__towctrans_l): Assume new locale format.
* wctype/wcfuncs.c: Don't include ctype.h and cname-lookup.h. Include
localeinfo.h instead.
(__NO_WCTYPE): Remove unused macro.
(__ctype32_b, __ctype32_toupper, __ctype32_tolower): Remove
declarations.
(iswalnum, iswalpha, iswcntrl, iswdigit, iswlower, iswgraph, iswprint,
iswpunct, iswspace, iswupper, iswxdigit): Assume new locale format.
(towlower, towupper): Likewise.
* wctype/wcfuncs_l.c: Don't include cname-lookup.h. Include
localeinfo.h instead.
(__NO_WCTYPE): Remove unused macro.
(__iswalnum_l, __iswalpha_l, __iswcntrl_l, __iswdigit_l, __iswlower_l,
__iswgraph_l, __iswprint_l, __iswpunct_l, __iswspace_l, __iswupper_l,
__iswxdigit_l): Assume new locale format.
(__towlower_l, __towupper_l): Likewise.
* wcsmbs/wcwidth.h: Don't include cname-lookup.h.
(__ctype32_b): Remove declaration.
(internal_wcwidth): Assume new locale format.
* locale/programs/ld-ctype.c (struct locale_ctype_t): Remove fields
plane_size, plane_cnt, names, width. Rename map to map_b, rename map32
to map32_b, rename width_3level to width.
(ctype_output): Always create new locale format. Don't emit
_NL_CTYPE_NAMES, _NL_CTYPE_HASH_SIZE, _NL_CTYPE_HASH_LAYERS any more.
(allocate_arrays): Always create new locale format.
* locale/C-collate.c (_nl_C_LC_COLLATE): Update.
* locale/weightwc.h (findidx): Assume new locale format.
* string/strcoll.c (wcscoll): Remove local variables size, layers,
names.
* string/strxfrm.c (wcsxfrm): Likewise.
* posix/fnmatch_loop.c (internal_fnwmatch): Likewise. Change type of
local variable collseq to 'const char *'.
(SUFFIX): Don't use, don't undefine.
* posix/fnmatch.c: Remove SUFFIX definition.
* locale/programs/ld-collate.c (struct locale_collate_t): Remove
fields plane_size, plane_cnt, wcheads, wcseqorder. Rename
wcheads_3level to wcheads, rename wcseqorder_3level to wcseqorder.
(collate_finish): Always create new locale format. Remove local
variables min_total, act_size.
(collate_output): Always create new locale format. Remove local
variables table_size, names, tablewc. Rename tablewc_3level to
tablewc.
2000-08-31 Bruno Haible <haible@clisp.cons.org>
* locale/programs/ld-collate.c (obstack_int32_grow,
obstack_int32_grow_fast): New inline functions.
(output_weightwc, collate_output): Use them where possible.
2000-09-01 19:36:44 +00:00
|
|
|
i = locale->__locales[LC_CTYPE]->values[_NL_ITEM_INDEX (_NL_CTYPE_MAP_OFFSET)].word + cnt;
|
|
|
|
return (wctrans_t) locale->__locales[LC_CTYPE]->values[i].string;
|
2000-07-26 17:52:36 +00:00
|
|
|
}
|
2002-08-06 08:40:20 +00:00
|
|
|
weak_alias (__wctrans_l, wctrans_l)
|