1
0
mirror of https://sourceware.org/git/glibc.git synced 2025-07-30 22:43:12 +03:00
1999-09-13  Ulrich Drepper  <drepper@cygnus.com>

	* locale/langinfo.h: Remove byte-order dependent names.
	* locale/categories.def: Update after removal of byte-order dependent
	names.
	* locale/loadlocale.c (_nl_load_locale): Don't allow locale files
	with magic number in other byte order.
	* locale/newlocale.c (__newlocale): Remove byte-order dependent code.
	* locale/C-collate.c: Remove initializers for other byte-order.
	* locale/C-ctype.c: Likewise.
	* locale/C-monetary.c: Likewise.
	* locale/C-paper.c: Likewise.
	* locale/C-time.c: Likewise.
	* locale/lc-collate.c: Remove byte-order oriented initialization.
	* locale/lc-ctype.c: Likewise.
	* locale/lc-monetary.c: Likewise.
	* locale/lc-time.c: Likewise.
	* locale/programs/ld-address.c: Don't generate output in both
	byte-orders.
	* locale/programs/ld-ctype.c: Likewise.
	* locale/programs/ld-paper.c: Likewise.
	* locale/programs/ld-time.c: Likewise.
	* time/strftime.c (NLW): Don't use different byte-orders.
	* wctype/cname-lookup.h (cname_lookup): Likewise.

	* Makeconfig (localedir): Define using libdir, not datadir.
	(msgcatdir): New variable.
	* catgets/Makefile (CPPFLAGS): Define NLSPATH using msgcatdir.
	* elf/Makefile (bash-ldd-rewrite): Replace @TEXTDOMAINDIR@ using
	msgcatdir.
	* intl/Makefile (install-others): Install locale.alias in msgcatdir.
	(CPPFLAGS): Define paths using msgcatdir.
	* locale/Makefile (CPPFLAGS): Define LOCALE_ALIAS_PATH using msgcatdir.
	* po/Makefile (mo-installed): Define using msgcatdir.

	* sysdeps/unix/sysv/linux/net/if_arp.h: Fix typo.
This commit is contained in:
Ulrich Drepper
1999-09-13 09:07:36 +00:00
parent 3e95f6602b
commit 4a33c2f55e
31 changed files with 357 additions and 1262 deletions

16
BUGS
View File

@ -1,7 +1,7 @@
List of known bugs (certainly very incomplete) List of known bugs (certainly very incomplete)
---------------------------------------------- ----------------------------------------------
Time-stamp: <1999-07-29T15:25:53-0700 drepper> Time-stamp: <1999-09-13T02:02:34-0700 drepper>
This following list contains those bugs which I'm aware of. Please This following list contains those bugs which I'm aware of. Please
make sure that bugs you report are not listed here. If you can fix one make sure that bugs you report are not listed here. If you can fix one
@ -39,26 +39,12 @@ Severity: [ *] to [***]
symbols in <linux/limits.h> available. symbols in <linux/limits.h> available.
[PR libc/140] [PR libc/140]
[ *] The localedef program should not generate errors if for categories
which are not used for the output there are characters referenced
which are not defined in the charmap.
[PR libc/229]
[ *] When assembling a locale definition, that uses the "copy"
directive, with localedef, not only the copied category is
checked for errors, but the whole file containing the same
category.
[PR libc/207 and PR libc/454]
[ *] The libm-ieee `gamma' function gives wrong results (at least for [ *] The libm-ieee `gamma' function gives wrong results (at least for
-0.5). -0.5).
[ *] The libm-ieee `scalb' function gives wrong results for [ *] The libm-ieee `scalb' function gives wrong results for
non-integral second parameters. non-integral second parameters.
[ *] The strftime() implementation cannot handle multibyte locales really
good since the TOLOWER and TOUPPER are not prepared.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Ulrich Drepper Ulrich Drepper
drepper@cygnus.com drepper@cygnus.com

View File

@ -1,3 +1,40 @@
1999-09-13 Ulrich Drepper <drepper@cygnus.com>
* locale/langinfo.h: Remove byte-order dependent names.
* locale/categories.def: Update after removal of byte-order dependent
names.
* locale/loadlocale.c (_nl_load_locale): Don't allow locale files
with magic number in other byte order.
* locale/newlocale.c (__newlocale): Remove byte-order dependent code.
* locale/C-collate.c: Remove initializers for other byte-order.
* locale/C-ctype.c: Likewise.
* locale/C-monetary.c: Likewise.
* locale/C-paper.c: Likewise.
* locale/C-time.c: Likewise.
* locale/lc-collate.c: Remove byte-order oriented initialization.
* locale/lc-ctype.c: Likewise.
* locale/lc-monetary.c: Likewise.
* locale/lc-time.c: Likewise.
* locale/programs/ld-address.c: Don't generate output in both
byte-orders.
* locale/programs/ld-ctype.c: Likewise.
* locale/programs/ld-paper.c: Likewise.
* locale/programs/ld-time.c: Likewise.
* time/strftime.c (NLW): Don't use different byte-orders.
* wctype/cname-lookup.h (cname_lookup): Likewise.
* Makeconfig (localedir): Define using libdir, not datadir.
(msgcatdir): New variable.
* catgets/Makefile (CPPFLAGS): Define NLSPATH using msgcatdir.
* elf/Makefile (bash-ldd-rewrite): Replace @TEXTDOMAINDIR@ using
msgcatdir.
* intl/Makefile (install-others): Install locale.alias in msgcatdir.
(CPPFLAGS): Define paths using msgcatdir.
* locale/Makefile (CPPFLAGS): Define LOCALE_ALIAS_PATH using msgcatdir.
* po/Makefile (mo-installed): Define using msgcatdir.
* sysdeps/unix/sysv/linux/net/if_arp.h: Fix typo.
1999-09-12 Ulrich Drepper <drepper@cygnus.com> 1999-09-12 Ulrich Drepper <drepper@cygnus.com>
* stdio-common/vfprintf.c: Remove limitation on size of precision * stdio-common/vfprintf.c: Remove limitation on size of precision

View File

@ -205,13 +205,19 @@ zonedir = $(datadir)/zoneinfo
endif endif
inst_zonedir = $(install_root)$(zonedir) inst_zonedir = $(install_root)$(zonedir)
# Where to install the locale and message catalog data files (which are # Where to install the locale files.
# machine-independent).
ifndef localedir ifndef localedir
localedir = $(datadir)/locale localedir = $(libdir)/locale
endif endif
inst_localedir = $(install_root)$(localedir) inst_localedir = $(install_root)$(localedir)
# Where to install the message catalog data files (which are
# machine-independent).
ifndef msgcatdir
msgcatdir = $(datadir)/locale
endif
inst_msgcatdir = $(install_root)$(msgcatdir)
# Where to install the locale charmap source files. # Where to install the locale charmap source files.
ifndef i18ndir ifndef i18ndir
i18ndir = $(datadir)/i18n i18ndir = $(datadir)/i18n

View File

@ -1,4 +1,4 @@
# Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc. # Copyright (C) 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
# This file is part of the GNU C Library. # This file is part of the GNU C Library.
# The GNU C Library is free software; you can redistribute it and/or # The GNU C Library is free software; you can redistribute it and/or
@ -38,7 +38,7 @@ include ../Rules
$(objpfx)gencat: $(gencat-modules:%=$(objpfx)%.o) $(objpfx)gencat: $(gencat-modules:%=$(objpfx)%.o)
CPPFLAGS := -DNLSPATH='"$(localedir)/%L/%N:$(localedir)/%L/LC_MESSAGES/%N:$(localedir)/%l/%N:$(localedir)/%l/LC_MESSAGES/%N:"' \ CPPFLAGS := -DNLSPATH='"$(msgcatdir)/%L/%N:$(msgcatdir)/%L/LC_MESSAGES/%N:$(msgcatdir)/%l/%N:$(msgcatdir)/%l/LC_MESSAGES/%N:"' \
-DHAVE_CONFIG_H $(CPPFLAGS) -DHAVE_CONFIG_H $(CPPFLAGS)
generated = de.msg de.cat test1.cat test1.h generated = de.msg de.cat test1.cat test1.h

View File

@ -165,7 +165,7 @@ common-ldd-rewrite = -e 's%@RTLD@%$(slibdir)/$(rtld-installed-name)%g' \
-e 's%@VERSION@%$(version)%g' -e 's%@VERSION@%$(version)%g'
sh-ldd-rewrite = $(common-ldd-rewrite) -e 's%@BASH@%/bin/sh%g;s/\$$"/"/g' sh-ldd-rewrite = $(common-ldd-rewrite) -e 's%@BASH@%/bin/sh%g;s/\$$"/"/g'
bash-ldd-rewrite = $(common-ldd-rewrite) -e 's%@BASH@%$(BASH)%g' \ bash-ldd-rewrite = $(common-ldd-rewrite) -e 's%@BASH@%$(BASH)%g' \
-e 's%@TEXTDOMAINDIR@%$(localedir)%g' -e 's%@TEXTDOMAINDIR@%$(msgcatdir)%g'
ifneq ($(have-bash2),yes) ifneq ($(have-bash2),yes)
ldd-shell = sh ldd-shell = sh

View File

@ -69,7 +69,7 @@ extern struct r_debug _r_debug;
/* This symbol refers to the "dynamic structure" in the `.dynamic' section /* This symbol refers to the "dynamic structure" in the `.dynamic' section
of whatever module refers to `_DYNAMIC'. So, to find its own of whatever module refers to `_DYNAMIC'. So, to find its own
`struct r_debug', a program could do: `struct r_debug', a program could do:
for (dyn = _DYNAMIC; dyn->d_tag != DT_NULL) for (dyn = _DYNAMIC; dyn->d_tag != DT_NULL; ++dyn)
if (dyn->d_tag == DT_DEBUG) if (dyn->d_tag == DT_DEBUG)
r_debug = (struct r_debug *) dyn->d_un.d_ptr; r_debug = (struct r_debug *) dyn->d_un.d_ptr;
*/ */

View File

@ -1,4 +1,4 @@
# Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc. # Copyright (C) 1995, 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
# This file is part of the GNU C Library. # This file is part of the GNU C Library.
# The GNU C Library is free software; you can redistribute it and/or # The GNU C Library is free software; you can redistribute it and/or
@ -25,14 +25,14 @@ routines = bindtextdom dcgettext dgettext gettext \
l10nflist explodename l10nflist explodename
distribute = gettext.h gettextP.h hash-string.h loadinfo.h locale.alias distribute = gettext.h gettextP.h hash-string.h loadinfo.h locale.alias
install-others = $(inst_localedir)/locale.alias install-others = $(inst_msgcatdir)/locale.alias
include ../Rules include ../Rules
CPPFLAGS += -D'GNULOCALEDIR="$(localedir)"' \ CPPFLAGS += -D'GNULOCALEDIR="$(msgcatdir)"' \
-D'LOCALE_ALIAS_PATH="$(localedir):$(i18ndir)"' -D'LOCALE_ALIAS_PATH="$(msgcatdir):$(i18ndir)"'
$(inst_localedir)/locale.alias: locale.alias $(+force) $(inst_msgcatdir)/locale.alias: locale.alias $(+force)
$(do-install) $(do-install)
ifdef gettext-srcdir ifdef gettext-srcdir

View File

@ -148,7 +148,7 @@ const struct locale_data _nl_C_LC_COLLATE =
_nl_C_name, _nl_C_name,
NULL, 0, 0, /* no file mapped */ NULL, 0, 0, /* no file mapped */
UNDELETABLE, UNDELETABLE,
21, 30,
{ {
{ word: 0 }, { word: 0 },
{ string: NULL }, { string: NULL },
@ -175,22 +175,10 @@ const struct locale_data _nl_C_LC_COLLATE =
{ string: NULL }, { string: NULL },
{ string: NULL }, { string: NULL },
{ word: 223 }, { word: 223 },
#if __BYTE_ORDER == __LITTLE_ENDIAN
{ string: NULL },
#endif
{ string: (const char *) _nl_C_LC_COLLATE_symbol_hash }, { string: (const char *) _nl_C_LC_COLLATE_symbol_hash },
#if __BYTE_ORDER == __BIG_ENDIAN
{ string: NULL },
#endif
{ string: _nl_C_LC_COLLATE_symbol_strings }, { string: _nl_C_LC_COLLATE_symbol_strings },
{ string: NULL }, { string: NULL },
{ string: NULL }, { string: NULL },
#if __BYTE_ORDER == __LITTLE_ENDIAN { string: (const char *) _nl_C_LC_COLLATE_symbol_classes }
{ string: NULL },
#endif
{ string: (const char *) _nl_C_LC_COLLATE_symbol_classes },
#if __BYTE_ORDER == __BIG_ENDIAN
{ string: NULL },
#endif
} }
}; };

View File

@ -343,29 +343,15 @@ const struct locale_data _nl_C_LC_CTYPE =
_nl_C_name, _nl_C_name,
NULL, 0, 0, /* no file mapped */ NULL, 0, 0, /* no file mapped */
UNDELETABLE, UNDELETABLE,
15, 60,
{ {
{ string: _nl_C_LC_CTYPE_class }, { string: _nl_C_LC_CTYPE_class },
#if BYTE_ORDER == LITTLE_ENDIAN
{ string: NULL }, { string: NULL },
#endif
{ string: (const char *) _nl_C_LC_CTYPE_toupper }, { string: (const char *) _nl_C_LC_CTYPE_toupper },
{ string: (const char *) _nl_C_LC_CTYPE_tolower }, { string: (const char *) _nl_C_LC_CTYPE_tolower },
#if BYTE_ORDER == BIG_ENDIAN
{ string: NULL }, { string: NULL },
#endif
{ string: _nl_C_LC_CTYPE_class32 }, { string: _nl_C_LC_CTYPE_class32 },
#if BYTE_ORDER == LITTLE_ENDIAN
{ string: NULL },
#endif
{ string: (const char *) _nl_C_LC_CTYPE_names }, { string: (const char *) _nl_C_LC_CTYPE_names },
#if BYTE_ORDER == BIG_ENDIAN { word: 256 },
{ string: NULL }, { word: 1 },
{ word: 256 }, { word: 1 },
#endif
#if BYTE_ORDER == LITTLE_ENDIAN
{ word: 0 }, { word: 0 },
#endif
{ string: "upper\0" "lower\0" "alpha\0" "digit\0" "xdigit\0" "space\0" { string: "upper\0" "lower\0" "alpha\0" "digit\0" "xdigit\0" "space\0"
"print\0" "graph\0" "blank\0" "cntrl\0" "punct\0" "alnum\0" "print\0" "graph\0" "blank\0" "cntrl\0" "punct\0" "alnum\0"
"left_to_right\0" "right_to_left\0" "num_terminator\0" "left_to_right\0" "right_to_left\0" "num_terminator\0"
@ -378,14 +364,7 @@ const struct locale_data _nl_C_LC_CTYPE =
{ string: _nl_C_LC_CTYPE_width }, { string: _nl_C_LC_CTYPE_width },
{ word: 1 }, { word: 1 },
{ string: "ANSI_X3.4-1968" }, { string: "ANSI_X3.4-1968" },
#if BYTE_ORDER == BIG_ENDIAN { word: 1 },
{ word: 0 }, { word: 0 },
{ word: 1 }, { word: 0 },
#endif
#if BYTE_ORDER == LITTLE_ENDIAN
{ word: 256 }, { word: 1 },
{ word: 0 }, { word: 1 },
#endif
{ string: "0" }, { string: "0" },
{ string: "1" }, { string: "1" },
{ string: "2" }, { string: "2" },
@ -396,24 +375,7 @@ const struct locale_data _nl_C_LC_CTYPE =
{ string: "7" }, { string: "7" },
{ string: "8" }, { string: "8" },
{ string: "9" }, { string: "9" },
#if BYTE_ORDER == BIG_ENDIAN { word: 1 },
{ word: 1 }, { word: 0 },
#endif
#if BYTE_ORDER == LITTLE_ENDIAN
{ word: 0 }, { word: 1 },
#endif
#if BYTE_ORDER == LITTLE_ENDIAN
{ wstr: (uint32_t *) L"" },
{ wstr: (uint32_t *) L"" },
{ wstr: (uint32_t *) L"" },
{ wstr: (uint32_t *) L"" },
{ wstr: (uint32_t *) L"" },
{ wstr: (uint32_t *) L"" },
{ wstr: (uint32_t *) L"" },
{ wstr: (uint32_t *) L"" },
{ wstr: (uint32_t *) L"" },
{ wstr: (uint32_t *) L"" },
#endif
{ wstr: (uint32_t *) L"0" }, { wstr: (uint32_t *) L"0" },
{ wstr: (uint32_t *) L"1" }, { wstr: (uint32_t *) L"1" },
{ wstr: (uint32_t *) L"2" }, { wstr: (uint32_t *) L"2" },
@ -424,18 +386,6 @@ const struct locale_data _nl_C_LC_CTYPE =
{ wstr: (uint32_t *) L"7" }, { wstr: (uint32_t *) L"7" },
{ wstr: (uint32_t *) L"8" }, { wstr: (uint32_t *) L"8" },
{ wstr: (uint32_t *) L"9" }, { wstr: (uint32_t *) L"9" },
#if BYTE_ORDER == BIG_ENDIAN
{ wstr: (uint32_t *) L"" },
{ wstr: (uint32_t *) L"" },
{ wstr: (uint32_t *) L"" },
{ wstr: (uint32_t *) L"" },
{ wstr: (uint32_t *) L"" },
{ wstr: (uint32_t *) L"" },
{ wstr: (uint32_t *) L"" },
{ wstr: (uint32_t *) L"" },
{ wstr: (uint32_t *) L"" },
{ wstr: (uint32_t *) L"" },
#endif
{ string: "0" }, { string: "0" },
{ string: "1" }, { string: "1" },
{ string: "2" }, { string: "2" },
@ -446,18 +396,6 @@ const struct locale_data _nl_C_LC_CTYPE =
{ string: "7" }, { string: "7" },
{ string: "8" }, { string: "8" },
{ string: "9" }, { string: "9" },
#if BYTE_ORDER == LITTLE_ENDIAN
{ word: L'\0' },
{ word: L'\0' },
{ word: L'\0' },
{ word: L'\0' },
{ word: L'\0' },
{ word: L'\0' },
{ word: L'\0' },
{ word: L'\0' },
{ word: L'\0' },
{ word: L'\0' },
#endif
{ word: L'0' }, { word: L'0' },
{ word: L'1' }, { word: L'1' },
{ word: L'2' }, { word: L'2' },
@ -468,26 +406,8 @@ const struct locale_data _nl_C_LC_CTYPE =
{ word: L'7' }, { word: L'7' },
{ word: L'8' }, { word: L'8' },
{ word: L'9' }, { word: L'9' },
#if BYTE_ORDER == BIG_ENDIAN
{ word: L'\0' },
{ word: L'\0' },
{ word: L'\0' },
{ word: L'\0' },
{ word: L'\0' },
{ word: L'\0' },
{ word: L'\0' },
{ word: L'\0' },
{ word: L'\0' },
{ word: L'\0' },
#endif
{ word: 0 }, { word: 0 },
{ word: 0 }, { word: 0 },
{ word: 0 },
{ word: 0 },
{ string: "" },
{ string: "" },
{ string: "" },
{ string: "" },
{ string: "" }, { string: "" },
{ string: "" }, { string: "" },
{ string: "" }, { string: "" },

View File

@ -1,6 +1,6 @@
/* Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc. /* Copyright (C) 1995, 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1995.
The GNU C Library is free software; you can redistribute it and/or 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 modify it under the terms of the GNU Library General Public License as
@ -33,7 +33,7 @@ const struct locale_data _nl_C_LC_MONETARY =
_nl_C_name, _nl_C_name,
NULL, 0, 0, /* no file mapped */ NULL, 0, 0, /* no file mapped */
UNDELETABLE, UNDELETABLE,
49, 43,
{ {
{ string: "" }, { string: "" },
{ string: "" }, { string: "" },

View File

@ -1,4 +1,4 @@
/* Copyright (C) 1998 Free Software Foundation, Inc. /* Copyright (C) 1998, 1999 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
@ -29,11 +29,9 @@ const struct locale_data _nl_C_LC_PAPER =
_nl_C_name, _nl_C_name,
NULL, 0, 0, /* no file mapped */ NULL, 0, 0, /* no file mapped */
UNDELETABLE, UNDELETABLE,
4, 2,
{ {
{ word: 297 }, { word: 297 },
{ word: 297 },
{ word: 210 },
{ word: 210 } { word: 210 }
} }
}; };

View File

@ -82,7 +82,6 @@ const struct locale_data _nl_C_LC_TIME =
{ string: "" }, { string: "" },
{ word: 0 }, { word: 0 },
{ string: "" }, { string: "" },
{ string: "" },
{ wstr: (const uint32_t *) L"Sun" }, { wstr: (const uint32_t *) L"Sun" },
{ wstr: (const uint32_t *) L"Mon" }, { wstr: (const uint32_t *) L"Mon" },
{ wstr: (const uint32_t *) L"Tue" }, { wstr: (const uint32_t *) L"Tue" },

View File

@ -79,7 +79,7 @@ localepath = "$(localedir):$(i18ndir)"
CPPFLAGS := -DLOCALE_PATH='$(localepath)' \ CPPFLAGS := -DLOCALE_PATH='$(localepath)' \
-DLOCALEDIR='"$(localedir)"' \ -DLOCALEDIR='"$(localedir)"' \
-DLOCALE_ALIAS_PATH='"$(localedir):$(i18ndir)"' \ -DLOCALE_ALIAS_PATH='"$(msgcatdir):$(i18ndir)"' \
-DCHARMAP_PATH='"$(i18ndir)/charmaps"' \ -DCHARMAP_PATH='"$(i18ndir)/charmaps"' \
-DREPERTOIREMAP_PATH='"$(i18ndir)/repertoiremaps"' \ -DREPERTOIREMAP_PATH='"$(i18ndir)/repertoiremaps"' \
-DLOCSRCDIR='"$(i18ndir)/locales"' -DHAVE_CONFIG_H \ -DLOCSRCDIR='"$(i18ndir)/locales"' -DHAVE_CONFIG_H \

View File

@ -46,23 +46,17 @@ DEFINE_CATEGORY
DEFINE_ELEMENT (_NL_COLLATE_RULES, "collate-rules", std, string) DEFINE_ELEMENT (_NL_COLLATE_RULES, "collate-rules", std, string)
DEFINE_ELEMENT (_NL_COLLATE_HASH_SIZE, "collate-hash-size", std, word) DEFINE_ELEMENT (_NL_COLLATE_HASH_SIZE, "collate-hash-size", std, word)
DEFINE_ELEMENT (_NL_COLLATE_HASH_LAYERS, "collate-hash-layers", std, word) DEFINE_ELEMENT (_NL_COLLATE_HASH_LAYERS, "collate-hash-layers", std, word)
DEFINE_ELEMENT (_NL_COLLATE_TABLEWC_EB, "collate-tablewc-eb", std, string) DEFINE_ELEMENT (_NL_COLLATE_TABLEWC, "collate-tablewc", std, string)
DEFINE_ELEMENT (_NL_COLLATE_TABLEWC_EL, "collate-tablewc-el", std, string)
DEFINE_ELEMENT (_NL_COLLATE_UNDEFINED_WC, "collate-undefined-wc", std, word) DEFINE_ELEMENT (_NL_COLLATE_UNDEFINED_WC, "collate-undefined-wc", std, word)
DEFINE_ELEMENT (_NL_COLLATE_EXTRAWC_EB, "collate-extrawc-eb", std, string) DEFINE_ELEMENT (_NL_COLLATE_EXTRAWC, "collate-extrawc", std, string)
DEFINE_ELEMENT (_NL_COLLATE_EXTRAWC_EL, "collate-extrawc-el", std, string)
DEFINE_ELEMENT (_NL_COLLATE_ELEM_HASH_SIZE, "collate-elem-hash-size", std, word) DEFINE_ELEMENT (_NL_COLLATE_ELEM_HASH_SIZE, "collate-elem-hash-size", std, word)
DEFINE_ELEMENT (_NL_COLLATE_ELEM_HASH_EB, "collate-elem-hash-eb", std, string) DEFINE_ELEMENT (_NL_COLLATE_ELEM_HASH, "collate-elem-hash", std, string)
DEFINE_ELEMENT (_NL_COLLATE_ELEM_HASH_EL, "collate-elem-hash-el", std, string)
DEFINE_ELEMENT (_NL_COLLATE_ELEM_STR_POOL, "collate-elem-str-pool", std, string) DEFINE_ELEMENT (_NL_COLLATE_ELEM_STR_POOL, "collate-elem-str-pool", std, string)
DEFINE_ELEMENT (_NL_COLLATE_ELEM_VAL_EB, "collate-elem-val-eb", std, string) DEFINE_ELEMENT (_NL_COLLATE_ELEM_VAL, "collate-elem-val", std, string)
DEFINE_ELEMENT (_NL_COLLATE_ELEM_VAL_EL, "collate-elem-val-el", std, string)
DEFINE_ELEMENT (_NL_COLLATE_SYMB_HASH_SIZE, "collate-symb-hash-size", std, word) DEFINE_ELEMENT (_NL_COLLATE_SYMB_HASH_SIZE, "collate-symb-hash-size", std, word)
DEFINE_ELEMENT (_NL_COLLATE_SYMB_HASH_EB, "collate-symb-hash-eb", std, string) DEFINE_ELEMENT (_NL_COLLATE_SYMB_HASH, "collate-symb-hash", std, string)
DEFINE_ELEMENT (_NL_COLLATE_SYMB_HASH_EL, "collate-symb-hash-el", std, string)
DEFINE_ELEMENT (_NL_COLLATE_SYMB_STR_POOL, "collate-symb-str-pool", std, string) DEFINE_ELEMENT (_NL_COLLATE_SYMB_STR_POOL, "collate-symb-str-pool", std, string)
DEFINE_ELEMENT (_NL_COLLATE_SYMB_CLASSWC_EB, "collate-symb-classwc-eb", std, string) DEFINE_ELEMENT (_NL_COLLATE_SYMB_CLASSWC, "collate-symb-classwc", std, string)
DEFINE_ELEMENT (_NL_COLLATE_SYMB_CLASSWC_EL, "collate-symb-classwc-el", std, string)
), _nl_postload_collate) ), _nl_postload_collate)
@ -73,31 +67,21 @@ DEFINE_CATEGORY
( (
LC_CTYPE, "LC_CTYPE", LC_CTYPE, "LC_CTYPE",
( (
DEFINE_ELEMENT (_NL_CTYPE_CLASS, "ctype-class", std, string) DEFINE_ELEMENT (_NL_CTYPE_CLASS, "ctype-class", std, string)
DEFINE_ELEMENT (_NL_CTYPE_TOUPPER_EB, "ctype-toupper-eb", std, string) DEFINE_ELEMENT (_NL_CTYPE_TOUPPER, "ctype-toupper", std, string)
DEFINE_ELEMENT (_NL_CTYPE_TOLOWER_EB, "ctype-tolower-eb", std, string) DEFINE_ELEMENT (_NL_CTYPE_TOLOWER, "ctype-tolower", std, string)
DEFINE_ELEMENT (_NL_CTYPE_TOUPPER_EL, "ctype-toupper-el", std, string) DEFINE_ELEMENT (_NL_CTYPE_CLASS32, "ctype-class32", std, string)
DEFINE_ELEMENT (_NL_CTYPE_TOLOWER_EL, "ctype-tolower-el", std, string) DEFINE_ELEMENT (_NL_CTYPE_NAMES, "ctype-names", std, string)
DEFINE_ELEMENT (_NL_CTYPE_CLASS32, "ctype-class32", std, string) DEFINE_ELEMENT (_NL_CTYPE_HASH_SIZE, "ctype-hash-size", std, word)
DEFINE_ELEMENT (_NL_CTYPE_NAMES_EB, "ctype-names-eb", std, string) DEFINE_ELEMENT (_NL_CTYPE_HASH_LAYERS, "ctype-hash-layers", std, word)
DEFINE_ELEMENT (_NL_CTYPE_NAMES_EL, "ctype-names-el", std, string) DEFINE_ELEMENT (_NL_CTYPE_CLASS_NAMES, "ctype-class-names", std, stringlist)
DEFINE_ELEMENT (_NL_CTYPE_HASH_SIZE_EB, "ctype-hash-size-eb", std, word) DEFINE_ELEMENT (_NL_CTYPE_MAP_NAMES, "ctype-map-names", std, stringlist)
DEFINE_ELEMENT (_NL_CTYPE_HASH_SIZE_EL, "ctype-hash-size-el", std, word) DEFINE_ELEMENT (_NL_CTYPE_WIDTH, "ctype-width", std, bytearray)
DEFINE_ELEMENT (_NL_CTYPE_HASH_LAYERS_EB, "ctype-hash-layers-eb", std, word) DEFINE_ELEMENT (_NL_CTYPE_MB_CUR_MAX, "ctype-mb-cur-max", std, word)
DEFINE_ELEMENT (_NL_CTYPE_HASH_LAYERS_EL, "ctype-hash-layers-el", std, word) DEFINE_ELEMENT (_NL_CTYPE_CODESET_NAME, "charmap", std, string)
DEFINE_ELEMENT (_NL_CTYPE_CLASS_NAMES, "ctype-class-names", std, stringlist)
DEFINE_ELEMENT (_NL_CTYPE_MAP_NAMES, "ctype-map-names", std, stringlist)
DEFINE_ELEMENT (_NL_CTYPE_WIDTH, "ctype-width", std, bytearray)
DEFINE_ELEMENT (_NL_CTYPE_MB_CUR_MAX, "ctype-mb-cur-max", std, word)
DEFINE_ELEMENT (_NL_CTYPE_CODESET_NAME, "charmap", std, string)
), _nl_postload_ctype) ), _nl_postload_ctype)
#if __BYTE_ORDER == __BIG_ENDIAN
# define _NL_MONETARY_CONVERSION_RATE _NL_MONETARY_CONVERSION_RATE_EB
#else
# define _NL_MONETARY_CONVERSION_RATE _NL_MONETARY_CONVERSION_RATE_EL
#endif
DEFINE_CATEGORY DEFINE_CATEGORY
( (
LC_MONETARY, "LC_MONETARY", LC_MONETARY, "LC_MONETARY",
@ -143,8 +127,7 @@ DEFINE_CATEGORY
DEFINE_ELEMENT (_NL_MONETARY_UNO_VALID_TO, "uno_valid_to", std, word) DEFINE_ELEMENT (_NL_MONETARY_UNO_VALID_TO, "uno_valid_to", std, word)
DEFINE_ELEMENT (_NL_MONETARY_DUO_VALID_FROM, "duo_valid_from", std, word) DEFINE_ELEMENT (_NL_MONETARY_DUO_VALID_FROM, "duo_valid_from", std, word)
DEFINE_ELEMENT (_NL_MONETARY_DUO_VALID_TO, "duo_valid_to", std, word) DEFINE_ELEMENT (_NL_MONETARY_DUO_VALID_TO, "duo_valid_to", std, word)
DEFINE_ELEMENT (_NL_MONETARY_CONVERSION_RATE_EB, "conversion_rate-eb", std, wordarray, 2, 2) DEFINE_ELEMENT (_NL_MONETARY_CONVERSION_RATE, "conversion_rate", std, wordarray, 2, 2)
DEFINE_ELEMENT (_NL_MONETARY_CONVERSION_RATE_EL, "conversion_rate-el", std, wordarray, 2, 2)
), NO_POSTLOAD) ), NO_POSTLOAD)
@ -177,38 +160,22 @@ DEFINE_CATEGORY
DEFINE_ELEMENT (ALT_DIGITS, "alt_digits", opt, stringarray, 0, 100) DEFINE_ELEMENT (ALT_DIGITS, "alt_digits", opt, stringarray, 0, 100)
DEFINE_ELEMENT (ERA_D_T_FMT, "era_d_t_fmt", opt, string) DEFINE_ELEMENT (ERA_D_T_FMT, "era_d_t_fmt", opt, string)
DEFINE_ELEMENT (ERA_T_FMT, "era_t_fmt", opt, string) DEFINE_ELEMENT (ERA_T_FMT, "era_t_fmt", opt, string)
DEFINE_ELEMENT (_NL_TIME_ERA_NUM_ENTRIES_EB, "time-era-num-entries-eb", opt, word) DEFINE_ELEMENT (_NL_TIME_ERA_NUM_ENTRIES, "time-era-num-entries", opt, word)
DEFINE_ELEMENT (_NL_TIME_ERA_NUM_ENTRIES_EL, "time-era-num-entries-el", opt, word) DEFINE_ELEMENT (_NL_TIME_ERA_ENTRIES, "time-era-entries", opt, string)
DEFINE_ELEMENT (_NL_TIME_ERA_ENTRIES_EB, "time-era-entries-eb", opt, string) DEFINE_ELEMENT (_NL_WABDAY_1, "wide-abday", std, stringarray, 7, 7)
DEFINE_ELEMENT (_NL_TIME_ERA_ENTRIES_EL, "time-era-entries-el", opt, string) DEFINE_ELEMENT (_NL_WDAY_1, "wide-day", std, stringarray, 7, 7)
DEFINE_ELEMENT (_NL_WABDAY_1_EB, "wide-abday-eb", std, stringarray, 7, 7) DEFINE_ELEMENT (_NL_WABMON_1, "wide-abmon", std, stringarray, 12, 12)
DEFINE_ELEMENT (_NL_WABDAY_1_EL, "wide-abday-el", std, stringarray, 7, 7) DEFINE_ELEMENT (_NL_WMON_1, "wide-mon", std, stringarray, 12, 12)
DEFINE_ELEMENT (_NL_WDAY_1_EB, "wide-day-eb", std, stringarray, 7, 7) DEFINE_ELEMENT (_NL_WAM_STR, "wide-am_pm", std, stringarray, 2, 2)
DEFINE_ELEMENT (_NL_WDAY_1_EL, "wide-day-el", std, stringarray, 7, 7) DEFINE_ELEMENT (_NL_WD_T_FMT, "wide-d_t_fmt", std, string)
DEFINE_ELEMENT (_NL_WABMON_1_EB, "wide-abmon-eb", std, stringarray, 12, 12) DEFINE_ELEMENT (_NL_WD_FMT, "wide-d_fmt", std, string)
DEFINE_ELEMENT (_NL_WABMON_1_EL, "wide-abmon-el", std, stringarray, 12, 12) DEFINE_ELEMENT (_NL_WT_FMT, "wide-t_fmt", std, string)
DEFINE_ELEMENT (_NL_WMON_1_EB, "wide-mon-eb", std, stringarray, 12, 12) DEFINE_ELEMENT (_NL_WT_FMT_AMPM, "wide-t_fmt_ampm", std, string)
DEFINE_ELEMENT (_NL_WMON_1_EL, "wide-mon-el", std, stringarray, 12, 12) DEFINE_ELEMENT (_NL_WERA_YEAR, "wide-era_year", opt, string)
DEFINE_ELEMENT (_NL_WAM_STR_EB, "wide-am_pm-eb", std, stringarray, 2, 2) DEFINE_ELEMENT (_NL_WERA_D_FMT, "wide-era_d_fmt", opt, string)
DEFINE_ELEMENT (_NL_WAM_STR_EL, "wide-am_pm-el", std, stringarray, 2, 2) DEFINE_ELEMENT (_NL_WALT_DIGITS, "wide-alt_digits", opt, stringarray, 0, 100)
DEFINE_ELEMENT (_NL_WD_T_FMT_EB, "wide-d_t_fmt-eb", std, string) DEFINE_ELEMENT (_NL_WERA_D_T_FMT, "wide-era_d_t_fmt", opt, string)
DEFINE_ELEMENT (_NL_WD_T_FMT_EL, "wide-d_t_fmt-el", std, string) DEFINE_ELEMENT (_NL_WERA_T_FMT, "wide-era_t_fmt", opt, string)
DEFINE_ELEMENT (_NL_WD_FMT_EB, "wide-d_fmt-eb", std, string)
DEFINE_ELEMENT (_NL_WD_FMT_EL, "wide-d_fmt-el", std, string)
DEFINE_ELEMENT (_NL_WT_FMT_EB, "wide-t_fmt-eb", std, string)
DEFINE_ELEMENT (_NL_WT_FMT_EL, "wide-t_fmt-el", std, string)
DEFINE_ELEMENT (_NL_WT_FMT_AMPM_EB, "wide-t_fmt_ampm-eb", std, string)
DEFINE_ELEMENT (_NL_WT_FMT_AMPM_EL, "wide-t_fmt_ampm-el", std, string)
DEFINE_ELEMENT (_NL_WERA_YEAR_EB, "wide-era_year-eb", opt, string)
DEFINE_ELEMENT (_NL_WERA_YEAR_EL, "wide-era_year-el", opt, string)
DEFINE_ELEMENT (_NL_WERA_D_FMT_EB, "wide-era_d_fmt-eb", opt, string)
DEFINE_ELEMENT (_NL_WERA_D_FMT_EL, "wide-era_d_fmt-el", opt, string)
DEFINE_ELEMENT (_NL_WALT_DIGITS_EB, "wide-alt_digits-eb", opt, stringarray, 0, 100)
DEFINE_ELEMENT (_NL_WALT_DIGITS_EL, "wide-alt_digits-el", opt, stringarray, 0, 100)
DEFINE_ELEMENT (_NL_WERA_D_T_FMT_EB, "wide-era_d_t_fmt-eb", opt, string)
DEFINE_ELEMENT (_NL_WERA_D_T_FMT_EL, "wide-era_d_t_fmt-el", opt, string)
DEFINE_ELEMENT (_NL_WERA_T_FMT_EB, "wide-era_t_fmt-eb", opt, string)
DEFINE_ELEMENT (_NL_WERA_T_FMT_EL, "wide-era_t_fmt-el", opt, string)
DEFINE_ELEMENT (_NL_TIME_WEEK_NDAYS, "week-ndays", std, byte) DEFINE_ELEMENT (_NL_TIME_WEEK_NDAYS, "week-ndays", std, byte)
DEFINE_ELEMENT (_NL_TIME_WEEK_1STDAY, "week-1stday", std, word) DEFINE_ELEMENT (_NL_TIME_WEEK_1STDAY, "week-1stday", std, word)
DEFINE_ELEMENT (_NL_TIME_WEEK_1STWEEK, "week-1stweek", std, byte) DEFINE_ELEMENT (_NL_TIME_WEEK_1STWEEK, "week-1stweek", std, byte)
@ -233,10 +200,8 @@ DEFINE_CATEGORY
( (
LC_PAPER, "LC_PAPER", LC_PAPER, "LC_PAPER",
( (
DEFINE_ELEMENT (_NL_PAPER_HEIGHT_EB, "height-eb", std, word) DEFINE_ELEMENT (_NL_PAPER_HEIGHT, "height", std, word)
DEFINE_ELEMENT (_NL_PAPER_HEIGHT_EL, "height-el", std, word) DEFINE_ELEMENT (_NL_PAPER_WIDTH, "width", std, word)
DEFINE_ELEMENT (_NL_PAPER_WIDTH_EB, "width-eb", std, word)
DEFINE_ELEMENT (_NL_PAPER_WIDTH_EL, "width-el", std, word)
), NO_POSTLOAD) ), NO_POSTLOAD)
DEFINE_CATEGORY DEFINE_CATEGORY
@ -261,8 +226,7 @@ DEFINE_CATEGORY
DEFINE_ELEMENT (_NL_ADDRESS_COUNTRY_AB2, "country_ab2", std, string) DEFINE_ELEMENT (_NL_ADDRESS_COUNTRY_AB2, "country_ab2", std, string)
DEFINE_ELEMENT (_NL_ADDRESS_COUNTRY_AB3, "country_ab3", std, string) DEFINE_ELEMENT (_NL_ADDRESS_COUNTRY_AB3, "country_ab3", std, string)
DEFINE_ELEMENT (_NL_ADDRESS_COUNTRY_CAR, "country_car", std, string) DEFINE_ELEMENT (_NL_ADDRESS_COUNTRY_CAR, "country_car", std, string)
DEFINE_ELEMENT (_NL_ADDRESS_COUNTRY_NUM_EB, "country_num-eb", std, word) DEFINE_ELEMENT (_NL_ADDRESS_COUNTRY_NUM, "country_num", std, word)
DEFINE_ELEMENT (_NL_ADDRESS_COUNTRY_NUM_EL, "country_num-el", std, word)
DEFINE_ELEMENT (_NL_ADDRESS_COUNTRY_ISBN, "country_isbn", std, string) DEFINE_ELEMENT (_NL_ADDRESS_COUNTRY_ISBN, "country_isbn", std, string)
DEFINE_ELEMENT (_NL_ADDRESS_LANG_NAME, "lang_name", std, string) DEFINE_ELEMENT (_NL_ADDRESS_LANG_NAME, "lang_name", std, string)
DEFINE_ELEMENT (_NL_ADDRESS_LANG_AB, "lang_ab", std, string) DEFINE_ELEMENT (_NL_ADDRESS_LANG_AB, "lang_ab", std, string)

View File

@ -155,118 +155,67 @@ enum
ERA_T_FMT, /* Time in alternate era format. */ ERA_T_FMT, /* Time in alternate era format. */
#define ERA_T_FMT ERA_T_FMT #define ERA_T_FMT ERA_T_FMT
_NL_TIME_ERA_NUM_ENTRIES_EB, /* Number entries in the era arrays. */ _NL_TIME_ERA_NUM_ENTRIES, /* Number entries in the era arrays. */
_NL_TIME_ERA_NUM_ENTRIES_EL, /* Number entries in the era arrays. */ _NL_TIME_ERA_ENTRIES, /* Structure with era entries in usable form.*/
_NL_TIME_ERA_ENTRIES_EB, /* Structure with era entries in usable form.*/
_NL_TIME_ERA_ENTRIES_EL,
_NL_WABDAY_1_EB, /* Sun */ _NL_WABDAY_1, /* Sun */
_NL_WABDAY_2_EB, _NL_WABDAY_2,
_NL_WABDAY_3_EB, _NL_WABDAY_3,
_NL_WABDAY_4_EB, _NL_WABDAY_4,
_NL_WABDAY_5_EB, _NL_WABDAY_5,
_NL_WABDAY_6_EB, _NL_WABDAY_6,
_NL_WABDAY_7_EB, _NL_WABDAY_7,
_NL_WABDAY_1_EL, /* Sun */
_NL_WABDAY_2_EL,
_NL_WABDAY_3_EL,
_NL_WABDAY_4_EL,
_NL_WABDAY_5_EL,
_NL_WABDAY_6_EL,
_NL_WABDAY_7_EL,
/* Long-named days of the week. */ /* Long-named days of the week. */
_NL_WDAY_1_EB, /* Sunday */ _NL_WDAY_1, /* Sunday */
_NL_WDAY_2_EB, /* Monday */ _NL_WDAY_2, /* Monday */
_NL_WDAY_3_EB, /* Tuesday */ _NL_WDAY_3, /* Tuesday */
_NL_WDAY_4_EB, /* Wednesday */ _NL_WDAY_4, /* Wednesday */
_NL_WDAY_5_EB, /* Thursday */ _NL_WDAY_5, /* Thursday */
_NL_WDAY_6_EB, /* Friday */ _NL_WDAY_6, /* Friday */
_NL_WDAY_7_EB, /* Saturday */ _NL_WDAY_7, /* Saturday */
_NL_WDAY_1_EL, /* Sunday */
_NL_WDAY_2_EL, /* Monday */
_NL_WDAY_3_EL, /* Tuesday */
_NL_WDAY_4_EL, /* Wednesday */
_NL_WDAY_5_EL, /* Thursday */
_NL_WDAY_6_EL, /* Friday */
_NL_WDAY_7_EL, /* Saturday */
/* Abbreviated month names. */ /* Abbreviated month names. */
_NL_WABMON_1_EB, /* Jan */ _NL_WABMON_1, /* Jan */
_NL_WABMON_2_EB, _NL_WABMON_2,
_NL_WABMON_3_EB, _NL_WABMON_3,
_NL_WABMON_4_EB, _NL_WABMON_4,
_NL_WABMON_5_EB, _NL_WABMON_5,
_NL_WABMON_6_EB, _NL_WABMON_6,
_NL_WABMON_7_EB, _NL_WABMON_7,
_NL_WABMON_8_EB, _NL_WABMON_8,
_NL_WABMON_9_EB, _NL_WABMON_9,
_NL_WABMON_10_EB, _NL_WABMON_10,
_NL_WABMON_11_EB, _NL_WABMON_11,
_NL_WABMON_12_EB, _NL_WABMON_12,
_NL_WABMON_1_EL, /* Jan */
_NL_WABMON_2_EL,
_NL_WABMON_3_EL,
_NL_WABMON_4_EL,
_NL_WABMON_5_EL,
_NL_WABMON_6_EL,
_NL_WABMON_7_EL,
_NL_WABMON_8_EL,
_NL_WABMON_9_EL,
_NL_WABMON_10_EL,
_NL_WABMON_11_EL,
_NL_WABMON_12_EL,
/* Long month names. */ /* Long month names. */
_NL_WMON_1_EB, /* January */ _NL_WMON_1, /* January */
_NL_WMON_2_EB, _NL_WMON_2,
_NL_WMON_3_EB, _NL_WMON_3,
_NL_WMON_4_EB, _NL_WMON_4,
_NL_WMON_5_EB, _NL_WMON_5,
_NL_WMON_6_EB, _NL_WMON_6,
_NL_WMON_7_EB, _NL_WMON_7,
_NL_WMON_8_EB, _NL_WMON_8,
_NL_WMON_9_EB, _NL_WMON_9,
_NL_WMON_10_EB, _NL_WMON_10,
_NL_WMON_11_EB, _NL_WMON_11,
_NL_WMON_12_EB, _NL_WMON_12,
_NL_WMON_1_EL, /* January */
_NL_WMON_2_EL,
_NL_WMON_3_EL,
_NL_WMON_4_EL,
_NL_WMON_5_EL,
_NL_WMON_6_EL,
_NL_WMON_7_EL,
_NL_WMON_8_EL,
_NL_WMON_9_EL,
_NL_WMON_10_EL,
_NL_WMON_11_EL,
_NL_WMON_12_EL,
_NL_WAM_STR_EB, /* Ante meridian string. */ _NL_WAM_STR, /* Ante meridian string. */
_NL_WPM_STR_EB, /* Post meridian string. */ _NL_WPM_STR, /* Post meridian string. */
_NL_WAM_STR_EL, /* Ante meridian string. */
_NL_WPM_STR_EL, /* Post meridian string. */
_NL_WD_T_FMT_EB, /* Date and time format for strftime. */ _NL_WD_T_FMT, /* Date and time format for strftime. */
_NL_WD_FMT_EB, /* Date format for strftime. */ _NL_WD_FMT, /* Date format for strftime. */
_NL_WT_FMT_EB, /* Time format for strftime. */ _NL_WT_FMT, /* Time format for strftime. */
_NL_WT_FMT_AMPM_EB, /* 12-hour time format for strftime. */ _NL_WT_FMT_AMPM, /* 12-hour time format for strftime. */
_NL_WD_T_FMT_EL, /* Date and time format for strftime. */
_NL_WD_FMT_EL, /* Date format for strftime. */
_NL_WT_FMT_EL, /* Time format for strftime. */
_NL_WT_FMT_AMPM_EL, /* 12-hour time format for strftime. */
_NL_WERA_YEAR_EB, /* Year in alternate era format. */ _NL_WERA_YEAR, /* Year in alternate era format. */
_NL_WERA_D_FMT_EB, /* Date in alternate era format. */ _NL_WERA_D_FMT, /* Date in alternate era format. */
_NL_WALT_DIGITS_EB, /* Alternate symbols for digits. */ _NL_WALT_DIGITS, /* Alternate symbols for digits. */
_NL_WERA_D_T_FMT_EB, /* Date and time in alternate era format. */ _NL_WERA_D_T_FMT, /* Date and time in alternate era format. */
_NL_WERA_T_FMT_EB, /* Time in alternate era format. */ _NL_WERA_T_FMT, /* Time in alternate era format. */
_NL_WERA_YEAR_EL, /* Year in alternate era format. */
_NL_WERA_D_FMT_EL, /* Date in alternate era format. */
_NL_WALT_DIGITS_EL, /* Alternate symbols for digits. */
_NL_WERA_D_T_FMT_EL, /* Date and time in alternate era format. */
_NL_WERA_T_FMT_EL, /* Time in alternate era format. */
_NL_TIME_WEEK_NDAYS, _NL_TIME_WEEK_NDAYS,
_NL_TIME_WEEK_1STDAY, _NL_TIME_WEEK_1STDAY,
@ -285,49 +234,35 @@ enum
_NL_COLLATE_RULES, _NL_COLLATE_RULES,
_NL_COLLATE_HASH_SIZE, _NL_COLLATE_HASH_SIZE,
_NL_COLLATE_HASH_LAYERS, _NL_COLLATE_HASH_LAYERS,
_NL_COLLATE_TABLEMB_EB, _NL_COLLATE_TABLEMB,
_NL_COLLATE_TABLEMB_EL, _NL_COLLATE_TABLEWC,
_NL_COLLATE_TABLEWC_EB,
_NL_COLLATE_TABLEWC_EL,
_NL_COLLATE_UNDEFINED_MB, _NL_COLLATE_UNDEFINED_MB,
_NL_COLLATE_UNDEFINED_WC, _NL_COLLATE_UNDEFINED_WC,
_NL_COLLATE_EXTRAMB_EB, _NL_COLLATE_EXTRAMB,
_NL_COLLATE_EXTRAMB_EL, _NL_COLLATE_EXTRAWC,
_NL_COLLATE_EXTRAWC_EB,
_NL_COLLATE_EXTRAWC_EL,
_NL_COLLATE_ELEM_HASH_SIZE, _NL_COLLATE_ELEM_HASH_SIZE,
_NL_COLLATE_ELEM_HASH_EB, _NL_COLLATE_ELEM_HASH,
_NL_COLLATE_ELEM_HASH_EL,
_NL_COLLATE_ELEM_STR_POOL, _NL_COLLATE_ELEM_STR_POOL,
_NL_COLLATE_ELEM_VAL_EB, _NL_COLLATE_ELEM_VAL,
_NL_COLLATE_ELEM_VAL_EL, _NL_COLLATE_ELEM_VALMB,
_NL_COLLATE_ELEM_VALMB_EB, _NL_COLLATE_ELEM_VALWC,
_NL_COLLATE_ELEM_VALMB_EL,
_NL_COLLATE_ELEM_VALWC_EB,
_NL_COLLATE_ELEM_VALWC_EL,
_NL_COLLATE_SYMB_HASH_SIZE, _NL_COLLATE_SYMB_HASH_SIZE,
_NL_COLLATE_SYMB_HASH_EB, _NL_COLLATE_SYMB_HASH,
_NL_COLLATE_SYMB_HASH_EL,
_NL_COLLATE_SYMB_STR_POOL, _NL_COLLATE_SYMB_STR_POOL,
_NL_COLLATE_SYMB_CLASSMB_EB, _NL_COLLATE_SYMB_CLASSMB,
_NL_COLLATE_SYMB_CLASSMB_EL, _NL_COLLATE_SYMB_CLASSWC,
_NL_COLLATE_SYMB_CLASSWC_EB,
_NL_COLLATE_SYMB_CLASSWC_EL,
_NL_NUM_LC_COLLATE, _NL_NUM_LC_COLLATE,
/* LC_CTYPE category: character classification. /* LC_CTYPE category: character classification.
This information is accessed by the functions in <ctype.h>. This information is accessed by the functions in <ctype.h>.
These `nl_langinfo' names are used only internally. */ These `nl_langinfo' names are used only internally. */
_NL_CTYPE_CLASS = _NL_ITEM (LC_CTYPE, 0), _NL_CTYPE_CLASS = _NL_ITEM (LC_CTYPE, 0),
_NL_CTYPE_TOUPPER_EB, _NL_CTYPE_TOUPPER,
_NL_CTYPE_TOLOWER_EB, _NL_CTYPE_TOLOWER,
_NL_CTYPE_TOUPPER_EL,
_NL_CTYPE_TOLOWER_EL,
_NL_CTYPE_CLASS32, _NL_CTYPE_CLASS32,
_NL_CTYPE_NAMES_EB, _NL_CTYPE_NAMES,
_NL_CTYPE_NAMES_EL, _NL_CTYPE_HASH_SIZE,
_NL_CTYPE_HASH_SIZE_EB, _NL_CTYPE_HASH_LAYERS,
_NL_CTYPE_HASH_LAYERS_EB,
_NL_CTYPE_CLASS_NAMES, _NL_CTYPE_CLASS_NAMES,
_NL_CTYPE_MAP_NAMES, _NL_CTYPE_MAP_NAMES,
_NL_CTYPE_WIDTH, _NL_CTYPE_WIDTH,
@ -336,10 +271,7 @@ enum
#ifdef __USE_XOPEN #ifdef __USE_XOPEN
CODESET = _NL_CTYPE_CODESET_NAME, CODESET = _NL_CTYPE_CODESET_NAME,
#endif #endif
_NL_CTYPE_HASH_SIZE_EL, _NL_CTYPE_INDIGITS_MB_LEN,
_NL_CTYPE_HASH_LAYERS_EL,
_NL_CTYPE_INDIGITS_MB_LEN_EB,
_NL_CTYPE_INDIGITS_MB_LEN_EL,
_NL_CTYPE_INDIGITS0_MB, _NL_CTYPE_INDIGITS0_MB,
_NL_CTYPE_INDIGITS1_MB, _NL_CTYPE_INDIGITS1_MB,
_NL_CTYPE_INDIGITS2_MB, _NL_CTYPE_INDIGITS2_MB,
@ -350,28 +282,17 @@ enum
_NL_CTYPE_INDIGITS7_MB, _NL_CTYPE_INDIGITS7_MB,
_NL_CTYPE_INDIGITS8_MB, _NL_CTYPE_INDIGITS8_MB,
_NL_CTYPE_INDIGITS9_MB, _NL_CTYPE_INDIGITS9_MB,
_NL_CTYPE_INDIGITS_WC_LEN_EB, _NL_CTYPE_INDIGITS_WC_LEN,
_NL_CTYPE_INDIGITS_WC_LEN_EL, _NL_CTYPE_INDIGITS0_WC,
_NL_CTYPE_INDIGITS0_WC_EB, _NL_CTYPE_INDIGITS1_WC,
_NL_CTYPE_INDIGITS1_WC_EB, _NL_CTYPE_INDIGITS2_WC,
_NL_CTYPE_INDIGITS2_WC_EB, _NL_CTYPE_INDIGITS3_WC,
_NL_CTYPE_INDIGITS3_WC_EB, _NL_CTYPE_INDIGITS4_WC,
_NL_CTYPE_INDIGITS4_WC_EB, _NL_CTYPE_INDIGITS5_WC,
_NL_CTYPE_INDIGITS5_WC_EB, _NL_CTYPE_INDIGITS6_WC,
_NL_CTYPE_INDIGITS6_WC_EB, _NL_CTYPE_INDIGITS7_WC,
_NL_CTYPE_INDIGITS7_WC_EB, _NL_CTYPE_INDIGITS8_WC,
_NL_CTYPE_INDIGITS8_WC_EB, _NL_CTYPE_INDIGITS9_WC,
_NL_CTYPE_INDIGITS9_WC_EB,
_NL_CTYPE_INDIGITS0_WC_EL,
_NL_CTYPE_INDIGITS1_WC_EL,
_NL_CTYPE_INDIGITS2_WC_EL,
_NL_CTYPE_INDIGITS3_WC_EL,
_NL_CTYPE_INDIGITS4_WC_EL,
_NL_CTYPE_INDIGITS5_WC_EL,
_NL_CTYPE_INDIGITS6_WC_EL,
_NL_CTYPE_INDIGITS7_WC_EL,
_NL_CTYPE_INDIGITS8_WC_EL,
_NL_CTYPE_INDIGITS9_WC_EL,
_NL_CTYPE_OUTDIGIT0_MB, _NL_CTYPE_OUTDIGIT0_MB,
_NL_CTYPE_OUTDIGIT1_MB, _NL_CTYPE_OUTDIGIT1_MB,
_NL_CTYPE_OUTDIGIT2_MB, _NL_CTYPE_OUTDIGIT2_MB,
@ -382,38 +303,22 @@ enum
_NL_CTYPE_OUTDIGIT7_MB, _NL_CTYPE_OUTDIGIT7_MB,
_NL_CTYPE_OUTDIGIT8_MB, _NL_CTYPE_OUTDIGIT8_MB,
_NL_CTYPE_OUTDIGIT9_MB, _NL_CTYPE_OUTDIGIT9_MB,
_NL_CTYPE_OUTDIGIT0_WC_EB, _NL_CTYPE_OUTDIGIT0_WC,
_NL_CTYPE_OUTDIGIT1_WC_EB, _NL_CTYPE_OUTDIGIT1_WC,
_NL_CTYPE_OUTDIGIT2_WC_EB, _NL_CTYPE_OUTDIGIT2_WC,
_NL_CTYPE_OUTDIGIT3_WC_EB, _NL_CTYPE_OUTDIGIT3_WC,
_NL_CTYPE_OUTDIGIT4_WC_EB, _NL_CTYPE_OUTDIGIT4_WC,
_NL_CTYPE_OUTDIGIT5_WC_EB, _NL_CTYPE_OUTDIGIT5_WC,
_NL_CTYPE_OUTDIGIT6_WC_EB, _NL_CTYPE_OUTDIGIT6_WC,
_NL_CTYPE_OUTDIGIT7_WC_EB, _NL_CTYPE_OUTDIGIT7_WC,
_NL_CTYPE_OUTDIGIT8_WC_EB, _NL_CTYPE_OUTDIGIT8_WC,
_NL_CTYPE_OUTDIGIT9_WC_EB, _NL_CTYPE_OUTDIGIT9_WC,
_NL_CTYPE_OUTDIGIT0_WC_EL, _NL_CTYPE_TRANSLIT_HASH_SIZE,
_NL_CTYPE_OUTDIGIT1_WC_EL, _NL_CTYPE_TRANSLIT_HASH_LAYERS,
_NL_CTYPE_OUTDIGIT2_WC_EL, _NL_CTYPE_TRANSLIT_FROM_IDX,
_NL_CTYPE_OUTDIGIT3_WC_EL, _NL_CTYPE_TRANSLIT_FROM_TBL,
_NL_CTYPE_OUTDIGIT4_WC_EL, _NL_CTYPE_TRANSLIT_TO_IDX,
_NL_CTYPE_OUTDIGIT5_WC_EL, _NL_CTYPE_TRANSLIT_TO_TBL,
_NL_CTYPE_OUTDIGIT6_WC_EL,
_NL_CTYPE_OUTDIGIT7_WC_EL,
_NL_CTYPE_OUTDIGIT8_WC_EL,
_NL_CTYPE_OUTDIGIT9_WC_EL,
_NL_CTYPE_TRANSLIT_HASH_SIZE_EB,
_NL_CTYPE_TRANSLIT_HASH_SIZE_EL,
_NL_CTYPE_TRANSLIT_HASH_LAYERS_EB,
_NL_CTYPE_TRANSLIT_HASH_LAYERS_EL,
_NL_CTYPE_TRANSLIT_FROM_IDX_EB,
_NL_CTYPE_TRANSLIT_FROM_IDX_EL,
_NL_CTYPE_TRANSLIT_FROM_TBL_EB,
_NL_CTYPE_TRANSLIT_FROM_TBL_EL,
_NL_CTYPE_TRANSLIT_TO_IDX_EB,
_NL_CTYPE_TRANSLIT_TO_IDX_EL,
_NL_CTYPE_TRANSLIT_TO_TBL_EB,
_NL_CTYPE_TRANSLIT_TO_TBL_EL,
_NL_NUM_LC_CTYPE, _NL_NUM_LC_CTYPE,
/* LC_MONETARY category: formatting of monetary quantities. /* LC_MONETARY category: formatting of monetary quantities.
@ -479,8 +384,7 @@ enum
_NL_MONETARY_UNO_VALID_TO, _NL_MONETARY_UNO_VALID_TO,
_NL_MONETARY_DUO_VALID_FROM, _NL_MONETARY_DUO_VALID_FROM,
_NL_MONETARY_DUO_VALID_TO, _NL_MONETARY_DUO_VALID_TO,
_NL_MONETARY_CONVERSION_RATE_EB, _NL_MONETARY_CONVERSION_RATE,
_NL_MONETARY_CONVERSION_RATE_EL,
_NL_NUM_LC_MONETARY, _NL_NUM_LC_MONETARY,
/* LC_NUMERIC category: formatting of numbers. /* LC_NUMERIC category: formatting of numbers.
@ -511,10 +415,8 @@ enum
#define NOSTR NOSTR #define NOSTR NOSTR
_NL_NUM_LC_MESSAGES, _NL_NUM_LC_MESSAGES,
_NL_PAPER_HEIGHT_EB = _NL_ITEM (LC_PAPER, 0), _NL_PAPER_HEIGHT = _NL_ITEM (LC_PAPER, 0),
_NL_PAPER_HEIGHT_EL, _NL_PAPER_WIDTH,
_NL_PAPER_WIDTH_EB,
_NL_PAPER_WIDTH_EL,
_NL_NUM_LC_PAPER, _NL_NUM_LC_PAPER,
_NL_NAME_NAME_FMT = _NL_ITEM (LC_NAME, 0), _NL_NAME_NAME_FMT = _NL_ITEM (LC_NAME, 0),
@ -531,8 +433,7 @@ enum
_NL_ADDRESS_COUNTRY_AB2, _NL_ADDRESS_COUNTRY_AB2,
_NL_ADDRESS_COUNTRY_AB3, _NL_ADDRESS_COUNTRY_AB3,
_NL_ADDRESS_COUNTRY_CAR, _NL_ADDRESS_COUNTRY_CAR,
_NL_ADDRESS_COUNTRY_NUM_EB, _NL_ADDRESS_COUNTRY_NUM,
_NL_ADDRESS_COUNTRY_NUM_EL,
_NL_ADDRESS_COUNTRY_ISBN, _NL_ADDRESS_COUNTRY_ISBN,
_NL_ADDRESS_LANG_NAME, _NL_ADDRESS_LANG_NAME,
_NL_ADDRESS_LANG_AB, _NL_ADDRESS_LANG_AB,

View File

@ -45,27 +45,20 @@ const u_int32_t *__collate_symbol_classeswc = _nl_C_LC_COLLATE_symbol_classes;
void void
_nl_postload_collate (void) _nl_postload_collate (void)
{ {
#if BYTE_ORDER == BIG_ENDIAN
#define bo(x) x##_EB
#elif BYTE_ORDER == LITTLE_ENDIAN
#define bo(x) x##_EL
#else
#error bizarre byte order
#endif
#define paste(a,b) paste1(a,b) #define paste(a,b) paste1(a,b)
#define paste1(a,b) a##b #define paste1(a,b) a##b
#define current(x) \ #define current(x) \
((const unsigned int *) _NL_CURRENT (LC_COLLATE, paste(_NL_COLLATE_,x))) ((const unsigned int *) _NL_CURRENT (LC_COLLATE, paste(_NL_COLLATE_,x)))
__collate_tablewc = current (bo (TABLEWC)); __collate_tablewc = current (TABLEWC);
__collate_extrawc = current (bo (EXTRAWC)); __collate_extrawc = current (EXTRAWC);
__collate_element_hash = current (bo (ELEM_HASH)); __collate_element_hash = current (ELEM_HASH);
__collate_element_strings = (const char *) current (ELEM_STR_POOL); __collate_element_strings = (const char *) current (ELEM_STR_POOL);
__collate_element_values = (const uint32_t *) current (bo (ELEM_VAL)); __collate_element_values = (const uint32_t *) current (ELEM_VAL);
__collate_symbol_hash = current (bo (SYMB_HASH)); __collate_symbol_hash = current (SYMB_HASH);
__collate_symbol_strings = (const char *) current (SYMB_STR_POOL); __collate_symbol_strings = (const char *) current (SYMB_STR_POOL);
__collate_symbol_classeswc = current (bo (SYMB_CLASSWC)); __collate_symbol_classeswc = current (SYMB_CLASSWC);
} }

View File

@ -1,5 +1,5 @@
/* Define current locale data for LC_CTYPE category. /* Define current locale data for LC_CTYPE category.
Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc. Copyright (C) 1995, 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or The GNU C Library is free software; you can redistribute it and/or
@ -34,13 +34,6 @@ _NL_CURRENT_DEFINE (LC_CTYPE);
void void
_nl_postload_ctype (void) _nl_postload_ctype (void)
{ {
#if BYTE_ORDER == BIG_ENDIAN
#define bo(x) x##_EB
#elif BYTE_ORDER == LITTLE_ENDIAN
#define bo(x) x##_EL
#else
#error bizarre byte order
#endif
#define paste(a,b) paste1(a,b) #define paste(a,b) paste1(a,b)
#define paste1(a,b) a##b #define paste1(a,b) a##b
@ -52,9 +45,9 @@ _nl_postload_ctype (void)
extern const unsigned char *__ctype_width; extern const unsigned char *__ctype_width;
__ctype_b = current (uint16_t, CLASS, 128); __ctype_b = current (uint16_t, CLASS, 128);
__ctype_toupper = current (uint32_t, bo (TOUPPER), 128); __ctype_toupper = current (uint32_t, TOUPPER, 128);
__ctype_tolower = current (uint32_t, bo (TOLOWER), 128); __ctype_tolower = current (uint32_t, TOLOWER, 128);
__ctype32_b = current (uint32_t, CLASS32, 0); __ctype32_b = current (uint32_t, CLASS32, 0);
__ctype_names = current (uint32_t, bo (NAMES), 0); __ctype_names = current (uint32_t, NAMES, 0);
__ctype_width = current (unsigned char, WIDTH, 0); __ctype_width = current (unsigned char, WIDTH, 0);
} }

View File

@ -1,5 +1,5 @@
/* Define current locale data for LC_MONETARY category. /* Define current locale data for LC_MONETARY category.
Copyright (C) 1995, 1997, 1998 Free Software Foundation, Inc. Copyright (C) 1995, 1997, 1998, 1999 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or The GNU C Library is free software; you can redistribute it and/or
@ -20,24 +20,3 @@
#include "localeinfo.h" #include "localeinfo.h"
_NL_CURRENT_DEFINE (LC_MONETARY); _NL_CURRENT_DEFINE (LC_MONETARY);
const uint32_t *__monetary_conversion_rate;
void
_nl_postload_monetary (void)
{
#if BYTE_ORDER == BIG_ENDIAN
#define bo(x) x##_EB
#elif BYTE_ORDER == LITTLE_ENDIAN
#define bo(x) x##_EL
#else
#error bizarre byte order
#endif
#define paste(a,b) paste1(a,b)
#define paste1(a,b) a##b
#define current(type,x,offset) \
((const type *) _NL_CURRENT (LC_MONETARY, paste(_NL_MONETARY_,x)) + offset)
__monetary_conversion_rate = current (uint32_t, bo (CONVERSION_RATE), 0);
}

View File

@ -64,13 +64,8 @@ _nl_get_era_entry (const struct tm *tp)
if (era_initialized == 0) if (era_initialized == 0)
{ {
#if __BYTE_ORDER == __LITTLE_ENDIAN
size_t new_num_eras = _NL_CURRENT_WORD (LC_TIME, size_t new_num_eras = _NL_CURRENT_WORD (LC_TIME,
_NL_TIME_ERA_NUM_ENTRIES_EL); _NL_TIME_ERA_NUM_ENTRIES);
#else
size_t new_num_eras = _NL_CURRENT_WORD (LC_TIME,
_NL_TIME_ERA_NUM_ENTRIES_EB);
#endif
if (eras != NULL && new_num_eras == 0) if (eras != NULL && new_num_eras == 0)
{ {
@ -86,11 +81,7 @@ _nl_get_era_entry (const struct tm *tp)
num_eras = 0; num_eras = 0;
else else
{ {
#if __BYTE_ORDER == __LITTLE_ENDIAN const char *ptr = _NL_CURRENT (LC_TIME, _NL_TIME_ERA_ENTRIES);
const char *ptr = _NL_CURRENT (LC_TIME, _NL_TIME_ERA_ENTRIES_EL);
#else
const char *ptr = _NL_CURRENT (LC_TIME, _NL_TIME_ERA_ENTRIES_EB);
#endif
num_eras = new_num_eras; num_eras = new_num_eras;
for (cnt = 0; cnt < num_eras; ++cnt) for (cnt = 0; cnt < num_eras; ++cnt)
@ -193,11 +184,7 @@ _nl_get_walt_digit (unsigned int number)
if (walt_digits != NULL) if (walt_digits != NULL)
{ {
#if __BYTE_ORDER == __LITTLE_ENDIAN const wchar_t *ptr = _NL_CURRENT_WSTR (LC_TIME, _NL_WALT_DIGITS);
const wchar_t *ptr = _NL_CURRENT_WSTR (LC_TIME, _NL_WALT_DIGITS_EL);
#else
const wchar_t *ptr = _NL_CURRENT_WSTR (LC_TIME, _NL_WALT_DIGITS_EB);
#endif
size_t cnt; size_t cnt;
for (cnt = 0; cnt < 100; ++cnt) for (cnt = 0; cnt < 100; ++cnt)

View File

@ -18,7 +18,6 @@
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */ Boston, MA 02111-1307, USA. */
#include <byteswap.h>
#include <errno.h> #include <errno.h>
#include <fcntl.h> #include <fcntl.h>
#include <stdlib.h> #include <stdlib.h>
@ -70,15 +69,8 @@ _nl_load_locale (struct loaded_l10nfile *file, int category)
struct stat st; struct stat st;
struct locale_data *newdata; struct locale_data *newdata;
int save_err; int save_err;
int swap = 0;
int mmaped = 1; int mmaped = 1;
size_t cnt; size_t cnt;
inline unsigned int SWAP (const unsigned int *inw)
{
if (!swap)
return *inw;
return bswap_32 (*inw);
}
file->decided = 1; file->decided = 1;
file->data = NULL; file->data = NULL;
@ -164,28 +156,18 @@ _nl_load_locale (struct loaded_l10nfile *file, int category)
/* This cannot be a locale data file since it's too small. */ /* This cannot be a locale data file since it's too small. */
goto puntfd; goto puntfd;
if (filedata->magic == LIMAGIC (category)) if (filedata->magic != LIMAGIC (category))
/* Good data file in our byte order. */ /* Bad data file in either byte order. */
swap = 0;
else
{ {
/* Try the other byte order. */ puntmap:
swap = 1; __munmap ((caddr_t) filedata, st.st_size);
if (SWAP (&filedata->magic) != LIMAGIC (category)) puntfd:
/* Bad data file in either byte order. */ __close (fd);
{ return;
puntmap:
__munmap ((caddr_t) filedata, st.st_size);
puntfd:
__close (fd);
return;
}
} }
#define W(word) SWAP (&(word)) if (filedata->nstrings < _nl_category_num_items[category] ||
(sizeof *filedata + filedata->nstrings * sizeof (unsigned int)
if (W (filedata->nstrings) < _nl_category_num_items[category] ||
(sizeof *filedata + W (filedata->nstrings) * sizeof (unsigned int)
>= (size_t) st.st_size)) >= (size_t) st.st_size))
{ {
/* Insufficient data. */ /* Insufficient data. */
@ -207,7 +189,7 @@ _nl_load_locale (struct loaded_l10nfile *file, int category)
newdata->nstrings = _nl_category_num_items[category]; newdata->nstrings = _nl_category_num_items[category];
for (cnt = 0; cnt < newdata->nstrings; ++cnt) for (cnt = 0; cnt < newdata->nstrings; ++cnt)
{ {
off_t idx = W (filedata->strindex[cnt]); off_t idx = filedata->strindex[cnt];
if (idx >= newdata->filesize) if (idx >= newdata->filesize)
{ {
free (newdata); free (newdata);
@ -215,8 +197,7 @@ _nl_load_locale (struct loaded_l10nfile *file, int category)
goto puntmap; goto puntmap;
} }
if (_nl_value_types[category][cnt] == word) if (_nl_value_types[category][cnt] == word)
newdata->values[cnt].word = W (*((u_int32_t *) (newdata->filedata newdata->values[cnt].word = *((u_int32_t *) (newdata->filedata + idx));
+ idx)));
else else
newdata->values[cnt].string = newdata->filedata + idx; newdata->values[cnt].string = newdata->filedata + idx;
} }

View File

@ -177,19 +177,10 @@ __newlocale (int category_mask, const char *locale, __locale_t base)
union locale_data_value *ctypes = result_ptr->__locales[LC_CTYPE]->values; union locale_data_value *ctypes = result_ptr->__locales[LC_CTYPE]->values;
result_ptr->__ctype_b = (const unsigned short int *) result_ptr->__ctype_b = (const unsigned short int *)
(ctypes[_NL_ITEM_INDEX (_NL_CTYPE_CLASS)] .string); (ctypes[_NL_ITEM_INDEX (_NL_CTYPE_CLASS)] .string);
#if BYTE_ORDER == BIG_ENDIAN
result_ptr->__ctype_tolower = (const int *) result_ptr->__ctype_tolower = (const int *)
(ctypes[_NL_ITEM_INDEX (_NL_CTYPE_TOLOWER_EB)].string); (ctypes[_NL_ITEM_INDEX (_NL_CTYPE_TOLOWER)].string);
result_ptr->__ctype_toupper = (const int *) result_ptr->__ctype_toupper = (const int *)
(ctypes[_NL_ITEM_INDEX (_NL_CTYPE_TOUPPER_EB)].string); (ctypes[_NL_ITEM_INDEX (_NL_CTYPE_TOUPPER)].string);
#elif BYTE_ORDER == LITTLE_ENDIAN
result_ptr->__ctype_tolower = (const int *)
(ctypes[_NL_ITEM_INDEX (_NL_CTYPE_TOLOWER_EL)].string);
result_ptr->__ctype_toupper = (const int *)
(ctypes[_NL_ITEM_INDEX (_NL_CTYPE_TOUPPER_EL)].string);
#else
#error bizarre byte order
#endif
} }
return result_ptr; return result_ptr;

View File

@ -68,7 +68,6 @@ struct locale_address_t
const char *country_ab2; const char *country_ab2;
const char *country_ab3; const char *country_ab3;
uint32_t country_num; uint32_t country_num;
uint32_t country_num_ob;
const char *country_car; const char *country_car;
const char *country_isbn; const char *country_isbn;
const char *lang_name; const char *lang_name;
@ -295,7 +294,6 @@ address_finish (struct localedef_t *locale, struct charmap_t *charmap)
%s: numeric country code `%d' not valid"), %s: numeric country code `%d' not valid"),
"LC_ADDRESS", address->country_num); "LC_ADDRESS", address->country_num);
} }
address->country_num_ob = bswap_32 (address->country_num);
if (address->country_ab2 == NULL) if (address->country_ab2 == NULL)
{ {
@ -373,21 +371,8 @@ address_output (struct localedef_t *locale, struct charmap_t *charmap,
iov[cnt].iov_len = strlen (iov[cnt].iov_base) + 1; iov[cnt].iov_len = strlen (iov[cnt].iov_base) + 1;
++cnt; ++cnt;
#if __BYTE_ORDER == __LITTLE_ENDIAN
# define country_num_eb country_num_ob
# define country_num_el country_num
#else
# define country_num_eb country_num
# define country_num_el country_num_ob
#endif
idx[cnt - 2] = idx[cnt - 3] + iov[cnt - 1].iov_len; idx[cnt - 2] = idx[cnt - 3] + iov[cnt - 1].iov_len;
iov[cnt].iov_base = (void *) address->country_num_eb; iov[cnt].iov_base = (void *) address->country_num;
iov[cnt].iov_len = sizeof (uint32_t);
++cnt;
idx[cnt - 2] = idx[cnt - 3] + iov[cnt - 1].iov_len;
iov[cnt].iov_base = (void *) address->country_num_el;
iov[cnt].iov_len = sizeof (uint32_t); iov[cnt].iov_len = sizeof (uint32_t);
++cnt; ++cnt;

View File

@ -65,9 +65,7 @@
the number of bits for character classes to 16. When compatibility the number of bits for character classes to 16. When compatibility
is not necessary anymore increase the number to 32. */ is not necessary anymore increase the number to 32. */
#define char_class_t uint16_t #define char_class_t uint16_t
#define CHAR_CLASS_TRANS bswap_16
#define char_class32_t uint32_t #define char_class32_t uint32_t
#define CHAR_CLASS32_TRANS bswap_32
/* Type to describe a transliteration action. We have a possibly /* Type to describe a transliteration action. We have a possibly
@ -144,27 +142,19 @@ struct locale_ctype_t
uint32_t plane_cnt; uint32_t plane_cnt;
char_class_t *ctype_b; char_class_t *ctype_b;
char_class32_t *ctype32_b; char_class32_t *ctype32_b;
uint32_t *names_el; uint32_t *names;
uint32_t *names_eb; uint32_t **map;
uint32_t **map_eb;
uint32_t **map_el;
uint32_t *class_name_ptr; uint32_t *class_name_ptr;
uint32_t *map_name_ptr; uint32_t *map_name_ptr;
unsigned char *width; unsigned char *width;
uint32_t mb_cur_max; uint32_t mb_cur_max;
const char *codeset_name; const char *codeset_name;
uint32_t translit_hash_size_eb; uint32_t translit_hash_size;
uint32_t translit_hash_size_el; uint32_t translit_hash_layers;
uint32_t translit_hash_layers_eb; uint32_t *translit_from_idx;
uint32_t translit_hash_layers_el; uint32_t *translit_from_tbl;
uint32_t *translit_from_idx_eb; uint32_t *translit_to_idx;
uint32_t *translit_from_idx_el; uint32_t *translit_to_tbl;
uint32_t *translit_from_tbl_eb;
uint32_t *translit_from_tbl_el;
uint32_t *translit_to_idx_eb;
uint32_t *translit_to_idx_el;
uint32_t *translit_to_tbl_eb;
uint32_t *translit_to_tbl_el;
size_t translit_idx_size; size_t translit_idx_size;
size_t translit_from_tbl_size; size_t translit_from_tbl_size;
size_t translit_to_tbl_size; size_t translit_to_tbl_size;
@ -740,21 +730,12 @@ ctype_output (struct localedef_t *locale, struct charmap_t *charmap,
ctype->ctype_b, ctype->ctype_b,
(256 + 128) * sizeof (char_class_t)); (256 + 128) * sizeof (char_class_t));
CTYPE_DATA (_NL_CTYPE_TOUPPER_EB, CTYPE_DATA (_NL_CTYPE_TOUPPER,
ctype->map_eb[0], ctype->map[0],
(ctype->plane_size * ctype->plane_cnt + 128) (ctype->plane_size * ctype->plane_cnt + 128)
* sizeof (uint32_t)); * sizeof (uint32_t));
CTYPE_DATA (_NL_CTYPE_TOLOWER_EB, CTYPE_DATA (_NL_CTYPE_TOLOWER,
ctype->map_eb[1], ctype->map[1],
(ctype->plane_size * ctype->plane_cnt + 128)
* sizeof (uint32_t));
CTYPE_DATA (_NL_CTYPE_TOUPPER_EL,
ctype->map_el[0],
(ctype->plane_size * ctype->plane_cnt + 128)
* sizeof (uint32_t));
CTYPE_DATA (_NL_CTYPE_TOLOWER_EL,
ctype->map_el[1],
(ctype->plane_size * ctype->plane_cnt + 128) (ctype->plane_size * ctype->plane_cnt + 128)
* sizeof (uint32_t)); * sizeof (uint32_t));
@ -763,90 +744,34 @@ ctype_output (struct localedef_t *locale, struct charmap_t *charmap,
(ctype->plane_size * ctype->plane_cnt (ctype->plane_size * ctype->plane_cnt
* sizeof (char_class32_t))); * sizeof (char_class32_t)));
CTYPE_DATA (_NL_CTYPE_NAMES_EB, CTYPE_DATA (_NL_CTYPE_NAMES,
ctype->names_eb, (ctype->plane_size * ctype->plane_cnt ctype->names, (ctype->plane_size * ctype->plane_cnt
* sizeof (uint32_t))); * sizeof (uint32_t)));
CTYPE_DATA (_NL_CTYPE_NAMES_EL,
ctype->names_el, (ctype->plane_size * ctype->plane_cnt
* sizeof (uint32_t)));
CTYPE_DATA (_NL_CTYPE_TRANSLIT_HASH_SIZE_EB, CTYPE_DATA (_NL_CTYPE_TRANSLIT_HASH_SIZE,
&ctype->translit_hash_size_eb, sizeof (uint32_t)); &ctype->translit_hash_size, sizeof (uint32_t));
CTYPE_DATA (_NL_CTYPE_TRANSLIT_HASH_SIZE_EL, CTYPE_DATA (_NL_CTYPE_TRANSLIT_HASH_LAYERS,
&ctype->translit_hash_size_el, sizeof (uint32_t)); &ctype->translit_hash_layers, sizeof (uint32_t));
CTYPE_DATA (_NL_CTYPE_TRANSLIT_HASH_LAYERS_EB,
&ctype->translit_hash_layers_eb, sizeof (uint32_t));
CTYPE_DATA (_NL_CTYPE_TRANSLIT_HASH_LAYERS_EL,
&ctype->translit_hash_layers_el, sizeof (uint32_t));
CTYPE_DATA (_NL_CTYPE_TRANSLIT_FROM_IDX_EB, CTYPE_DATA (_NL_CTYPE_TRANSLIT_FROM_IDX,
ctype->translit_from_idx_eb, ctype->translit_from_idx,
ctype->translit_idx_size);
CTYPE_DATA (_NL_CTYPE_TRANSLIT_FROM_IDX_EL,
ctype->translit_from_idx_el,
ctype->translit_idx_size); ctype->translit_idx_size);
CTYPE_DATA (_NL_CTYPE_TRANSLIT_FROM_TBL_EB, CTYPE_DATA (_NL_CTYPE_TRANSLIT_FROM_TBL,
ctype->translit_from_tbl_eb, ctype->translit_from_tbl,
ctype->translit_from_tbl_size);
CTYPE_DATA (_NL_CTYPE_TRANSLIT_FROM_TBL_EL,
ctype->translit_from_tbl_el,
ctype->translit_from_tbl_size); ctype->translit_from_tbl_size);
CTYPE_DATA (_NL_CTYPE_TRANSLIT_TO_IDX_EB, CTYPE_DATA (_NL_CTYPE_TRANSLIT_TO_IDX,
ctype->translit_to_idx_eb, ctype->translit_to_idx,
ctype->translit_idx_size);
CTYPE_DATA (_NL_CTYPE_TRANSLIT_TO_IDX_EL,
ctype->translit_to_idx_el,
ctype->translit_idx_size); ctype->translit_idx_size);
CTYPE_DATA (_NL_CTYPE_TRANSLIT_TO_TBL_EB, CTYPE_DATA (_NL_CTYPE_TRANSLIT_TO_TBL,
ctype->translit_to_tbl_eb, ctype->translit_to_tbl_size); ctype->translit_to_tbl, ctype->translit_to_tbl_size);
CTYPE_DATA (_NL_CTYPE_TRANSLIT_TO_TBL_EL,
ctype->translit_to_tbl_el, ctype->translit_to_tbl_size);
#if __BYTE_ORDER == __BIG_ENDIAN CTYPE_DATA (_NL_CTYPE_HASH_SIZE,
CTYPE_DATA (_NL_CTYPE_HASH_SIZE_EB,
&ctype->plane_size, sizeof (uint32_t)); &ctype->plane_size, sizeof (uint32_t));
CTYPE_DATA (_NL_CTYPE_HASH_LAYERS_EB, CTYPE_DATA (_NL_CTYPE_HASH_LAYERS,
&ctype->plane_cnt, sizeof (uint32_t)); &ctype->plane_cnt, sizeof (uint32_t));
#else
case _NL_ITEM_INDEX (_NL_CTYPE_HASH_SIZE_EB):
iov[2 + elem + offset].iov_base =
(uint32_t *) alloca (sizeof (uint32_t));
*(uint32_t *) iov[2 + elem + offset].iov_base =
bswap_32 (ctype->plane_size);
iov[2 + elem + offset].iov_len = sizeof (uint32_t);
break;
case _NL_ITEM_INDEX (_NL_CTYPE_HASH_LAYERS_EB):
iov[2 + elem + offset].iov_base =
(uint32_t *) alloca (sizeof (uint32_t));
*(uint32_t *) iov[2 + elem + offset].iov_base =
bswap_32 (ctype->plane_cnt);
iov[2 + elem + offset].iov_len = sizeof (uint32_t);
break;
#endif
#if __BYTE_ORDER == __BIG_ENDIAN
CTYPE_DATA (_NL_CTYPE_HASH_SIZE_EL,
&ctype->plane_size, sizeof (uint32_t));
CTYPE_DATA (_NL_CTYPE_HASH_LAYERS_EL,
&ctype->plane_cnt, sizeof (uint32_t));
#else
case _NL_ITEM_INDEX (_NL_CTYPE_HASH_SIZE_EL):
iov[2 + elem + offset].iov_base =
(uint32_t *) alloca (sizeof (uint32_t));
*(uint32_t *) iov[2 + elem + offset].iov_base =
bswap_32 (ctype->plane_size);
iov[2 + elem + offset].iov_len = sizeof (uint32_t);
break;
case _NL_ITEM_INDEX (_NL_CTYPE_HASH_LAYERS_EL):
iov[2 + elem + offset].iov_base =
(uint32_t *) alloca (sizeof (uint32_t));
*(uint32_t *) iov[2 + elem + offset].iov_base =
bswap_32 (ctype->plane_cnt);
iov[2 + elem + offset].iov_len = sizeof (uint32_t);
break;
#endif
case _NL_ITEM_INDEX (_NL_CTYPE_CLASS_NAMES): case _NL_ITEM_INDEX (_NL_CTYPE_CLASS_NAMES):
/* The class name array. */ /* The class name array. */
@ -906,34 +831,18 @@ ctype_output (struct localedef_t *locale, struct charmap_t *charmap,
idx[elem + 1] = idx[elem] + iov[2 + elem + offset].iov_len; idx[elem + 1] = idx[elem] + iov[2 + elem + offset].iov_len;
break; break;
case _NL_ITEM_INDEX (_NL_CTYPE_INDIGITS_MB_LEN_EB): case _NL_ITEM_INDEX (_NL_CTYPE_INDIGITS_MB_LEN):
case _NL_ITEM_INDEX (_NL_CTYPE_INDIGITS_MB_LEN_EL):
iov[2 + elem + offset].iov_base = alloca (sizeof (uint32_t)); iov[2 + elem + offset].iov_base = alloca (sizeof (uint32_t));
iov[2 + elem + offset].iov_len = sizeof (uint32_t); iov[2 + elem + offset].iov_len = sizeof (uint32_t);
if ((elem == _NL_ITEM_INDEX (_NL_CTYPE_INDIGITS_MB_LEN_EB) *(uint32_t *) iov[2 + elem + offset].iov_base =
&& __BYTE_ORDER == __BIG_ENDIAN) ctype->mbdigits_act / 10;
|| (elem == _NL_ITEM_INDEX (_NL_CTYPE_INDIGITS_MB_LEN_EL)
&& __BYTE_ORDER == __LITTLE_ENDIAN))
*(uint32_t *) iov[2 + elem + offset].iov_base =
ctype->mbdigits_act / 10;
else
*(uint32_t *) iov[2 + elem + offset].iov_base =
bswap_32 (ctype->mbdigits_act / 10);
break; break;
case _NL_ITEM_INDEX (_NL_CTYPE_INDIGITS_WC_LEN_EB): case _NL_ITEM_INDEX (_NL_CTYPE_INDIGITS_WC_LEN):
case _NL_ITEM_INDEX (_NL_CTYPE_INDIGITS_WC_LEN_EL):
iov[2 + elem + offset].iov_base = alloca (sizeof (uint32_t)); iov[2 + elem + offset].iov_base = alloca (sizeof (uint32_t));
iov[2 + elem + offset].iov_len = sizeof (uint32_t); iov[2 + elem + offset].iov_len = sizeof (uint32_t);
if ((elem == _NL_ITEM_INDEX (_NL_CTYPE_INDIGITS_WC_LEN_EB) *(uint32_t *) iov[2 + elem + offset].iov_base =
&& __BYTE_ORDER == __BIG_ENDIAN) ctype->wcdigits_act / 10;
|| (elem == _NL_ITEM_INDEX (_NL_CTYPE_INDIGITS_WC_LEN_EL)
&& __BYTE_ORDER == __LITTLE_ENDIAN))
*(uint32_t *) iov[2 + elem + offset].iov_base =
ctype->wcdigits_act / 10;
else
*(uint32_t *) iov[2 + elem + offset].iov_base =
bswap_32 (ctype->wcdigits_act / 10);
break; break;
case _NL_ITEM_INDEX (_NL_CTYPE_INDIGITS0_MB) ... _NL_ITEM_INDEX (_NL_CTYPE_INDIGITS9_MB): case _NL_ITEM_INDEX (_NL_CTYPE_INDIGITS0_MB) ... _NL_ITEM_INDEX (_NL_CTYPE_INDIGITS9_MB):
@ -973,59 +882,25 @@ ctype_output (struct localedef_t *locale, struct charmap_t *charmap,
ctype->mbdigits[cnt]->nbytes) = '\0'; ctype->mbdigits[cnt]->nbytes) = '\0';
break; break;
case _NL_ITEM_INDEX (_NL_CTYPE_INDIGITS0_WC_EB) ... _NL_ITEM_INDEX (_NL_CTYPE_INDIGITS9_WC_EB): case _NL_ITEM_INDEX (_NL_CTYPE_INDIGITS0_WC) ... _NL_ITEM_INDEX (_NL_CTYPE_INDIGITS9_WC):
total = ctype->wcdigits_act / 10; total = ctype->wcdigits_act / 10;
iov[2 + elem + offset].iov_base = iov[2 + elem + offset].iov_base =
(uint32_t *) alloca (total * sizeof (uint32_t)); (uint32_t *) alloca (total * sizeof (uint32_t));
iov[2 + elem + offset].iov_len = total * sizeof (uint32_t); iov[2 + elem + offset].iov_len = total * sizeof (uint32_t);
for (cnt = elem - _NL_CTYPE_INDIGITS0_WC_EB; for (cnt = elem - _NL_CTYPE_INDIGITS0_WC;
cnt < ctype->wcdigits_act; cnt += 10) cnt < ctype->wcdigits_act; cnt += 10)
((uint32_t *) iov[2 + elem + offset].iov_base)[cnt / 10] ((uint32_t *) iov[2 + elem + offset].iov_base)[cnt / 10]
= (__BYTE_ORDER == __LITTLE_ENDIAN = ctype->wcdigits[cnt];
? bswap_32 (ctype->wcdigits[cnt]) : ctype->wcdigits[cnt]);
break; break;
case _NL_ITEM_INDEX (_NL_CTYPE_INDIGITS0_WC_EL) ... _NL_ITEM_INDEX (_NL_CTYPE_INDIGITS9_WC_EL): case _NL_ITEM_INDEX (_NL_CTYPE_OUTDIGIT0_WC) ... _NL_ITEM_INDEX (_NL_CTYPE_OUTDIGIT9_WC):
total = ctype->wcdigits_act / 10; cnt = elem - _NL_CTYPE_OUTDIGIT0_WC;
iov[2 + elem + offset].iov_base =
(uint32_t *) alloca (total * sizeof (uint32_t));
iov[2 + elem + offset].iov_len = total * sizeof (uint32_t);
for (cnt = elem - _NL_CTYPE_INDIGITS0_WC_EL;
cnt < ctype->wcdigits_act; cnt += 10)
((uint32_t *) iov[2 + elem + offset].iov_base)[cnt / 10]
= (__BYTE_ORDER == __BIG_ENDIAN
? bswap_32 (ctype->wcdigits[cnt]) : ctype->wcdigits[cnt]);
break;
#if __BYTE_ORDER == __BIG_ENDIAN
case _NL_ITEM_INDEX (_NL_CTYPE_OUTDIGIT0_WC_EB) ... _NL_ITEM_INDEX (_NL_CTYPE_OUTDIGIT9_WC_EB):
cnt = elem - _NL_CTYPE_OUTDIGIT0_WC_EB;
#else
case _NL_ITEM_INDEX (_NL_CTYPE_OUTDIGIT0_WC_EL) ... _NL_ITEM_INDEX (_NL_CTYPE_OUTDIGIT9_WC_EL):
cnt = elem - _NL_CTYPE_OUTDIGIT0_WC_EL;
#endif
iov[2 + elem + offset].iov_base = &ctype->wcoutdigits[cnt]; iov[2 + elem + offset].iov_base = &ctype->wcoutdigits[cnt];
iov[2 + elem + offset].iov_len = sizeof (uint32_t); iov[2 + elem + offset].iov_len = sizeof (uint32_t);
break; break;
#if __BYTE_ORDER == __LITTLE_ENDIAN
case _NL_ITEM_INDEX (_NL_CTYPE_OUTDIGIT0_WC_EB) ... _NL_ITEM_INDEX (_NL_CTYPE_OUTDIGIT9_WC_EB):
cnt = elem - _NL_CTYPE_OUTDIGIT0_WC_EB;
#else
case _NL_ITEM_INDEX (_NL_CTYPE_OUTDIGIT0_WC_EL) ... _NL_ITEM_INDEX (_NL_CTYPE_OUTDIGIT9_WC_EL):
cnt = elem - _NL_CTYPE_OUTDIGIT0_WC_EL;
#endif
iov[2 + elem + offset].iov_base =
(uint32_t *) alloca (sizeof (uint32_t));
*(uint32_t *) iov[2 + elem + offset].iov_base =
bswap_32 (ctype->wcoutdigits[cnt]);
iov[2 + elem + offset].iov_len = sizeof (uint32_t);
break;
default: default:
assert (! "unknown CTYPE element"); assert (! "unknown CTYPE element");
} }
@ -1034,11 +909,7 @@ ctype_output (struct localedef_t *locale, struct charmap_t *charmap,
/* Handle extra maps. */ /* Handle extra maps. */
size_t nr = (elem - _NL_ITEM_INDEX (_NL_NUM_LC_CTYPE)) >> 1; size_t nr = (elem - _NL_ITEM_INDEX (_NL_NUM_LC_CTYPE)) >> 1;
if (((elem - _NL_ITEM_INDEX (_NL_NUM_LC_CTYPE)) & 1) == 0) iov[2 + elem + offset].iov_base = ctype->map[nr];
iov[2 + elem + offset].iov_base = ctype->map_eb[nr];
else
iov[2 + elem + offset].iov_base = ctype->map_el[nr];
iov[2 + elem + offset].iov_len = ((ctype->plane_size iov[2 + elem + offset].iov_len = ((ctype->plane_size
* ctype->plane_cnt + 128) * ctype->plane_cnt + 128)
* sizeof (uint32_t)); * sizeof (uint32_t));
@ -2976,45 +2847,31 @@ Computing table size for character classes might take a while..."),
fputs (_(" done\n"), stderr); fputs (_(" done\n"), stderr);
#if __BYTE_ORDER == __LITTLE_ENDIAN ctype->names = (uint32_t *) xcalloc (ctype->plane_size
# define NAMES_B1 ctype->names_el * ctype->plane_cnt,
# define NAMES_B2 ctype->names_eb sizeof (uint32_t));
#else
# define NAMES_B1 ctype->names_eb
# define NAMES_B2 ctype->names_el
#endif
ctype->names_eb = (uint32_t *) xcalloc (ctype->plane_size
* ctype->plane_cnt,
sizeof (uint32_t));
ctype->names_el = (uint32_t *) xcalloc (ctype->plane_size
* ctype->plane_cnt,
sizeof (uint32_t));
for (idx = 1; idx < 256; ++idx) for (idx = 1; idx < 256; ++idx)
NAMES_B1[idx] = idx; ctype->names[idx] = idx;
/* Trick: change the 0th entry's name to 1 to mark the cell occupied. */ /* Trick: change the 0th entry's name to 1 to mark the cell occupied. */
NAMES_B1[0] = 1; ctype->names[0] = 1;
for (idx = 256; idx < ctype->charnames_act; ++idx) for (idx = 256; idx < ctype->charnames_act; ++idx)
{ {
size_t nr = (ctype->charnames[idx] % ctype->plane_size); size_t nr = (ctype->charnames[idx] % ctype->plane_size);
size_t depth = 0; size_t depth = 0;
while (NAMES_B1[nr + depth * ctype->plane_size]) while (ctype->names[nr + depth * ctype->plane_size])
++depth; ++depth;
assert (depth < ctype->plane_cnt); assert (depth < ctype->plane_cnt);
NAMES_B1[nr + depth * ctype->plane_size] = ctype->charnames[idx]; ctype->names[nr + depth * ctype->plane_size] = ctype->charnames[idx];
/* Now for faster access remember the index in the NAMES_B array. */ /* Now for faster access remember the index in the NAMES_B array. */
ctype->charnames[idx] = nr + depth * ctype->plane_size; ctype->charnames[idx] = nr + depth * ctype->plane_size;
} }
NAMES_B1[0] = 0; ctype->names[0] = 0;
for (idx = 0; idx < ctype->plane_size * ctype->plane_cnt; ++idx)
NAMES_B2[idx] = bswap_32 (NAMES_B1[idx]);
/* You wonder about this amount of memory? This is only because some /* You wonder about this amount of memory? This is only because some
@ -3028,18 +2885,9 @@ Computing table size for character classes might take a while..."),
* ctype->plane_cnt, * ctype->plane_cnt,
sizeof (char_class32_t)); sizeof (char_class32_t));
/* Fill in the character class information. */ /* This is the array accessed using the multibyte string elements. */
#if __BYTE_ORDER == __LITTLE_ENDIAN
# define TRANS(w) CHAR_CLASS_TRANS (w)
# define TRANS32(w) CHAR_CLASS32_TRANS (w)
#else
# define TRANS(w) (w)
# define TRANS32(w) (w)
#endif
/* This is the array accessed usig the multibyte string elements. */
for (idx = 0; idx < 256; ++idx) for (idx = 0; idx < 256; ++idx)
ctype->ctype_b[128 + idx] = TRANS (ctype->class256_collection[idx]); ctype->ctype_b[128 + idx] = ctype->class256_collection[idx];
/* Mirror first 127 entries. We must take care that entry -1 is not /* Mirror first 127 entries. We must take care that entry -1 is not
mirrored because EOF == -1. */ mirrored because EOF == -1. */
@ -3048,14 +2896,11 @@ Computing table size for character classes might take a while..."),
/* The 32 bit array contains all characters. */ /* The 32 bit array contains all characters. */
for (idx = 0; idx < ctype->class_collection_act; ++idx) for (idx = 0; idx < ctype->class_collection_act; ++idx)
ctype->ctype32_b[ctype->charnames[idx]] ctype->ctype32_b[ctype->charnames[idx]] = ctype->class_collection[idx];
= TRANS32 (ctype->class_collection[idx]);
/* Room for table of mappings. */ /* Room for table of mappings. */
ctype->map_eb = (uint32_t **) xmalloc (ctype->map_collection_nr ctype->map = (uint32_t **) xmalloc (ctype->map_collection_nr
* sizeof (uint32_t *)); * sizeof (uint32_t *));
ctype->map_el = (uint32_t **) xmalloc (ctype->map_collection_nr
* sizeof (uint32_t *));
/* Fill in all mappings. */ /* Fill in all mappings. */
for (idx = 0; idx < ctype->map_collection_nr; ++idx) for (idx = 0; idx < ctype->map_collection_nr; ++idx)
@ -3063,40 +2908,25 @@ Computing table size for character classes might take a while..."),
unsigned int idx2; unsigned int idx2;
/* Allocate table. */ /* Allocate table. */
ctype->map_eb[idx] = (uint32_t *) xmalloc ((ctype->plane_size ctype->map[idx] = (uint32_t *) xmalloc ((ctype->plane_size
* ctype->plane_cnt + 128) * ctype->plane_cnt + 128)
* sizeof (uint32_t)); * sizeof (uint32_t));
ctype->map_el[idx] = (uint32_t *) xmalloc ((ctype->plane_size
* ctype->plane_cnt + 128)
* sizeof (uint32_t));
#if __BYTE_ORDER == __LITTLE_ENDIAN
# define MAP_B1 ctype->map_el
# define MAP_B2 ctype->map_eb
#else
# define MAP_B1 ctype->map_eb
# define MAP_B2 ctype->map_el
#endif
/* Copy default value (identity mapping). */ /* Copy default value (identity mapping). */
memcpy (&MAP_B1[idx][128], NAMES_B1, memcpy (&ctype->map[idx][128], ctype->names,
ctype->plane_size * ctype->plane_cnt * sizeof (uint32_t)); ctype->plane_size * ctype->plane_cnt * sizeof (uint32_t));
/* Copy values from collection. */ /* Copy values from collection. */
for (idx2 = 0; idx2 < 256; ++idx2) for (idx2 = 0; idx2 < 256; ++idx2)
MAP_B1[idx][128 + idx2] = ctype->map256_collection[idx][idx2]; ctype->map[idx][128 + idx2] = ctype->map256_collection[idx][idx2];
/* Mirror first 127 entries. We must take care not to map entry /* Mirror first 127 entries. We must take care not to map entry
-1 because EOF == -1. */ -1 because EOF == -1. */
for (idx2 = 0; idx2 < 127; ++idx2) for (idx2 = 0; idx2 < 127; ++idx2)
MAP_B1[idx][idx2] = MAP_B1[idx][256 + idx2]; ctype->map[idx][idx2] = ctype->map[idx][256 + idx2];
/* EOF must map to EOF. */ /* EOF must map to EOF. */
MAP_B1[idx][127] = EOF; ctype->map[idx][127] = EOF;
/* And now the other byte order. */
for (idx2 = 0; idx2 < ctype->plane_size * ctype->plane_cnt + 128; ++idx2)
MAP_B2[idx][idx2] = bswap_32 (MAP_B1[idx][idx2]);
} }
/* Extra array for class and map names. */ /* Extra array for class and map names. */
@ -3126,7 +2956,7 @@ Computing table size for character classes might take a while..."),
size_t nr = idx % ctype->plane_size; size_t nr = idx % ctype->plane_size;
size_t depth = 0; size_t depth = 0;
while (NAMES_B1[nr + depth * ctype->plane_size] != nr) while (ctype->names[nr + depth * ctype->plane_size] != nr)
++depth; ++depth;
assert (depth < ctype->plane_cnt); assert (depth < ctype->plane_cnt);
@ -3269,33 +3099,10 @@ Computing table size for character classes might take a while..."),
} }
/* We can allocate the arrays for the results. */ /* We can allocate the arrays for the results. */
#if BYTE_ORDER == LITTLE_ENDIAN ctype->translit_from_idx = xmalloc (number * sizeof (uint32_t));
# define from_idx translit_from_idx_el ctype->translit_from_tbl = xmalloc (from_len * sizeof (uint32_t));
# define from_tbl translit_from_tbl_el ctype->translit_to_idx = xmalloc (number * sizeof (uint32_t));
# define to_idx translit_to_idx_el ctype->translit_to_tbl = xmalloc (to_len * sizeof (uint32_t));
# define to_tbl translit_to_tbl_el
# define from_idx_ob translit_from_idx_eb
# define from_tbl_ob translit_from_tbl_eb
# define to_idx_ob translit_to_idx_eb
# define to_tbl_ob translit_to_tbl_eb
#else
# define from_idx translit_from_idx_eb
# define from_tbl translit_from_tbl_eb
# define to_idx translit_to_idx_eb
# define to_tbl translit_to_tbl_eb
# define from_idx_ob translit_from_idx_el
# define from_tbl_ob translit_from_tbl_el
# define to_idx_ob translit_to_idx_el
# define to_tbl_ob translit_to_tbl_el
#endif
ctype->from_idx = xmalloc (number * sizeof (uint32_t));
ctype->from_idx_ob = xmalloc (number * sizeof (uint32_t));
ctype->from_tbl = xmalloc (from_len * sizeof (uint32_t));
ctype->from_tbl_ob = xmalloc (from_len * sizeof (uint32_t));
ctype->to_idx = xmalloc (number * sizeof (uint32_t));
ctype->to_idx_ob = xmalloc (number * sizeof (uint32_t));
ctype->to_tbl = xmalloc (to_len * sizeof (uint32_t));
ctype->to_tbl_ob = xmalloc (to_len * sizeof (uint32_t));
from_len = 0; from_len = 0;
to_len = 0; to_len = 0;
@ -3304,38 +3111,27 @@ Computing table size for character classes might take a while..."),
size_t len; size_t len;
struct translit_to_t *srunp; struct translit_to_t *srunp;
ctype->from_idx[cnt] = from_len; ctype->translit_from_idx[cnt] = from_len;
ctype->to_idx[cnt] = to_len; ctype->translit_to_idx[cnt] = to_len;
len = wcslen ((const wchar_t *) sorted[cnt]->from) + 1; len = wcslen ((const wchar_t *) sorted[cnt]->from) + 1;
wmemcpy ((wchar_t *) &ctype->from_tbl[from_len], wmemcpy ((wchar_t *) &ctype->translit_from_tbl[from_len],
(const wchar_t *) sorted[cnt]->from, len); (const wchar_t *) sorted[cnt]->from, len);
from_len += len; from_len += len;
ctype->to_idx[cnt] = to_len; ctype->translit_to_idx[cnt] = to_len;
srunp = sorted[cnt]->to; srunp = sorted[cnt]->to;
while (srunp != NULL) while (srunp != NULL)
{ {
len = wcslen ((const wchar_t *) srunp->str) + 1; len = wcslen ((const wchar_t *) srunp->str) + 1;
wmemcpy ((wchar_t *) &ctype->to_tbl[to_len], wmemcpy ((wchar_t *) &ctype->translit_to_tbl[to_len],
(const wchar_t *) srunp->str, len); (const wchar_t *) srunp->str, len);
to_len += len; to_len += len;
srunp = srunp->next; srunp = srunp->next;
} }
ctype->to_tbl[to_len++] = L'\0'; ctype->translit_to_tbl[to_len++] = L'\0';
} }
/* Now create the tables for the other endianess. */
for (cnt = 0; cnt < number; ++cnt)
{
ctype->from_idx_ob[cnt] = bswap_32 (ctype->from_idx[cnt]);
ctype->to_idx_ob[cnt] = bswap_32 (ctype->to_idx[cnt]);
}
for (cnt = 0; cnt < from_len; ++cnt)
ctype->from_tbl[cnt] = bswap_32 (ctype->from_tbl_ob[cnt]);
for (cnt = 0; cnt < to_len; ++cnt)
ctype->to_tbl[cnt] = bswap_32 (ctype->to_tbl_ob[cnt]);
/* Store the information about the length. */ /* Store the information about the length. */
ctype->translit_idx_size = number * sizeof (uint32_t); ctype->translit_idx_size = number * sizeof (uint32_t);
ctype->translit_from_tbl_size = from_len * sizeof (uint32_t); ctype->translit_from_tbl_size = from_len * sizeof (uint32_t);
@ -3346,12 +3142,9 @@ Computing table size for character classes might take a while..."),
/* Provide some dummy pointers since we have nothing to write out. */ /* Provide some dummy pointers since we have nothing to write out. */
static uint32_t no_str = { 0 }; static uint32_t no_str = { 0 };
ctype->translit_from_idx_el = &no_str; ctype->translit_from_idx = &no_str;
ctype->translit_from_idx_eb = &no_str; ctype->translit_from_tbl = &no_str;
ctype->translit_from_tbl_el = &no_str; ctype->translit_to_tbl = &no_str;
ctype->translit_from_tbl_eb = &no_str;
ctype->translit_to_tbl_el = &no_str;
ctype->translit_to_tbl_eb = &no_str;
ctype->translit_idx_size = 0; ctype->translit_idx_size = 0;
ctype->translit_from_tbl_size = 0; ctype->translit_from_tbl_size = 0;
ctype->translit_to_tbl_size = 0; ctype->translit_to_tbl_size = 0;

View File

@ -21,7 +21,6 @@
# include <config.h> # include <config.h>
#endif #endif
#include <byteswap.h>
#include <error.h> #include <error.h>
#include <langinfo.h> #include <langinfo.h>
#include <string.h> #include <string.h>
@ -37,9 +36,7 @@
struct locale_paper_t struct locale_paper_t
{ {
uint32_t height; uint32_t height;
uint32_t height_ob;
uint32_t width; uint32_t width;
uint32_t width_ob;
}; };
@ -104,7 +101,6 @@ paper_finish (struct localedef_t *locale, struct charmap_t *charmap)
/* Use as default values the values from the i18n locale. */ /* Use as default values the values from the i18n locale. */
paper->height = 297; paper->height = 297;
} }
paper->height_ob = bswap_32 (paper->height);
if (paper->width == 0) if (paper->width == 0)
{ {
@ -113,7 +109,6 @@ paper_finish (struct localedef_t *locale, struct charmap_t *charmap)
/* Use as default values the values from the i18n locale. */ /* Use as default values the values from the i18n locale. */
paper->width = 210; paper->width = 210;
} }
paper->width_ob = bswap_32 (paper->width);
} }
@ -133,39 +128,17 @@ paper_output (struct localedef_t *locale, struct charmap_t *charmap,
iov[cnt].iov_len = sizeof (data); iov[cnt].iov_len = sizeof (data);
++cnt; ++cnt;
#if __BYTE_ORDER == __LITTLE_ENDIAN
# define height_eb height_ob
# define height_el height
# define width_eb width_ob
# define width_el width
#else
# define height_eb height
# define height_el height_ob
# define width_eb width
# define width_el width_ob
#endif
iov[cnt].iov_base = (void *) idx; iov[cnt].iov_base = (void *) idx;
iov[cnt].iov_len = sizeof (idx); iov[cnt].iov_len = sizeof (idx);
++cnt; ++cnt;
idx[cnt - 2] = iov[0].iov_len + iov[1].iov_len; idx[cnt - 2] = iov[0].iov_len + iov[1].iov_len;
iov[cnt].iov_base = &paper->height_eb; iov[cnt].iov_base = &paper->height;
iov[cnt].iov_len = 4; iov[cnt].iov_len = 4;
++cnt; ++cnt;
idx[cnt - 2] = iov[0].iov_len + iov[1].iov_len; idx[cnt - 2] = iov[0].iov_len + iov[1].iov_len;
iov[cnt].iov_base = &paper->height_el; iov[cnt].iov_base = &paper->width;
iov[cnt].iov_len = 4;
++cnt;
idx[cnt - 2] = iov[0].iov_len + iov[1].iov_len;
iov[cnt].iov_base = &paper->width_eb;
iov[cnt].iov_len = 4;
++cnt;
idx[cnt - 2] = iov[0].iov_len + iov[1].iov_len;
iov[cnt].iov_base = &paper->width_el;
iov[cnt].iov_len = 4; iov[cnt].iov_len = 4;
++cnt; ++cnt;

View File

@ -55,55 +55,40 @@ struct locale_time_t
{ {
const char *abday[7]; const char *abday[7];
const uint32_t *wabday[7]; const uint32_t *wabday[7];
const uint32_t *wabday_ob[7];
int abday_defined; int abday_defined;
const char *day[7]; const char *day[7];
const uint32_t *wday[7]; const uint32_t *wday[7];
const uint32_t *wday_ob[7];
int day_defined; int day_defined;
const char *abmon[12]; const char *abmon[12];
const uint32_t *wabmon[12]; const uint32_t *wabmon[12];
const uint32_t *wabmon_ob[12];
int abmon_defined; int abmon_defined;
const char *mon[12]; const char *mon[12];
const uint32_t *wmon[12]; const uint32_t *wmon[12];
const uint32_t *wmon_ob[12];
int mon_defined; int mon_defined;
const char *am_pm[2]; const char *am_pm[2];
const uint32_t *wam_pm[2]; const uint32_t *wam_pm[2];
const uint32_t *wam_pm_ob[2];
int am_pm_defined; int am_pm_defined;
const char *d_t_fmt; const char *d_t_fmt;
const uint32_t *wd_t_fmt; const uint32_t *wd_t_fmt;
const uint32_t *wd_t_fmt_ob;
const char *d_fmt; const char *d_fmt;
const uint32_t *wd_fmt; const uint32_t *wd_fmt;
const uint32_t *wd_fmt_ob;
const char *t_fmt; const char *t_fmt;
const uint32_t *wt_fmt; const uint32_t *wt_fmt;
const uint32_t *wt_fmt_ob;
const char *t_fmt_ampm; const char *t_fmt_ampm;
const uint32_t *wt_fmt_ampm; const uint32_t *wt_fmt_ampm;
const uint32_t *wt_fmt_ampm_ob;
const char **era; const char **era;
const uint32_t **wera; const uint32_t **wera;
const uint32_t **wera_ob;
uint32_t num_era; uint32_t num_era;
const char *era_year; const char *era_year;
const uint32_t *wera_year; const uint32_t *wera_year;
const uint32_t *wera_year_ob;
const char *era_d_t_fmt; const char *era_d_t_fmt;
const uint32_t *wera_d_t_fmt; const uint32_t *wera_d_t_fmt;
const uint32_t *wera_d_t_fmt_ob;
const char *era_t_fmt; const char *era_t_fmt;
const uint32_t *wera_t_fmt; const uint32_t *wera_t_fmt;
const uint32_t *wera_t_fmt_ob;
const char *era_d_fmt; const char *era_d_fmt;
const uint32_t *wera_d_fmt; const uint32_t *wera_d_fmt;
const uint32_t *wera_d_fmt_ob;
const char *alt_digits[100]; const char *alt_digits[100];
const uint32_t *walt_digits[100]; const uint32_t *walt_digits[100];
const uint32_t *walt_digits_ob[100];
int alt_digits_defined; int alt_digits_defined;
unsigned char week_ndays; unsigned char week_ndays;
uint32_t week_1stday; uint32_t week_1stday;
@ -115,7 +100,6 @@ struct locale_time_t
const uint32_t *wtimezone; const uint32_t *wtimezone;
struct era_data *era_entries; struct era_data *era_entries;
struct era_data *era_entries_ob;
}; };
@ -143,7 +127,6 @@ void
time_finish (struct localedef_t *locale, struct charmap_t *charmap) time_finish (struct localedef_t *locale, struct charmap_t *charmap)
{ {
struct locale_time_t *time = locale->categories[LC_TIME].time; struct locale_time_t *time = locale->categories[LC_TIME].time;
size_t cnt;
int nothing = 0; int nothing = 0;
/* Now resolve copying and also handle completely missing definitions. */ /* Now resolve copying and also handle completely missing definitions. */
@ -183,22 +166,6 @@ time_finish (struct localedef_t *locale, struct charmap_t *charmap)
{ \ { \
if(! be_quiet && ! nothing) \ if(! be_quiet && ! nothing) \
error (0, 0, _("%s: field `%s' not defined"), "LC_TIME", #cat); \ error (0, 0, _("%s: field `%s' not defined"), "LC_TIME", #cat); \
} \
else if (time->w##cat != NULL) \
{ \
size_t n; \
for (n = 0; n < sizeof (time->w##cat) / sizeof (time->w##cat[0]); ++n) \
{ \
size_t len = wcslen ((wchar_t *) time->w##cat[n]) + 1; \
uint32_t *wstr = (uint32_t *) xmalloc (len * sizeof (uint32_t)); \
do \
{ \
--len; \
wstr[len] = bswap_32 (time->w##cat[n][len]); \
} \
while (len > 0); \
time->w##cat##_ob[n] = wstr; \
} \
} }
TESTARR_ELEM (abday); TESTARR_ELEM (abday);
@ -212,18 +179,6 @@ time_finish (struct localedef_t *locale, struct charmap_t *charmap)
{ \ { \
if (! be_quiet && ! nothing) \ if (! be_quiet && ! nothing) \
error (0, 0, _("%s: field `%s' not defined"), "LC_TIME", #cat); \ error (0, 0, _("%s: field `%s' not defined"), "LC_TIME", #cat); \
} \
else if (time->w##cat != NULL) \
{ \
size_t len = wcslen ((wchar_t *) time->w##cat) + 1; \
uint32_t *wstr = (uint32_t *) xmalloc (len * sizeof (uint32_t)); \
do \
{ \
--len; \
wstr[len] = bswap_32 (time->w##cat[len]); \
} \
while (len > 0); \
time->w##cat##_ob = wstr; \
} }
TEST_ELEM (d_t_fmt); TEST_ELEM (d_t_fmt);
@ -237,20 +192,6 @@ time_finish (struct localedef_t *locale, struct charmap_t *charmap)
/* Use the 24h format as default. */ /* Use the 24h format as default. */
time->t_fmt_ampm = time->t_fmt; time->t_fmt_ampm = time->t_fmt;
time->wt_fmt_ampm = time->wt_fmt; time->wt_fmt_ampm = time->wt_fmt;
time->wt_fmt_ampm_ob = time->wt_fmt_ob;
}
else
{
/* Convert the byte order. */
size_t len = wcslen ((wchar_t *) time->wt_fmt_ampm) + 1;
uint32_t *wstr = (uint32_t *) xmalloc (len * sizeof (uint32_t));
do
{
--len;
wstr[len] = bswap_32 (time->wt_fmt_ampm[len]);
}
while (len > 0);
time->wt_fmt_ampm_ob = wstr;
} }
/* Now process the era entries. */ /* Now process the era entries. */
@ -499,60 +440,6 @@ time_finish (struct localedef_t *locale, struct charmap_t *charmap)
wstr = wstr ? wcschr (wstr, L':') : NULL; /* end name */ wstr = wstr ? wcschr (wstr, L':') : NULL; /* end name */
time->era_entries[idx].wformat = (uint32_t *) wstr; time->era_entries[idx].wformat = (uint32_t *) wstr;
} }
/* Construct the array for the other byte order. */
time->era_entries_ob =
(struct era_data *) xmalloc (time->num_era * sizeof (struct era_data));
for (idx = 0; idx < time->num_era; ++idx)
{
time->era_entries_ob[idx].direction =
bswap_32 (time->era_entries[idx].direction);
time->era_entries_ob[idx].offset =
bswap_32 (time->era_entries[idx].offset);
time->era_entries_ob[idx].start_date[0] =
bswap_32 (time->era_entries[idx].start_date[0]);
time->era_entries_ob[idx].start_date[1] =
bswap_32 (time->era_entries[idx].start_date[1]);
time->era_entries_ob[idx].start_date[2] =
bswap_32 (time->era_entries[idx].stop_date[2]);
time->era_entries_ob[idx].stop_date[0] =
bswap_32 (time->era_entries[idx].stop_date[0]);
time->era_entries_ob[idx].stop_date[1] =
bswap_32 (time->era_entries[idx].stop_date[1]);
time->era_entries_ob[idx].stop_date[2] =
bswap_32 (time->era_entries[idx].stop_date[2]);
time->era_entries_ob[idx].name =
time->era_entries[idx].name;
time->era_entries_ob[idx].format =
time->era_entries[idx].format;
if (time->era_entries[idx].wname != NULL)
{
size_t inner = (wcslen ((wchar_t *) time->era_entries[idx].wname)
+ 1);
time->era_entries_ob[idx].wname = xmalloc (inner
* sizeof (uint32_t));
do
time->era_entries_ob[idx].wname[inner - 1]
= bswap_32 (time->era_entries[idx].wname[inner - 1]);
while (inner-- > 0);
}
else
time->era_entries_ob[idx].wname = NULL;
if (time->era_entries[idx].wformat != NULL)
{
size_t inner
= wcslen ((wchar_t *) time->era_entries[idx].wformat) + 1;
time->era_entries_ob[idx].wformat = xmalloc (inner
* sizeof (uint32_t));
do
time->era_entries_ob[idx].wformat[inner - 1]
= bswap_32 (time->era_entries[idx].wformat[inner - 1]);
while (inner-- > 0);
}
else
time->era_entries_ob[idx].wformat = NULL;
}
} }
if (time->week_ndays == 0) if (time->week_ndays == 0)
@ -594,18 +481,6 @@ time_finish (struct localedef_t *locale, struct charmap_t *charmap)
simply useless, stupid $&$!@... */ simply useless, stupid $&$!@... */
if (time->timezone == NULL) if (time->timezone == NULL)
time->timezone = ""; time->timezone = "";
/* Generate alt digits in other byte order. */
for (cnt = 0; cnt < 100; ++cnt)
if (time->walt_digits[cnt] != NULL)
{
size_t len = wcslen ((wchar_t *) time->walt_digits[cnt]) + 1;
uint32_t *wstr = xmalloc (len * sizeof (uint32_t));
do
wstr[len - 1] = bswap_32 (time->walt_digits[cnt][len - 1]);
while (len-- > 0);
time->walt_digits_ob[cnt] = wstr;
}
} }
@ -621,8 +496,6 @@ time_output (struct localedef_t *locale, struct charmap_t *charmap,
struct locale_file data; struct locale_file data;
uint32_t idx[_NL_ITEM_INDEX (_NL_NUM_LC_TIME)]; uint32_t idx[_NL_ITEM_INDEX (_NL_NUM_LC_TIME)];
size_t cnt, last_idx, num, n; size_t cnt, last_idx, num, n;
uint32_t num_era_eb;
uint32_t num_era_el;
data.magic = LIMAGIC (LC_TIME); data.magic = LIMAGIC (LC_TIME);
data.n = _NL_ITEM_INDEX (_NL_NUM_LC_TIME); data.n = _NL_ITEM_INDEX (_NL_NUM_LC_TIME);
@ -749,66 +622,46 @@ time_output (struct localedef_t *locale, struct charmap_t *charmap,
++cnt; ++cnt;
/* The `era' data in usable form. */ /* The `era' data in usable form. */
#if __BYTE_ORDER == __LITTLE_ENDIAN iov[2 + cnt].iov_base = (void *) &time->num_era;
num_era_eb = bswap_32 (time->num_era);
num_era_el = time->num_era;
#else
num_era_eb = time->num_era;
num_era_el = bswap_32 (time->num_era);
#endif
iov[2 + cnt].iov_base = (void *) &num_era_eb;
iov[2 + cnt].iov_len = sizeof (uint32_t); iov[2 + cnt].iov_len = sizeof (uint32_t);
idx[1 + last_idx] = idx[last_idx] + iov[2 + cnt].iov_len; idx[1 + last_idx] = idx[last_idx] + iov[2 + cnt].iov_len;
++cnt; ++cnt;
++last_idx; ++last_idx;
iov[2 + cnt].iov_base = (void *) &num_era_el;
iov[2 + cnt].iov_len = sizeof (uint32_t);
idx[1 + last_idx] = idx[last_idx] + iov[2 + cnt].iov_len;
++cnt;
++last_idx;
#if __BYTE_ORDER == __LITTLE_ENDIAN
# define ERA_B1 time->era_entries_ob
# define ERA_B2 time->era_entries
#else
# define ERA_B1 time->era_entries
# define ERA_B2 time->era_entries_ob
#endif
idx[1 + last_idx] = idx[last_idx]; idx[1 + last_idx] = idx[last_idx];
for (num = 0; num < time->num_era; ++num) for (num = 0; num < time->num_era; ++num)
{ {
size_t l; size_t l;
iov[2 + cnt].iov_base = (void *) &ERA_B1[num].direction; iov[2 + cnt].iov_base = (void *) &time->era_entries[num].direction;
iov[2 + cnt].iov_len = sizeof (int32_t); iov[2 + cnt].iov_len = sizeof (int32_t);
++cnt; ++cnt;
iov[2 + cnt].iov_base = (void *) &ERA_B1[num].offset; iov[2 + cnt].iov_base = (void *) &time->era_entries[num].offset;
iov[2 + cnt].iov_len = sizeof (int32_t); iov[2 + cnt].iov_len = sizeof (int32_t);
++cnt; ++cnt;
iov[2 + cnt].iov_base = (void *) &ERA_B1[num].start_date[0]; iov[2 + cnt].iov_base = (void *) &time->era_entries[num].start_date[0];
iov[2 + cnt].iov_len = sizeof (int32_t); iov[2 + cnt].iov_len = sizeof (int32_t);
++cnt; ++cnt;
iov[2 + cnt].iov_base = (void *) &ERA_B1[num].start_date[1]; iov[2 + cnt].iov_base = (void *) &time->era_entries[num].start_date[1];
iov[2 + cnt].iov_len = sizeof (int32_t); iov[2 + cnt].iov_len = sizeof (int32_t);
++cnt; ++cnt;
iov[2 + cnt].iov_base = (void *) &ERA_B1[num].start_date[2]; iov[2 + cnt].iov_base = (void *) &time->era_entries[num].start_date[2];
iov[2 + cnt].iov_len = sizeof (int32_t); iov[2 + cnt].iov_len = sizeof (int32_t);
++cnt; ++cnt;
iov[2 + cnt].iov_base = (void *) &ERA_B1[num].stop_date[0]; iov[2 + cnt].iov_base = (void *) &time->era_entries[num].stop_date[0];
iov[2 + cnt].iov_len = sizeof (int32_t); iov[2 + cnt].iov_len = sizeof (int32_t);
++cnt; ++cnt;
iov[2 + cnt].iov_base = (void *) &ERA_B1[num].stop_date[1]; iov[2 + cnt].iov_base = (void *) &time->era_entries[num].stop_date[1];
iov[2 + cnt].iov_len = sizeof (int32_t); iov[2 + cnt].iov_len = sizeof (int32_t);
++cnt; ++cnt;
iov[2 + cnt].iov_base = (void *) &ERA_B1[num].stop_date[2]; iov[2 + cnt].iov_base = (void *) &time->era_entries[num].stop_date[2];
iov[2 + cnt].iov_len = sizeof (int32_t); iov[2 + cnt].iov_len = sizeof (int32_t);
++cnt; ++cnt;
l = (strchr (ERA_B1[num].format, '\0') - ERA_B1[num].name) + 1; l = (strchr (time->era_entries[num].format, '\0')
- time->era_entries[num].name) + 1;
l = (l + 3) & ~3; l = (l + 3) & ~3;
iov[2 + cnt].iov_base = (void *) ERA_B1[num].name; iov[2 + cnt].iov_base = (void *) time->era_entries[num].name;
iov[2 + cnt].iov_len = l; iov[2 + cnt].iov_len = l;
++cnt; ++cnt;
@ -816,9 +669,9 @@ time_output (struct localedef_t *locale, struct charmap_t *charmap,
assert (idx[1 + last_idx] % 4 == 0); assert (idx[1 + last_idx] % 4 == 0);
iov[2 + cnt].iov_base = (void *) ERA_B1[num].wname; iov[2 + cnt].iov_base = (void *) time->era_entries[num].wname;
iov[2 + cnt].iov_len = ((wcschr ((wchar_t *) ERA_B1[cnt].wformat, L'\0') iov[2 + cnt].iov_len = ((wcschr ((wchar_t *) time->era_entries[cnt].wformat, L'\0')
- (wchar_t *) ERA_B1[num].wname + 1) - (wchar_t *) time->era_entries[num].wname + 1)
* sizeof (uint32_t)); * sizeof (uint32_t));
++cnt; ++cnt;
@ -826,127 +679,11 @@ time_output (struct localedef_t *locale, struct charmap_t *charmap,
} }
++last_idx; ++last_idx;
idx[1 + last_idx] = idx[last_idx];
for (num = 0; num < time->num_era; ++num)
{
size_t l;
iov[2 + cnt].iov_base = (void *) &ERA_B2[num].direction;
iov[2 + cnt].iov_len = sizeof (int32_t);
++cnt;
iov[2 + cnt].iov_base = (void *) &ERA_B2[num].offset;
iov[2 + cnt].iov_len = sizeof (int32_t);
++cnt;
iov[2 + cnt].iov_base = (void *) &ERA_B2[num].start_date[0];
iov[2 + cnt].iov_len = sizeof (int32_t);
++cnt;
iov[2 + cnt].iov_base = (void *) &ERA_B2[num].start_date[1];
iov[2 + cnt].iov_len = sizeof (int32_t);
++cnt;
iov[2 + cnt].iov_base = (void *) &ERA_B2[num].start_date[2];
iov[2 + cnt].iov_len = sizeof (int32_t);
++cnt;
iov[2 + cnt].iov_base = (void *) &ERA_B2[num].stop_date[0];
iov[2 + cnt].iov_len = sizeof (int32_t);
++cnt;
iov[2 + cnt].iov_base = (void *) &ERA_B2[num].stop_date[1];
iov[2 + cnt].iov_len = sizeof (int32_t);
++cnt;
iov[2 + cnt].iov_base = (void *) &ERA_B2[num].stop_date[2];
iov[2 + cnt].iov_len = sizeof (int32_t);
++cnt;
l = (strchr (ERA_B2[num].format, '\0') - ERA_B2[num].name) + 1;
l = (l + 3) & ~3;
iov[2 + cnt].iov_base = (void *) ERA_B2[num].name;
iov[2 + cnt].iov_len = l;
++cnt;
idx[1 + last_idx] += 8 * sizeof (int32_t) + l;
iov[2 + cnt].iov_base = (void *) ERA_B1[num].wname;
iov[2 + cnt].iov_len = ((wcschr ((wchar_t *) ERA_B1[cnt].wformat, L'\0')
- (wchar_t *) ERA_B1[num].wname + 1)
* sizeof (uint32_t));
++cnt;
idx[1 + last_idx] += iov[2 + cnt].iov_len;
}
++last_idx;
#if __BYTE_ORDER == __LITTLE_ENDIAN
# define WABDAY_B1 wabday_ob
# define WDAY_B1 wday_ob
# define WABMON_B1 wabmon_ob
# define WMON_B1 wmon_ob
# define WAM_PM_B1 wam_pm_ob
# define WD_T_FMT_B1 wd_t_fmt_ob
# define WD_FMT_B1 wd_fmt_ob
# define WT_FMT_B1 wt_fmt_ob
# define WT_FMT_AMPM_B1 wt_fmt_ampm_ob
# define WERA_YEAR_B1 wera_year_ob
# define WERA_D_FMT_B1 wera_d_fmt_ob
# define WALT_DIGITS_B1 walt_digits_ob
# define WERA_D_T_FMT_B1 wera_d_t_fmt_ob
# define WERA_T_FMT_B1 wera_t_fmt_ob
# define WABDAY_B2 wabday
# define WDAY_B2 wday
# define WABMON_B2 wabmon
# define WMON_B2 wmon
# define WAM_PM_B2 wam_pm
# define WD_T_FMT_B2 wd_t_fmt
# define WD_FMT_B2 wd_fmt
# define WT_FMT_B2 wt_fmt
# define WT_FMT_AMPM_B2 wt_fmt_ampm
# define WERA_YEAR_B2 wera_year
# define WERA_D_FMT_B2 wera_d_fmt
# define WALT_DIGITS_B2 walt_digits
# define WERA_D_T_FMT_B2 wera_d_t_fmt
# define WERA_T_FMT_B2 wera_t_fmt
#else
# define WABDAY_B1 wabday
# define WDAY_B1 wday
# define WABMON_B1 wabmon
# define WMON_B1 wmon
# define WAM_PM_B1 wam_pm
# define WD_T_FMT_B1 wd_t_fmt
# define WD_FMT_B1 wd_fmt
# define WT_FMT_B1 wt_fmt
# define WT_FMT_AMPM_B1 wt_fmt_ampm
# define WERA_YEAR_B1 wera_year
# define WERA_D_FMT_B1 wera_d_fmt
# define WALT_DIGITS_B1 walt_digits
# define WERA_D_T_FMT_B1 wera_d_t_fmt
# define WERA_T_FMT_B1 wera_t_fmt
# define WABDAY_B2 wabday_ob
# define WDAY_B2 wday_ob
# define WABMON_B2 wabmon_ob
# define WMON_B2 wmon_ob
# define WAM_PM_B2 wam_pm_ob
# define WD_T_FMT_B2 wd_t_fmt_ob
# define WD_FMT_B2 wd_fmt_ob
# define WT_FMT_B2 wt_fmt_ob
# define WT_FMT_AMPM_B2 wt_fmt_ampm_ob
# define WERA_YEAR_B2 wera_year_ob
# define WERA_D_FMT_B2 wera_d_fmt_ob
# define WALT_DIGITS_B2 walt_digits_ob
# define WERA_D_T_FMT_B2 wera_d_t_fmt_ob
# define WERA_T_FMT_B2 wera_t_fmt_ob
#endif
/* The wide character ab'days. */ /* The wide character ab'days. */
for (n = 0; n < 7; ++n, ++cnt, ++last_idx) for (n = 0; n < 7; ++n, ++cnt, ++last_idx)
{ {
iov[2 + cnt].iov_base = iov[2 + cnt].iov_base =
(void *) (time->WABDAY_B1[n] ?: empty_wstr); (void *) (time->wabday[n] ?: empty_wstr);
iov[2 + cnt].iov_len = ((wcslen (iov[2 + cnt].iov_base) + 1)
* sizeof (uint32_t));
idx[1 + last_idx] = idx[last_idx] + iov[2 + cnt].iov_len;
}
for (n = 0; n < 7; ++n, ++cnt, ++last_idx)
{
iov[2 + cnt].iov_base =
(void *) (time->WABDAY_B2[n] ?: empty_wstr);
iov[2 + cnt].iov_len = ((wcslen (iov[2 + cnt].iov_base) + 1) iov[2 + cnt].iov_len = ((wcslen (iov[2 + cnt].iov_base) + 1)
* sizeof (uint32_t)); * sizeof (uint32_t));
idx[1 + last_idx] = idx[last_idx] + iov[2 + cnt].iov_len; idx[1 + last_idx] = idx[last_idx] + iov[2 + cnt].iov_len;
@ -956,15 +693,7 @@ time_output (struct localedef_t *locale, struct charmap_t *charmap,
for (n = 0; n < 7; ++n, ++cnt, ++last_idx) for (n = 0; n < 7; ++n, ++cnt, ++last_idx)
{ {
iov[2 + cnt].iov_base = iov[2 + cnt].iov_base =
(void *) (time->WDAY_B1[n] ?: empty_wstr); (void *) (time->wday[n] ?: empty_wstr);
iov[2 + cnt].iov_len = ((wcslen (iov[2 + cnt].iov_base) + 1)
* sizeof (uint32_t));
idx[1 + last_idx] = idx[last_idx] + iov[2 + cnt].iov_len;
}
for (n = 0; n < 7; ++n, ++cnt, ++last_idx)
{
iov[2 + cnt].iov_base =
(void *) (time->WDAY_B2[n] ?: empty_wstr);
iov[2 + cnt].iov_len = ((wcslen (iov[2 + cnt].iov_base) + 1) iov[2 + cnt].iov_len = ((wcslen (iov[2 + cnt].iov_base) + 1)
* sizeof (uint32_t)); * sizeof (uint32_t));
idx[1 + last_idx] = idx[last_idx] + iov[2 + cnt].iov_len; idx[1 + last_idx] = idx[last_idx] + iov[2 + cnt].iov_len;
@ -974,15 +703,7 @@ time_output (struct localedef_t *locale, struct charmap_t *charmap,
for (n = 0; n < 12; ++n, ++cnt, ++last_idx) for (n = 0; n < 12; ++n, ++cnt, ++last_idx)
{ {
iov[2 + cnt].iov_base = iov[2 + cnt].iov_base =
(void *) (time->WABMON_B1[n] ?: empty_wstr); (void *) (time->wabmon[n] ?: empty_wstr);
iov[2 + cnt].iov_len = ((wcslen (iov[2 + cnt].iov_base) + 1)
* sizeof (uint32_t));
idx[1 + last_idx] = idx[last_idx] + iov[2 + cnt].iov_len;
}
for (n = 0; n < 12; ++n, ++cnt, ++last_idx)
{
iov[2 + cnt].iov_base =
(void *) (time->WABMON_B2[n] ?: empty_wstr);
iov[2 + cnt].iov_len = ((wcslen (iov[2 + cnt].iov_base) + 1) iov[2 + cnt].iov_len = ((wcslen (iov[2 + cnt].iov_base) + 1)
* sizeof (uint32_t)); * sizeof (uint32_t));
idx[1 + last_idx] = idx[last_idx] + iov[2 + cnt].iov_len; idx[1 + last_idx] = idx[last_idx] + iov[2 + cnt].iov_len;
@ -992,15 +713,7 @@ time_output (struct localedef_t *locale, struct charmap_t *charmap,
for (n = 0; n < 12; ++n, ++cnt, ++last_idx) for (n = 0; n < 12; ++n, ++cnt, ++last_idx)
{ {
iov[2 + cnt].iov_base = iov[2 + cnt].iov_base =
(void *) (time->WMON_B1[n] ?: empty_wstr); (void *) (time->wmon[n] ?: empty_wstr);
iov[2 + cnt].iov_len = ((wcslen (iov[2 + cnt].iov_base) + 1)
* sizeof (uint32_t));
idx[1 + last_idx] = idx[last_idx] + iov[2 + cnt].iov_len;
}
for (n = 0; n < 12; ++n, ++cnt, ++last_idx)
{
iov[2 + cnt].iov_base =
(void *) (time->WMON_B2[n] ?: empty_wstr);
iov[2 + cnt].iov_len = ((wcslen (iov[2 + cnt].iov_base) + 1) iov[2 + cnt].iov_len = ((wcslen (iov[2 + cnt].iov_base) + 1)
* sizeof (uint32_t)); * sizeof (uint32_t));
idx[1 + last_idx] = idx[last_idx] + iov[2 + cnt].iov_len; idx[1 + last_idx] = idx[last_idx] + iov[2 + cnt].iov_len;
@ -1010,84 +723,48 @@ time_output (struct localedef_t *locale, struct charmap_t *charmap,
for (n = 0; n < 2; ++n, ++cnt, ++last_idx) for (n = 0; n < 2; ++n, ++cnt, ++last_idx)
{ {
iov[2 + cnt].iov_base = iov[2 + cnt].iov_base =
(void *) (time->WAM_PM_B1[n] ?: empty_wstr); (void *) (time->wam_pm[n] ?: empty_wstr);
iov[2 + cnt].iov_len = ((wcslen (iov[2 + cnt].iov_base) + 1)
* sizeof (uint32_t));
idx[1 + last_idx] = idx[last_idx] + iov[2 + cnt].iov_len;
}
for (n = 0; n < 2; ++n, ++cnt, ++last_idx)
{
iov[2 + cnt].iov_base =
(void *) (time->WAM_PM_B2[n] ?: empty_wstr);
iov[2 + cnt].iov_len = ((wcslen (iov[2 + cnt].iov_base) + 1) iov[2 + cnt].iov_len = ((wcslen (iov[2 + cnt].iov_base) + 1)
* sizeof (uint32_t)); * sizeof (uint32_t));
idx[1 + last_idx] = idx[last_idx] + iov[2 + cnt].iov_len; idx[1 + last_idx] = idx[last_idx] + iov[2 + cnt].iov_len;
} }
iov[2 + cnt].iov_base = (void *) (time->WD_T_FMT_B1 ?: empty_wstr); iov[2 + cnt].iov_base = (void *) (time->wd_t_fmt ?: empty_wstr);
iov[2 + cnt].iov_len = ((wcslen (iov[2 + cnt].iov_base) + 1) iov[2 + cnt].iov_len = ((wcslen (iov[2 + cnt].iov_base) + 1)
* sizeof (uint32_t)); * sizeof (uint32_t));
idx[1 + last_idx] = idx[last_idx] + iov[2 + cnt].iov_len; idx[1 + last_idx] = idx[last_idx] + iov[2 + cnt].iov_len;
++cnt; ++cnt;
++last_idx; ++last_idx;
iov[2 + cnt].iov_base = (void *) (time->WD_FMT_B1 ?: empty_wstr); iov[2 + cnt].iov_base = (void *) (time->wd_fmt ?: empty_wstr);
iov[2 + cnt].iov_len = ((wcslen (iov[2 + cnt].iov_base) + 1) iov[2 + cnt].iov_len = ((wcslen (iov[2 + cnt].iov_base) + 1)
* sizeof (uint32_t)); * sizeof (uint32_t));
idx[1 + last_idx] = idx[last_idx] + iov[2 + cnt].iov_len; idx[1 + last_idx] = idx[last_idx] + iov[2 + cnt].iov_len;
++cnt; ++cnt;
++last_idx; ++last_idx;
iov[2 + cnt].iov_base = (void *) (time->WT_FMT_B1 ?: empty_wstr); iov[2 + cnt].iov_base = (void *) (time->wt_fmt ?: empty_wstr);
iov[2 + cnt].iov_len = ((wcslen (iov[2 + cnt].iov_base) + 1) iov[2 + cnt].iov_len = ((wcslen (iov[2 + cnt].iov_base) + 1)
* sizeof (uint32_t)); * sizeof (uint32_t));
idx[1 + last_idx] = idx[last_idx] + iov[2 + cnt].iov_len; idx[1 + last_idx] = idx[last_idx] + iov[2 + cnt].iov_len;
++cnt; ++cnt;
++last_idx; ++last_idx;
iov[2 + cnt].iov_base = (void *) (time->WT_FMT_AMPM_B1 ?: empty_wstr); iov[2 + cnt].iov_base = (void *) (time->wt_fmt_ampm ?: empty_wstr);
iov[2 + cnt].iov_len = ((wcslen (iov[2 + cnt].iov_base) + 1) iov[2 + cnt].iov_len = ((wcslen (iov[2 + cnt].iov_base) + 1)
* sizeof (uint32_t)); * sizeof (uint32_t));
idx[1 + last_idx] = idx[last_idx] + iov[2 + cnt].iov_len; idx[1 + last_idx] = idx[last_idx] + iov[2 + cnt].iov_len;
++cnt; ++cnt;
++last_idx; ++last_idx;
iov[2 + cnt].iov_base = (void *) (time->WD_T_FMT_B2 ?: empty_wstr); iov[2 + cnt].iov_base = (void *) (time->wera_year ?: empty_wstr);
iov[2 + cnt].iov_len = ((wcslen (iov[2 + cnt].iov_base) + 1) iov[2 + cnt].iov_len = ((wcslen (iov[2 + cnt].iov_base) + 1)
* sizeof (uint32_t)); * sizeof (uint32_t));
idx[1 + last_idx] = idx[last_idx] + iov[2 + cnt].iov_len; idx[1 + last_idx] = idx[last_idx] + iov[2 + cnt].iov_len;
++cnt; ++cnt;
++last_idx; ++last_idx;
iov[2 + cnt].iov_base = (void *) (time->WD_FMT_B2 ?: empty_wstr); iov[2 + cnt].iov_base = (void *) (time->wera_d_fmt ?: empty_wstr);
iov[2 + cnt].iov_len = ((wcslen (iov[2 + cnt].iov_base) + 1)
* sizeof (uint32_t));
idx[1 + last_idx] = idx[last_idx] + iov[2 + cnt].iov_len;
++cnt;
++last_idx;
iov[2 + cnt].iov_base = (void *) (time->WT_FMT_B2 ?: empty_wstr);
iov[2 + cnt].iov_len = ((wcslen (iov[2 + cnt].iov_base) + 1)
* sizeof (uint32_t));
idx[1 + last_idx] = idx[last_idx] + iov[2 + cnt].iov_len;
++cnt;
++last_idx;
iov[2 + cnt].iov_base = (void *) (time->WT_FMT_AMPM_B2 ?: empty_wstr);
iov[2 + cnt].iov_len = ((wcslen (iov[2 + cnt].iov_base) + 1)
* sizeof (uint32_t));
idx[1 + last_idx] = idx[last_idx] + iov[2 + cnt].iov_len;
++cnt;
++last_idx;
iov[2 + cnt].iov_base = (void *) (time->WERA_YEAR_B2 ?: empty_wstr);
iov[2 + cnt].iov_len = ((wcslen (iov[2 + cnt].iov_base) + 1)
* sizeof (uint32_t));
idx[1 + last_idx] = idx[last_idx] + iov[2 + cnt].iov_len;
++cnt;
++last_idx;
iov[2 + cnt].iov_base = (void *) (time->WERA_D_FMT_B2 ?: empty_wstr);
iov[2 + cnt].iov_len = ((wcslen (iov[2 + cnt].iov_base) + 1) iov[2 + cnt].iov_len = ((wcslen (iov[2 + cnt].iov_base) + 1)
* sizeof (uint32_t)); * sizeof (uint32_t));
idx[1 + last_idx] = idx[last_idx] + iov[2 + cnt].iov_len; idx[1 + last_idx] = idx[last_idx] + iov[2 + cnt].iov_len;
@ -1097,7 +774,7 @@ time_output (struct localedef_t *locale, struct charmap_t *charmap,
idx[1 + last_idx] = idx[last_idx]; idx[1 + last_idx] = idx[last_idx];
for (num = 0; num < 100; ++num, ++cnt) for (num = 0; num < 100; ++num, ++cnt)
{ {
iov[2 + cnt].iov_base = (void *) (time->WALT_DIGITS_B2[num] iov[2 + cnt].iov_base = (void *) (time->walt_digits[num]
?: empty_wstr); ?: empty_wstr);
iov[2 + cnt].iov_len = ((wcslen (iov[2 + cnt].iov_base) + 1) iov[2 + cnt].iov_len = ((wcslen (iov[2 + cnt].iov_base) + 1)
* sizeof (uint32_t)); * sizeof (uint32_t));
@ -1105,53 +782,14 @@ time_output (struct localedef_t *locale, struct charmap_t *charmap,
} }
++last_idx; ++last_idx;
iov[2 + cnt].iov_base = (void *) (time->WERA_D_T_FMT_B2 ?: empty_wstr); iov[2 + cnt].iov_base = (void *) (time->wera_d_t_fmt ?: empty_wstr);
iov[2 + cnt].iov_len = ((wcslen (iov[2 + cnt].iov_base) + 1) iov[2 + cnt].iov_len = ((wcslen (iov[2 + cnt].iov_base) + 1)
* sizeof (uint32_t)); * sizeof (uint32_t));
idx[1 + last_idx] = idx[last_idx] + iov[2 + cnt].iov_len; idx[1 + last_idx] = idx[last_idx] + iov[2 + cnt].iov_len;
++cnt; ++cnt;
++last_idx; ++last_idx;
iov[2 + cnt].iov_base = (void *) (time->WERA_T_FMT_B2 ?: empty_wstr); iov[2 + cnt].iov_base = (void *) (time->wera_t_fmt ?: empty_wstr);
iov[2 + cnt].iov_len = ((wcslen (iov[2 + cnt].iov_base) + 1)
* sizeof (uint32_t));
idx[1 + last_idx] = idx[last_idx] + iov[2 + cnt].iov_len;
++cnt;
++last_idx;
iov[2 + cnt].iov_base = (void *) (time->WERA_YEAR_B1 ?: empty_wstr);
iov[2 + cnt].iov_len = ((wcslen (iov[2 + cnt].iov_base) + 1)
* sizeof (uint32_t));
idx[1 + last_idx] = idx[last_idx] + iov[2 + cnt].iov_len;
++cnt;
++last_idx;
iov[2 + cnt].iov_base = (void *) (time->WERA_D_FMT_B1 ?: empty_wstr);
iov[2 + cnt].iov_len = ((wcslen (iov[2 + cnt].iov_base) + 1)
* sizeof (uint32_t));
idx[1 + last_idx] = idx[last_idx] + iov[2 + cnt].iov_len;
++cnt;
++last_idx;
idx[1 + last_idx] = idx[last_idx];
for (num = 0; num < 100; ++num, ++cnt)
{
iov[2 + cnt].iov_base = (void *) (time->WALT_DIGITS_B1[num]
?: empty_wstr);
iov[2 + cnt].iov_len = ((wcslen (iov[2 + cnt].iov_base) + 1)
* sizeof (uint32_t));
idx[1 + last_idx] += iov[2 + cnt].iov_len;
}
++last_idx;
iov[2 + cnt].iov_base = (void *) (time->WERA_D_T_FMT_B1 ?: empty_wstr);
iov[2 + cnt].iov_len = ((wcslen (iov[2 + cnt].iov_base) + 1)
* sizeof (uint32_t));
idx[1 + last_idx] = idx[last_idx] + iov[2 + cnt].iov_len;
++cnt;
++last_idx;
iov[2 + cnt].iov_base = (void *) (time->WERA_T_FMT_B1 ?: empty_wstr);
iov[2 + cnt].iov_len = ((wcslen (iov[2 + cnt].iov_base) + 1) iov[2 + cnt].iov_len = ((wcslen (iov[2 + cnt].iov_base) + 1)
* sizeof (uint32_t)); * sizeof (uint32_t));
idx[1 + last_idx] = idx[last_idx] + iov[2 + cnt].iov_len; idx[1 + last_idx] = idx[last_idx] + iov[2 + cnt].iov_len;

View File

@ -1,3 +1,7 @@
1999-09-13 Ulrich Drepper <drepper@cygnus.com>
* locales/id_ID: Fix typo.
1999-08-31 Ulrich Drepper <drepper@cygnus.com> 1999-08-31 Ulrich Drepper <drepper@cygnus.com>
* locales/en_DK: Add Euro symbol to collation and characterization * locales/en_DK: Add Euro symbol to collation and characterization

View File

@ -1,5 +1,6 @@
escape_char / escape_char /
comment_char % comment_char %
repertoiremap mnemonic.ds
% Indonesian language locale for Indonesia % Indonesian language locale for Indonesia
% Source: % Source:
@ -10,8 +11,8 @@ comment_char %
% Fax: % Fax:
% Language: id % Language: id
% Territory: ID % Territory: ID
% Revision: 0.3 % Revision: 0.5
% Date: 1999-04-10 % Date: 1999-09-08
% Application: general % Application: general
% Users: general % Users: general
% Repertoiremap: % Repertoiremap:
@ -79,7 +80,7 @@ mon "<J><a><n><u><a><r><i>";/
"<A><g><u><s><t><u><s>";/ "<A><g><u><s><t><u><s>";/
"<S><e><p><t><e><m><b><e><r>";/ "<S><e><p><t><e><m><b><e><r>";/
"<O><k><t><o><b><e><r>";/ "<O><k><t><o><b><e><r>";/
"<N><o><p><e><m><b><e><r>";/ "<N><o><v><e><m><b><e><r>";/
"<D><e><s><e><m><b><e><r>" "<D><e><s><e><m><b><e><r>"
d_t_fmt "<%><a><SP><%><d><SP><%><b><SP><%><Y><SP><%><r><SP><%><Z>" d_t_fmt "<%><a><SP><%><d><SP><%><b><SP><%><Y><SP><%><r><SP><%><Z>"
d_fmt "<%><d><//><%><m><//><%><y>" d_fmt "<%><d><//><%><m><//><%><y>"

View File

@ -1,4 +1,4 @@
# Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc. # Copyright (C) 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
# This file is part of the GNU C Library. # This file is part of the GNU C Library.
# The GNU C Library is free software; you can redistribute it and/or # The GNU C Library is free software; you can redistribute it and/or
@ -39,7 +39,7 @@ all: # Make this the default target; it will be defined in Rules.
include ../Makeconfig include ../Makeconfig
# Pattern for where message catalog object for language % gets installed. # Pattern for where message catalog object for language % gets installed.
mo-installed = $(inst_localedir)/%/LC_MESSAGES/$(domainname).mo mo-installed = $(inst_msgcatdir)/%/LC_MESSAGES/$(domainname).mo
# Files to install: a $(domainname).mo file for each language. # Files to install: a $(domainname).mo file for each language.
install-others = $(LINGUAS:%=$(mo-installed)) install-others = $(LINGUAS:%=$(mo-installed))

View File

@ -113,7 +113,7 @@ struct arphdr
#define ARPHRD_HIPPI 780 /* High Performance Parallel I'face. */ #define ARPHRD_HIPPI 780 /* High Performance Parallel I'face. */
#define ARPHRD_ASH 781 /* (Nexus Electronics) Ash. */ #define ARPHRD_ASH 781 /* (Nexus Electronics) Ash. */
#define ARPHRD_ECONET 782 /* Acorn Econet. */ #define ARPHRD_ECONET 782 /* Acorn Econet. */
#define ARPHRD_IRDA 783 /* Linux/IR. */ #define ARPHRD_IRDA 783 /* Linux-IrDA. */
#define ARPHRD_FCPP 784 /* Point to point fibrechanel. */ #define ARPHRD_FCPP 784 /* Point to point fibrechanel. */
#define ARPHRD_FCAL 785 /* Fibrechanel arbitrated loop. */ #define ARPHRD_FCAL 785 /* Fibrechanel arbitrated loop. */
#define ARPHRD_FCPL 786 /* Fibrechanel public loop. */ #define ARPHRD_FCPL 786 /* Fibrechanel public loop. */

View File

@ -90,11 +90,7 @@ extern char *tzname[];
# define CHAR_T wchar_t # define CHAR_T wchar_t
# define UCHAR_T unsigned int # define UCHAR_T unsigned int
# define L_(Str) L##Str # define L_(Str) L##Str
# if __BYTE_ORDER == __LITTLE_ENDIAN # define NLW(Sym) _NL_W##Sym
# define NLW(Sym) _NL_W##Sym##_EL
# else
# define NLW(Sym) _NL_W##Sym##_EB
# endif
# define MEMCPY(d, s, n) wmemcpy (d, s, n) # define MEMCPY(d, s, n) wmemcpy (d, s, n)
# define STRLEN(s) wcslen (s) # define STRLEN(s) wcslen (s)

View File

@ -37,35 +37,17 @@ cname_lookup (wint_t wc, __locale_t locale)
#ifndef USE_IN_EXTENDED_LOCALE_MODEL #ifndef USE_IN_EXTENDED_LOCALE_MODEL
extern unsigned int *__ctype_names; extern unsigned int *__ctype_names;
# if BYTE_ORDER == BIG_ENDIAN hash_size = _NL_CURRENT_WORD (LC_CTYPE, _NL_CTYPE_HASH_SIZE);
hash_size = _NL_CURRENT_WORD (LC_CTYPE, _NL_CTYPE_HASH_SIZE_EB); hash_layers = _NL_CURRENT_WORD (LC_CTYPE, _NL_CTYPE_HASH_LAYERS);
hash_layers = _NL_CURRENT_WORD (LC_CTYPE, _NL_CTYPE_HASH_LAYERS_EB);
# elif BYTE_ORDER == LITTLE_ENDIAN
hash_size = _NL_CURRENT_WORD (LC_CTYPE, _NL_CTYPE_HASH_SIZE_EL);
hash_layers = _NL_CURRENT_WORD (LC_CTYPE, _NL_CTYPE_HASH_LAYERS_EL);
# else
# error bizarre byte order
# endif
#else #else
struct locale_data *current = locale->__locales[LC_CTYPE]; struct locale_data *current = locale->__locales[LC_CTYPE];
# if BYTE_ORDER == BIG_ENDIAN
unsigned int *__ctype_names = unsigned int *__ctype_names =
(unsigned int *) current->values[_NL_ITEM_INDEX (_NL_CTYPE_NAMES_EB)].string; (unsigned int *) current->values[_NL_ITEM_INDEX (_NL_CTYPE_NAMES)].string;
hash_size = hash_size =
current->values[_NL_ITEM_INDEX (_NL_CTYPE_HASH_SIZE_EB)].word; current->values[_NL_ITEM_INDEX (_NL_CTYPE_HASH_SIZE)].word;
hash_layers = hash_layers =
current->values[_NL_ITEM_INDEX (_NL_CTYPE_HASH_LAYERS_EB)].word; current->values[_NL_ITEM_INDEX (_NL_CTYPE_HASH_LAYERS)].word;
# elif BYTE_ORDER == LITTLE_ENDIAN
unsigned int *__ctype_names =
(unsigned int *) current->values[_NL_ITEM_INDEX (_NL_CTYPE_NAMES_EL)].string;
hash_size =
current->values[_NL_ITEM_INDEX (_NL_CTYPE_HASH_SIZE_EL)].word;
hash_layers =
current->values[_NL_ITEM_INDEX (_NL_CTYPE_HASH_LAYERS_EL)].word;
# else
# error bizarre byte order
# endif
#endif #endif
result = wc % hash_size; result = wc % hash_size;