forked from rpms/glibc
0bc856b55b
Related: #1983628
755 lines
30 KiB
Diff
755 lines
30 KiB
Diff
Submission: https://sourceware.org/pipermail/libc-alpha/2021-July/129455.html
|
|
|
|
Author: Carlos O'Donell <carlos@redhat.com>
|
|
Date: Sun Jul 25 22:10:17 2021 -0400
|
|
|
|
Add 'strcmp_collation' support for LC_COLLATE.
|
|
|
|
Support a new directive 'strcmp_collation' in the LC_COLLATE
|
|
section of a locale source file. This new directive causes all
|
|
collation rules to be dropped and instead 'strcmp' is used for
|
|
collation of the input character set. This is required to allow
|
|
for a C.UTF-8 that contains zero collation rules (minimal size)
|
|
and sorts using code point sorting.
|
|
|
|
Tested on x86_64 and i686 without regression.
|
|
|
|
diff --git a/locale/programs/ld-collate.c b/locale/programs/ld-collate.c
|
|
index b6406b775d3a81ad..ec778e23d3c4beb7 100644
|
|
--- a/locale/programs/ld-collate.c
|
|
+++ b/locale/programs/ld-collate.c
|
|
@@ -195,6 +195,9 @@ struct name_list
|
|
/* The real definition of the struct for the LC_COLLATE locale. */
|
|
struct locale_collate_t
|
|
{
|
|
+ /* Does the locale use strcmp to compare the encoding? */
|
|
+ bool strcmp_collation;
|
|
+
|
|
int col_weight_max;
|
|
int cur_weight_max;
|
|
|
|
@@ -1510,6 +1513,7 @@ collate_startup (struct linereader *ldfile, struct localedef_t *locale,
|
|
obstack_init (&collate->mempool);
|
|
|
|
collate->col_weight_max = -1;
|
|
+ collate->strcmp_collation = false;
|
|
}
|
|
else
|
|
/* Reuse the copy_locale's data structures. */
|
|
@@ -1568,6 +1572,10 @@ collate_finish (struct localedef_t *locale, const struct charmap_t *charmap)
|
|
return;
|
|
}
|
|
|
|
+ /* No data required. */
|
|
+ if (collate->strcmp_collation)
|
|
+ return;
|
|
+
|
|
/* If this assertion is hit change the type in `element_t'. */
|
|
assert (nrules <= sizeof (runp->used_in_level) * 8);
|
|
|
|
@@ -2115,7 +2123,7 @@ collate_output (struct localedef_t *locale, const struct charmap_t *charmap,
|
|
add_locale_uint32 (&file, nrules);
|
|
|
|
/* If we have no LC_COLLATE data emit only the number of rules as zero. */
|
|
- if (collate == NULL)
|
|
+ if (collate == NULL || collate->strcmp_collation)
|
|
{
|
|
size_t idx;
|
|
for (idx = 1; idx < nelems; idx++)
|
|
@@ -2123,6 +2131,10 @@ collate_output (struct localedef_t *locale, const struct charmap_t *charmap,
|
|
/* The words have to be handled specially. */
|
|
if (idx == _NL_ITEM_INDEX (_NL_COLLATE_SYMB_HASH_SIZEMB))
|
|
add_locale_uint32 (&file, 0);
|
|
+ else if (idx == _NL_ITEM_INDEX (_NL_COLLATE_CODESET)
|
|
+ && collate != NULL)
|
|
+ /* A valid LC_COLLATE must have a code set name. */
|
|
+ add_locale_string (&file, charmap->code_set_name);
|
|
else
|
|
add_locale_empty (&file);
|
|
}
|
|
@@ -2672,6 +2684,10 @@ collate_read (struct linereader *ldfile, struct localedef_t *result,
|
|
|
|
switch (nowtok)
|
|
{
|
|
+ case tok_strcmp_collation:
|
|
+ collate->strcmp_collation = true;
|
|
+ break;
|
|
+
|
|
case tok_copy:
|
|
/* Allow copying other locales. */
|
|
now = lr_token (ldfile, charmap, result, NULL, verbose);
|
|
@@ -3742,9 +3758,11 @@ error while adding equivalent collating symbol"));
|
|
/* Next we assume `LC_COLLATE'. */
|
|
if (!ignore_content)
|
|
{
|
|
- if (state == 0 && copy_locale == NULL)
|
|
+ if (state == 0
|
|
+ && copy_locale == NULL
|
|
+ && !collate->strcmp_collation)
|
|
/* We must either see a copy statement or have
|
|
- ordering values. */
|
|
+ ordering values, or strcmp_collation. */
|
|
lr_error (ldfile,
|
|
_("%s: empty category description not allowed"),
|
|
"LC_COLLATE");
|
|
diff --git a/locale/programs/locfile-kw.gperf b/locale/programs/locfile-kw.gperf
|
|
index bcded15ddb4c44bb..0ae72673409b3545 100644
|
|
--- a/locale/programs/locfile-kw.gperf
|
|
+++ b/locale/programs/locfile-kw.gperf
|
|
@@ -54,6 +54,7 @@ translit_end, tok_translit_end, 0
|
|
translit_ignore, tok_translit_ignore, 0
|
|
default_missing, tok_default_missing, 0
|
|
LC_COLLATE, tok_lc_collate, 0
|
|
+strcmp_collation, tok_strcmp_collation, 0
|
|
coll_weight_max, tok_coll_weight_max, 0
|
|
section-symbol, tok_section_symbol, 0
|
|
collating-element, tok_collating_element, 0
|
|
diff --git a/locale/programs/locfile-kw.h b/locale/programs/locfile-kw.h
|
|
index bc1cb8f0845852ad..f7af5c8a0a4dbeeb 100644
|
|
--- a/locale/programs/locfile-kw.h
|
|
+++ b/locale/programs/locfile-kw.h
|
|
@@ -54,7 +54,7 @@
|
|
#line 24 "locfile-kw.gperf"
|
|
struct keyword_t ;
|
|
|
|
-#define TOTAL_KEYWORDS 178
|
|
+#define TOTAL_KEYWORDS 179
|
|
#define MIN_WORD_LENGTH 3
|
|
#define MAX_WORD_LENGTH 22
|
|
#define MIN_HASH_VALUE 3
|
|
@@ -78,7 +78,7 @@ hash (register const char *str, register size_t len)
|
|
631, 631, 631, 631, 631, 631, 631, 631, 631, 631,
|
|
631, 631, 631, 631, 631, 631, 631, 631, 631, 631,
|
|
631, 631, 631, 631, 631, 631, 631, 631, 631, 631,
|
|
- 5, 0, 631, 631, 631, 631, 631, 631, 631, 631,
|
|
+ 10, 5, 631, 631, 631, 631, 631, 631, 631, 631,
|
|
631, 631, 631, 631, 631, 5, 631, 0, 0, 0,
|
|
0, 0, 10, 0, 631, 631, 0, 631, 0, 5,
|
|
631, 631, 0, 0, 0, 10, 631, 631, 631, 0,
|
|
@@ -134,92 +134,92 @@ locfile_hash (register const char *str, register size_t len)
|
|
#line 31 "locfile-kw.gperf"
|
|
{"END", tok_end, 0},
|
|
{""}, {""},
|
|
-#line 70 "locfile-kw.gperf"
|
|
+#line 71 "locfile-kw.gperf"
|
|
{"IGNORE", tok_ignore, 0},
|
|
-#line 129 "locfile-kw.gperf"
|
|
+#line 130 "locfile-kw.gperf"
|
|
{"LC_TIME", tok_lc_time, 0},
|
|
#line 30 "locfile-kw.gperf"
|
|
{"LC_CTYPE", tok_lc_ctype, 0},
|
|
{""},
|
|
-#line 168 "locfile-kw.gperf"
|
|
+#line 169 "locfile-kw.gperf"
|
|
{"LC_ADDRESS", tok_lc_address, 0},
|
|
-#line 153 "locfile-kw.gperf"
|
|
+#line 154 "locfile-kw.gperf"
|
|
{"LC_MESSAGES", tok_lc_messages, 0},
|
|
-#line 161 "locfile-kw.gperf"
|
|
+#line 162 "locfile-kw.gperf"
|
|
{"LC_NAME", tok_lc_name, 0},
|
|
-#line 158 "locfile-kw.gperf"
|
|
+#line 159 "locfile-kw.gperf"
|
|
{"LC_PAPER", tok_lc_paper, 0},
|
|
-#line 186 "locfile-kw.gperf"
|
|
+#line 187 "locfile-kw.gperf"
|
|
{"LC_MEASUREMENT", tok_lc_measurement, 0},
|
|
#line 56 "locfile-kw.gperf"
|
|
{"LC_COLLATE", tok_lc_collate, 0},
|
|
{""},
|
|
-#line 188 "locfile-kw.gperf"
|
|
+#line 189 "locfile-kw.gperf"
|
|
{"LC_IDENTIFICATION", tok_lc_identification, 0},
|
|
-#line 201 "locfile-kw.gperf"
|
|
+#line 202 "locfile-kw.gperf"
|
|
{"revision", tok_revision, 0},
|
|
-#line 69 "locfile-kw.gperf"
|
|
+#line 70 "locfile-kw.gperf"
|
|
{"UNDEFINED", tok_undefined, 0},
|
|
-#line 125 "locfile-kw.gperf"
|
|
+#line 126 "locfile-kw.gperf"
|
|
{"LC_NUMERIC", tok_lc_numeric, 0},
|
|
-#line 82 "locfile-kw.gperf"
|
|
+#line 83 "locfile-kw.gperf"
|
|
{"LC_MONETARY", tok_lc_monetary, 0},
|
|
-#line 181 "locfile-kw.gperf"
|
|
+#line 182 "locfile-kw.gperf"
|
|
{"LC_TELEPHONE", tok_lc_telephone, 0},
|
|
{""}, {""}, {""},
|
|
-#line 75 "locfile-kw.gperf"
|
|
+#line 76 "locfile-kw.gperf"
|
|
{"define", tok_define, 0},
|
|
-#line 154 "locfile-kw.gperf"
|
|
+#line 155 "locfile-kw.gperf"
|
|
{"yesexpr", tok_yesexpr, 0},
|
|
-#line 141 "locfile-kw.gperf"
|
|
+#line 142 "locfile-kw.gperf"
|
|
{"era_year", tok_era_year, 0},
|
|
{""},
|
|
#line 54 "locfile-kw.gperf"
|
|
{"translit_ignore", tok_translit_ignore, 0},
|
|
-#line 156 "locfile-kw.gperf"
|
|
+#line 157 "locfile-kw.gperf"
|
|
{"yesstr", tok_yesstr, 0},
|
|
{""},
|
|
-#line 89 "locfile-kw.gperf"
|
|
+#line 90 "locfile-kw.gperf"
|
|
{"negative_sign", tok_negative_sign, 0},
|
|
{""},
|
|
-#line 137 "locfile-kw.gperf"
|
|
+#line 138 "locfile-kw.gperf"
|
|
{"t_fmt", tok_t_fmt, 0},
|
|
-#line 159 "locfile-kw.gperf"
|
|
+#line 160 "locfile-kw.gperf"
|
|
{"height", tok_height, 0},
|
|
{""}, {""},
|
|
#line 52 "locfile-kw.gperf"
|
|
{"translit_start", tok_translit_start, 0},
|
|
-#line 136 "locfile-kw.gperf"
|
|
+#line 137 "locfile-kw.gperf"
|
|
{"d_fmt", tok_d_fmt, 0},
|
|
{""},
|
|
#line 53 "locfile-kw.gperf"
|
|
{"translit_end", tok_translit_end, 0},
|
|
-#line 94 "locfile-kw.gperf"
|
|
+#line 95 "locfile-kw.gperf"
|
|
{"n_cs_precedes", tok_n_cs_precedes, 0},
|
|
-#line 144 "locfile-kw.gperf"
|
|
+#line 145 "locfile-kw.gperf"
|
|
{"era_t_fmt", tok_era_t_fmt, 0},
|
|
#line 39 "locfile-kw.gperf"
|
|
{"space", tok_space, 0},
|
|
-#line 72 "locfile-kw.gperf"
|
|
- {"reorder-end", tok_reorder_end, 0},
|
|
#line 73 "locfile-kw.gperf"
|
|
+ {"reorder-end", tok_reorder_end, 0},
|
|
+#line 74 "locfile-kw.gperf"
|
|
{"reorder-sections-after", tok_reorder_sections_after, 0},
|
|
{""},
|
|
-#line 142 "locfile-kw.gperf"
|
|
+#line 143 "locfile-kw.gperf"
|
|
{"era_d_fmt", tok_era_d_fmt, 0},
|
|
-#line 189 "locfile-kw.gperf"
|
|
+#line 190 "locfile-kw.gperf"
|
|
{"title", tok_title, 0},
|
|
{""}, {""},
|
|
-#line 149 "locfile-kw.gperf"
|
|
+#line 150 "locfile-kw.gperf"
|
|
{"timezone", tok_timezone, 0},
|
|
{""},
|
|
-#line 74 "locfile-kw.gperf"
|
|
+#line 75 "locfile-kw.gperf"
|
|
{"reorder-sections-end", tok_reorder_sections_end, 0},
|
|
{""}, {""}, {""},
|
|
-#line 95 "locfile-kw.gperf"
|
|
+#line 96 "locfile-kw.gperf"
|
|
{"n_sep_by_space", tok_n_sep_by_space, 0},
|
|
{""}, {""},
|
|
-#line 100 "locfile-kw.gperf"
|
|
+#line 101 "locfile-kw.gperf"
|
|
{"int_n_cs_precedes", tok_int_n_cs_precedes, 0},
|
|
{""}, {""}, {""},
|
|
#line 26 "locfile-kw.gperf"
|
|
@@ -233,147 +233,147 @@ locfile_hash (register const char *str, register size_t len)
|
|
{"print", tok_print, 0},
|
|
#line 44 "locfile-kw.gperf"
|
|
{"xdigit", tok_xdigit, 0},
|
|
-#line 110 "locfile-kw.gperf"
|
|
+#line 111 "locfile-kw.gperf"
|
|
{"duo_n_cs_precedes", tok_duo_n_cs_precedes, 0},
|
|
-#line 127 "locfile-kw.gperf"
|
|
+#line 128 "locfile-kw.gperf"
|
|
{"thousands_sep", tok_thousands_sep, 0},
|
|
-#line 197 "locfile-kw.gperf"
|
|
+#line 198 "locfile-kw.gperf"
|
|
{"territory", tok_territory, 0},
|
|
#line 36 "locfile-kw.gperf"
|
|
{"digit", tok_digit, 0},
|
|
{""}, {""},
|
|
-#line 92 "locfile-kw.gperf"
|
|
+#line 93 "locfile-kw.gperf"
|
|
{"p_cs_precedes", tok_p_cs_precedes, 0},
|
|
{""}, {""},
|
|
-#line 62 "locfile-kw.gperf"
|
|
+#line 63 "locfile-kw.gperf"
|
|
{"script", tok_script, 0},
|
|
#line 29 "locfile-kw.gperf"
|
|
{"include", tok_include, 0},
|
|
{""},
|
|
-#line 78 "locfile-kw.gperf"
|
|
+#line 79 "locfile-kw.gperf"
|
|
{"else", tok_else, 0},
|
|
-#line 184 "locfile-kw.gperf"
|
|
+#line 185 "locfile-kw.gperf"
|
|
{"int_select", tok_int_select, 0},
|
|
{""}, {""}, {""},
|
|
-#line 132 "locfile-kw.gperf"
|
|
+#line 133 "locfile-kw.gperf"
|
|
{"week", tok_week, 0},
|
|
#line 33 "locfile-kw.gperf"
|
|
{"upper", tok_upper, 0},
|
|
{""}, {""},
|
|
-#line 194 "locfile-kw.gperf"
|
|
+#line 195 "locfile-kw.gperf"
|
|
{"tel", tok_tel, 0},
|
|
-#line 93 "locfile-kw.gperf"
|
|
+#line 94 "locfile-kw.gperf"
|
|
{"p_sep_by_space", tok_p_sep_by_space, 0},
|
|
-#line 160 "locfile-kw.gperf"
|
|
+#line 161 "locfile-kw.gperf"
|
|
{"width", tok_width, 0},
|
|
{""},
|
|
-#line 98 "locfile-kw.gperf"
|
|
+#line 99 "locfile-kw.gperf"
|
|
{"int_p_cs_precedes", tok_int_p_cs_precedes, 0},
|
|
{""}, {""},
|
|
#line 41 "locfile-kw.gperf"
|
|
{"punct", tok_punct, 0},
|
|
{""}, {""},
|
|
-#line 101 "locfile-kw.gperf"
|
|
+#line 102 "locfile-kw.gperf"
|
|
{"int_n_sep_by_space", tok_int_n_sep_by_space, 0},
|
|
{""}, {""}, {""},
|
|
-#line 108 "locfile-kw.gperf"
|
|
+#line 109 "locfile-kw.gperf"
|
|
{"duo_p_cs_precedes", tok_duo_p_cs_precedes, 0},
|
|
#line 48 "locfile-kw.gperf"
|
|
{"charconv", tok_charconv, 0},
|
|
{""},
|
|
#line 47 "locfile-kw.gperf"
|
|
{"class", tok_class, 0},
|
|
-#line 114 "locfile-kw.gperf"
|
|
- {"duo_int_n_cs_precedes", tok_duo_int_n_cs_precedes, 0},
|
|
#line 115 "locfile-kw.gperf"
|
|
+ {"duo_int_n_cs_precedes", tok_duo_int_n_cs_precedes, 0},
|
|
+#line 116 "locfile-kw.gperf"
|
|
{"duo_int_n_sep_by_space", tok_duo_int_n_sep_by_space, 0},
|
|
-#line 111 "locfile-kw.gperf"
|
|
+#line 112 "locfile-kw.gperf"
|
|
{"duo_n_sep_by_space", tok_duo_n_sep_by_space, 0},
|
|
-#line 119 "locfile-kw.gperf"
|
|
+#line 120 "locfile-kw.gperf"
|
|
{"duo_int_n_sign_posn", tok_duo_int_n_sign_posn, 0},
|
|
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
|
|
{""}, {""}, {""}, {""}, {""},
|
|
-#line 58 "locfile-kw.gperf"
|
|
+#line 59 "locfile-kw.gperf"
|
|
{"section-symbol", tok_section_symbol, 0},
|
|
-#line 185 "locfile-kw.gperf"
|
|
+#line 186 "locfile-kw.gperf"
|
|
{"int_prefix", tok_int_prefix, 0},
|
|
{""}, {""}, {""}, {""},
|
|
#line 42 "locfile-kw.gperf"
|
|
{"graph", tok_graph, 0},
|
|
{""}, {""},
|
|
-#line 99 "locfile-kw.gperf"
|
|
+#line 100 "locfile-kw.gperf"
|
|
{"int_p_sep_by_space", tok_int_p_sep_by_space, 0},
|
|
{""}, {""}, {""}, {""}, {""}, {""}, {""},
|
|
-#line 112 "locfile-kw.gperf"
|
|
- {"duo_int_p_cs_precedes", tok_duo_int_p_cs_precedes, 0},
|
|
#line 113 "locfile-kw.gperf"
|
|
+ {"duo_int_p_cs_precedes", tok_duo_int_p_cs_precedes, 0},
|
|
+#line 114 "locfile-kw.gperf"
|
|
{"duo_int_p_sep_by_space", tok_duo_int_p_sep_by_space, 0},
|
|
-#line 109 "locfile-kw.gperf"
|
|
+#line 110 "locfile-kw.gperf"
|
|
{"duo_p_sep_by_space", tok_duo_p_sep_by_space, 0},
|
|
-#line 118 "locfile-kw.gperf"
|
|
+#line 119 "locfile-kw.gperf"
|
|
{"duo_int_p_sign_posn", tok_duo_int_p_sign_posn, 0},
|
|
-#line 157 "locfile-kw.gperf"
|
|
+#line 158 "locfile-kw.gperf"
|
|
{"nostr", tok_nostr, 0},
|
|
{""}, {""},
|
|
-#line 140 "locfile-kw.gperf"
|
|
+#line 141 "locfile-kw.gperf"
|
|
{"era", tok_era, 0},
|
|
{""},
|
|
-#line 84 "locfile-kw.gperf"
|
|
+#line 85 "locfile-kw.gperf"
|
|
{"currency_symbol", tok_currency_symbol, 0},
|
|
{""},
|
|
-#line 167 "locfile-kw.gperf"
|
|
+#line 168 "locfile-kw.gperf"
|
|
{"name_ms", tok_name_ms, 0},
|
|
-#line 165 "locfile-kw.gperf"
|
|
- {"name_mrs", tok_name_mrs, 0},
|
|
#line 166 "locfile-kw.gperf"
|
|
+ {"name_mrs", tok_name_mrs, 0},
|
|
+#line 167 "locfile-kw.gperf"
|
|
{"name_miss", tok_name_miss, 0},
|
|
-#line 83 "locfile-kw.gperf"
|
|
+#line 84 "locfile-kw.gperf"
|
|
{"int_curr_symbol", tok_int_curr_symbol, 0},
|
|
-#line 190 "locfile-kw.gperf"
|
|
+#line 191 "locfile-kw.gperf"
|
|
{"source", tok_source, 0},
|
|
-#line 164 "locfile-kw.gperf"
|
|
+#line 165 "locfile-kw.gperf"
|
|
{"name_mr", tok_name_mr, 0},
|
|
-#line 163 "locfile-kw.gperf"
|
|
+#line 164 "locfile-kw.gperf"
|
|
{"name_gen", tok_name_gen, 0},
|
|
-#line 202 "locfile-kw.gperf"
|
|
+#line 203 "locfile-kw.gperf"
|
|
{"date", tok_date, 0},
|
|
{""}, {""},
|
|
-#line 191 "locfile-kw.gperf"
|
|
+#line 192 "locfile-kw.gperf"
|
|
{"address", tok_address, 0},
|
|
-#line 162 "locfile-kw.gperf"
|
|
+#line 163 "locfile-kw.gperf"
|
|
{"name_fmt", tok_name_fmt, 0},
|
|
#line 32 "locfile-kw.gperf"
|
|
{"copy", tok_copy, 0},
|
|
-#line 103 "locfile-kw.gperf"
|
|
+#line 104 "locfile-kw.gperf"
|
|
{"int_n_sign_posn", tok_int_n_sign_posn, 0},
|
|
{""}, {""},
|
|
-#line 131 "locfile-kw.gperf"
|
|
+#line 132 "locfile-kw.gperf"
|
|
{"day", tok_day, 0},
|
|
-#line 105 "locfile-kw.gperf"
|
|
+#line 106 "locfile-kw.gperf"
|
|
{"duo_currency_symbol", tok_duo_currency_symbol, 0},
|
|
{""}, {""}, {""},
|
|
-#line 150 "locfile-kw.gperf"
|
|
+#line 151 "locfile-kw.gperf"
|
|
{"date_fmt", tok_date_fmt, 0},
|
|
-#line 64 "locfile-kw.gperf"
|
|
+#line 65 "locfile-kw.gperf"
|
|
{"order_end", tok_order_end, 0},
|
|
-#line 117 "locfile-kw.gperf"
|
|
+#line 118 "locfile-kw.gperf"
|
|
{"duo_n_sign_posn", tok_duo_n_sign_posn, 0},
|
|
{""},
|
|
-#line 170 "locfile-kw.gperf"
|
|
+#line 171 "locfile-kw.gperf"
|
|
{"country_name", tok_country_name, 0},
|
|
-#line 71 "locfile-kw.gperf"
|
|
+#line 72 "locfile-kw.gperf"
|
|
{"reorder-after", tok_reorder_after, 0},
|
|
{""}, {""},
|
|
-#line 155 "locfile-kw.gperf"
|
|
+#line 156 "locfile-kw.gperf"
|
|
{"noexpr", tok_noexpr, 0},
|
|
#line 50 "locfile-kw.gperf"
|
|
{"tolower", tok_tolower, 0},
|
|
-#line 198 "locfile-kw.gperf"
|
|
+#line 199 "locfile-kw.gperf"
|
|
{"audience", tok_audience, 0},
|
|
{""}, {""}, {""},
|
|
#line 49 "locfile-kw.gperf"
|
|
{"toupper", tok_toupper, 0},
|
|
-#line 68 "locfile-kw.gperf"
|
|
+#line 69 "locfile-kw.gperf"
|
|
{"position", tok_position, 0},
|
|
{""},
|
|
#line 40 "locfile-kw.gperf"
|
|
@@ -381,196 +381,198 @@ locfile_hash (register const char *str, register size_t len)
|
|
{""},
|
|
#line 27 "locfile-kw.gperf"
|
|
{"comment_char", tok_comment_char, 0},
|
|
-#line 88 "locfile-kw.gperf"
|
|
+#line 89 "locfile-kw.gperf"
|
|
{"positive_sign", tok_positive_sign, 0},
|
|
{""}, {""}, {""}, {""},
|
|
-#line 61 "locfile-kw.gperf"
|
|
+#line 62 "locfile-kw.gperf"
|
|
{"symbol-equivalence", tok_symbol_equivalence, 0},
|
|
{""},
|
|
-#line 102 "locfile-kw.gperf"
|
|
+#line 103 "locfile-kw.gperf"
|
|
{"int_p_sign_posn", tok_int_p_sign_posn, 0},
|
|
-#line 175 "locfile-kw.gperf"
|
|
+#line 176 "locfile-kw.gperf"
|
|
{"country_car", tok_country_car, 0},
|
|
{""}, {""},
|
|
-#line 104 "locfile-kw.gperf"
|
|
+#line 105 "locfile-kw.gperf"
|
|
{"duo_int_curr_symbol", tok_duo_int_curr_symbol, 0},
|
|
{""}, {""},
|
|
-#line 135 "locfile-kw.gperf"
|
|
+#line 136 "locfile-kw.gperf"
|
|
{"d_t_fmt", tok_d_t_fmt, 0},
|
|
{""}, {""},
|
|
-#line 116 "locfile-kw.gperf"
|
|
+#line 117 "locfile-kw.gperf"
|
|
{"duo_p_sign_posn", tok_duo_p_sign_posn, 0},
|
|
-#line 187 "locfile-kw.gperf"
|
|
+#line 188 "locfile-kw.gperf"
|
|
{"measurement", tok_measurement, 0},
|
|
-#line 176 "locfile-kw.gperf"
|
|
+#line 177 "locfile-kw.gperf"
|
|
{"country_isbn", tok_country_isbn, 0},
|
|
#line 37 "locfile-kw.gperf"
|
|
{"outdigit", tok_outdigit, 0},
|
|
{""}, {""},
|
|
-#line 143 "locfile-kw.gperf"
|
|
+#line 144 "locfile-kw.gperf"
|
|
{"era_d_t_fmt", tok_era_d_t_fmt, 0},
|
|
{""}, {""}, {""},
|
|
#line 34 "locfile-kw.gperf"
|
|
{"lower", tok_lower, 0},
|
|
-#line 183 "locfile-kw.gperf"
|
|
+#line 184 "locfile-kw.gperf"
|
|
{"tel_dom_fmt", tok_tel_dom_fmt, 0},
|
|
-#line 171 "locfile-kw.gperf"
|
|
+#line 172 "locfile-kw.gperf"
|
|
{"country_post", tok_country_post, 0},
|
|
-#line 148 "locfile-kw.gperf"
|
|
+#line 149 "locfile-kw.gperf"
|
|
{"cal_direction", tok_cal_direction, 0},
|
|
{""},
|
|
-#line 139 "locfile-kw.gperf"
|
|
+#line 140 "locfile-kw.gperf"
|
|
{"t_fmt_ampm", tok_t_fmt_ampm, 0},
|
|
-#line 91 "locfile-kw.gperf"
|
|
+#line 92 "locfile-kw.gperf"
|
|
{"frac_digits", tok_frac_digits, 0},
|
|
{""}, {""},
|
|
-#line 177 "locfile-kw.gperf"
|
|
+#line 178 "locfile-kw.gperf"
|
|
{"lang_name", tok_lang_name, 0},
|
|
-#line 90 "locfile-kw.gperf"
|
|
+#line 91 "locfile-kw.gperf"
|
|
{"int_frac_digits", tok_int_frac_digits, 0},
|
|
{""},
|
|
-#line 121 "locfile-kw.gperf"
|
|
+#line 122 "locfile-kw.gperf"
|
|
{"uno_valid_to", tok_uno_valid_to, 0},
|
|
-#line 126 "locfile-kw.gperf"
|
|
+#line 127 "locfile-kw.gperf"
|
|
{"decimal_point", tok_decimal_point, 0},
|
|
{""},
|
|
-#line 133 "locfile-kw.gperf"
|
|
+#line 134 "locfile-kw.gperf"
|
|
{"abmon", tok_abmon, 0},
|
|
{""}, {""}, {""}, {""},
|
|
-#line 107 "locfile-kw.gperf"
|
|
+#line 108 "locfile-kw.gperf"
|
|
{"duo_frac_digits", tok_duo_frac_digits, 0},
|
|
-#line 182 "locfile-kw.gperf"
|
|
+#line 183 "locfile-kw.gperf"
|
|
{"tel_int_fmt", tok_tel_int_fmt, 0},
|
|
-#line 123 "locfile-kw.gperf"
|
|
+#line 124 "locfile-kw.gperf"
|
|
{"duo_valid_to", tok_duo_valid_to, 0},
|
|
-#line 146 "locfile-kw.gperf"
|
|
+#line 147 "locfile-kw.gperf"
|
|
{"first_weekday", tok_first_weekday, 0},
|
|
{""},
|
|
-#line 130 "locfile-kw.gperf"
|
|
+#line 131 "locfile-kw.gperf"
|
|
{"abday", tok_abday, 0},
|
|
{""},
|
|
-#line 200 "locfile-kw.gperf"
|
|
+#line 201 "locfile-kw.gperf"
|
|
{"abbreviation", tok_abbreviation, 0},
|
|
-#line 147 "locfile-kw.gperf"
|
|
+#line 148 "locfile-kw.gperf"
|
|
{"first_workday", tok_first_workday, 0},
|
|
{""}, {""},
|
|
-#line 97 "locfile-kw.gperf"
|
|
+#line 98 "locfile-kw.gperf"
|
|
{"n_sign_posn", tok_n_sign_posn, 0},
|
|
{""}, {""}, {""},
|
|
-#line 145 "locfile-kw.gperf"
|
|
+#line 146 "locfile-kw.gperf"
|
|
{"alt_digits", tok_alt_digits, 0},
|
|
{""}, {""},
|
|
-#line 128 "locfile-kw.gperf"
|
|
+#line 129 "locfile-kw.gperf"
|
|
{"grouping", tok_grouping, 0},
|
|
{""},
|
|
#line 45 "locfile-kw.gperf"
|
|
{"blank", tok_blank, 0},
|
|
{""}, {""},
|
|
-#line 196 "locfile-kw.gperf"
|
|
+#line 197 "locfile-kw.gperf"
|
|
{"language", tok_language, 0},
|
|
-#line 120 "locfile-kw.gperf"
|
|
+#line 121 "locfile-kw.gperf"
|
|
{"uno_valid_from", tok_uno_valid_from, 0},
|
|
{""},
|
|
-#line 199 "locfile-kw.gperf"
|
|
+#line 200 "locfile-kw.gperf"
|
|
{"application", tok_application, 0},
|
|
{""},
|
|
-#line 80 "locfile-kw.gperf"
|
|
+#line 81 "locfile-kw.gperf"
|
|
{"elifndef", tok_elifndef, 0},
|
|
{""}, {""}, {""}, {""}, {""},
|
|
-#line 122 "locfile-kw.gperf"
|
|
+#line 123 "locfile-kw.gperf"
|
|
{"duo_valid_from", tok_duo_valid_from, 0},
|
|
-#line 57 "locfile-kw.gperf"
|
|
+#line 58 "locfile-kw.gperf"
|
|
{"coll_weight_max", tok_coll_weight_max, 0},
|
|
{""},
|
|
-#line 79 "locfile-kw.gperf"
|
|
+#line 80 "locfile-kw.gperf"
|
|
{"elifdef", tok_elifdef, 0},
|
|
-#line 67 "locfile-kw.gperf"
|
|
+#line 68 "locfile-kw.gperf"
|
|
{"backward", tok_backward, 0},
|
|
-#line 106 "locfile-kw.gperf"
|
|
+#line 107 "locfile-kw.gperf"
|
|
{"duo_int_frac_digits", tok_duo_int_frac_digits, 0},
|
|
{""}, {""}, {""}, {""}, {""}, {""},
|
|
-#line 96 "locfile-kw.gperf"
|
|
+#line 97 "locfile-kw.gperf"
|
|
{"p_sign_posn", tok_p_sign_posn, 0},
|
|
{""},
|
|
-#line 203 "locfile-kw.gperf"
|
|
+#line 204 "locfile-kw.gperf"
|
|
{"category", tok_category, 0},
|
|
{""}, {""}, {""}, {""},
|
|
-#line 134 "locfile-kw.gperf"
|
|
+#line 135 "locfile-kw.gperf"
|
|
{"mon", tok_mon, 0},
|
|
{""},
|
|
-#line 124 "locfile-kw.gperf"
|
|
+#line 125 "locfile-kw.gperf"
|
|
{"conversion_rate", tok_conversion_rate, 0},
|
|
{""}, {""}, {""}, {""}, {""},
|
|
-#line 63 "locfile-kw.gperf"
|
|
+#line 64 "locfile-kw.gperf"
|
|
{"order_start", tok_order_start, 0},
|
|
{""}, {""}, {""}, {""}, {""},
|
|
-#line 178 "locfile-kw.gperf"
|
|
+#line 179 "locfile-kw.gperf"
|
|
{"lang_ab", tok_lang_ab, 0},
|
|
-#line 180 "locfile-kw.gperf"
|
|
+#line 181 "locfile-kw.gperf"
|
|
{"lang_lib", tok_lang_lib, 0},
|
|
{""}, {""}, {""},
|
|
-#line 192 "locfile-kw.gperf"
|
|
+#line 193 "locfile-kw.gperf"
|
|
{"contact", tok_contact, 0},
|
|
{""}, {""}, {""},
|
|
-#line 173 "locfile-kw.gperf"
|
|
- {"country_ab3", tok_country_ab3, 0},
|
|
+#line 57 "locfile-kw.gperf"
|
|
+ {"strcmp_collation", tok_strcmp_collation, 0},
|
|
{""}, {""}, {""},
|
|
-#line 193 "locfile-kw.gperf"
|
|
+#line 194 "locfile-kw.gperf"
|
|
{"email", tok_email, 0},
|
|
-#line 172 "locfile-kw.gperf"
|
|
- {"country_ab2", tok_country_ab2, 0},
|
|
+#line 174 "locfile-kw.gperf"
|
|
+ {"country_ab3", tok_country_ab3, 0},
|
|
{""}, {""}, {""},
|
|
#line 55 "locfile-kw.gperf"
|
|
{"default_missing", tok_default_missing, 0},
|
|
- {""}, {""},
|
|
-#line 195 "locfile-kw.gperf"
|
|
+#line 173 "locfile-kw.gperf"
|
|
+ {"country_ab2", tok_country_ab2, 0},
|
|
+ {""},
|
|
+#line 196 "locfile-kw.gperf"
|
|
{"fax", tok_fax, 0},
|
|
{""}, {""}, {""}, {""}, {""}, {""}, {""},
|
|
-#line 174 "locfile-kw.gperf"
|
|
+#line 175 "locfile-kw.gperf"
|
|
{"country_num", tok_country_num, 0},
|
|
{""}, {""}, {""}, {""}, {""}, {""},
|
|
#line 51 "locfile-kw.gperf"
|
|
{"map", tok_map, 0},
|
|
-#line 65 "locfile-kw.gperf"
|
|
+#line 66 "locfile-kw.gperf"
|
|
{"from", tok_from, 0},
|
|
{""}, {""}, {""}, {""}, {""}, {""}, {""},
|
|
-#line 86 "locfile-kw.gperf"
|
|
+#line 87 "locfile-kw.gperf"
|
|
{"mon_thousands_sep", tok_mon_thousands_sep, 0},
|
|
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
|
|
{""}, {""}, {""},
|
|
-#line 81 "locfile-kw.gperf"
|
|
+#line 82 "locfile-kw.gperf"
|
|
{"endif", tok_endif, 0},
|
|
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
|
|
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
|
|
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
|
|
-#line 151 "locfile-kw.gperf"
|
|
+#line 152 "locfile-kw.gperf"
|
|
{"alt_mon", tok_alt_mon, 0},
|
|
{""}, {""}, {""}, {""}, {""}, {""}, {""},
|
|
-#line 76 "locfile-kw.gperf"
|
|
+#line 77 "locfile-kw.gperf"
|
|
{"undef", tok_undef, 0},
|
|
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
|
|
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
|
|
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
|
|
-#line 59 "locfile-kw.gperf"
|
|
+#line 60 "locfile-kw.gperf"
|
|
{"collating-element", tok_collating_element, 0},
|
|
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
|
|
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
|
|
-#line 152 "locfile-kw.gperf"
|
|
+#line 153 "locfile-kw.gperf"
|
|
{"ab_alt_mon", tok_ab_alt_mon, 0},
|
|
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
|
|
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
|
|
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
|
|
-#line 66 "locfile-kw.gperf"
|
|
+#line 67 "locfile-kw.gperf"
|
|
{"forward", tok_forward, 0},
|
|
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
|
|
{""}, {""}, {""}, {""}, {""},
|
|
-#line 85 "locfile-kw.gperf"
|
|
+#line 86 "locfile-kw.gperf"
|
|
{"mon_decimal_point", tok_mon_decimal_point, 0},
|
|
{""}, {""},
|
|
-#line 169 "locfile-kw.gperf"
|
|
+#line 170 "locfile-kw.gperf"
|
|
{"postal_fmt", tok_postal_fmt, 0},
|
|
{""}, {""}, {""}, {""}, {""},
|
|
-#line 60 "locfile-kw.gperf"
|
|
+#line 61 "locfile-kw.gperf"
|
|
{"collating-symbol", tok_collating_symbol, 0},
|
|
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
|
|
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
|
|
@@ -583,15 +585,15 @@ locfile_hash (register const char *str, register size_t len)
|
|
#line 38 "locfile-kw.gperf"
|
|
{"alnum", tok_alnum, 0},
|
|
{""},
|
|
-#line 87 "locfile-kw.gperf"
|
|
+#line 88 "locfile-kw.gperf"
|
|
{"mon_grouping", tok_mon_grouping, 0},
|
|
{""},
|
|
-#line 179 "locfile-kw.gperf"
|
|
+#line 180 "locfile-kw.gperf"
|
|
{"lang_term", tok_lang_term, 0},
|
|
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
|
|
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
|
|
{""}, {""}, {""}, {""}, {""}, {""}, {""},
|
|
-#line 77 "locfile-kw.gperf"
|
|
+#line 78 "locfile-kw.gperf"
|
|
{"ifdef", tok_ifdef, 0},
|
|
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
|
|
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
|
|
@@ -599,7 +601,7 @@ locfile_hash (register const char *str, register size_t len)
|
|
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
|
|
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
|
|
{""}, {""}, {""}, {""},
|
|
-#line 138 "locfile-kw.gperf"
|
|
+#line 139 "locfile-kw.gperf"
|
|
{"am_pm", tok_am_pm, 0}
|
|
};
|
|
|
|
diff --git a/locale/programs/locfile-token.h b/locale/programs/locfile-token.h
|
|
index 414ad3076223e971..0ea73c51f14e839d 100644
|
|
--- a/locale/programs/locfile-token.h
|
|
+++ b/locale/programs/locfile-token.h
|
|
@@ -91,6 +91,7 @@ enum token_t
|
|
tok_translit_ignore,
|
|
tok_default_missing,
|
|
tok_lc_collate,
|
|
+ tok_strcmp_collation,
|
|
tok_coll_weight_max,
|
|
tok_section_symbol,
|
|
tok_collating_element,
|