summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--BUGS15
-rw-r--r--ChangeLog7
-rw-r--r--locale/programs/ld-ctype.c197
-rw-r--r--locale/programs/locfile-kw.gperf1
-rw-r--r--locale/programs/locfile-kw.h451
-rw-r--r--locale/programs/locfile-token.h1
6 files changed, 442 insertions, 230 deletions
diff --git a/BUGS b/BUGS
index f62ceae93d..8149ae5114 100644
--- a/BUGS
+++ b/BUGS
@@ -1,7 +1,7 @@
List of known bugs (certainly very incomplete)
----------------------------------------------
-Time-stamp: <1999-09-13T02:02:34-0700 drepper>
+Time-stamp: <1999-12-31T14:42:14-0800 drepper>
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
@@ -24,8 +24,7 @@ situations.
Severity: [ *] to [***]
-
-[** ] Closing shared objects in statically linked binaries most of the
+[ **] Closing shared objects in statically linked binaries most of the
times leads to crashes during the dlopen(). Hard to fix.
[ **] There are problems with signal handling when using LinuxThreads.
@@ -48,6 +47,16 @@ Severity: [ *] to [***]
[ *] The libm-ieee `scalb' function gives wrong results for
non-integral second parameters.
+[ *] Collation symbol and equivalence class handling in regex are not
+ yet 100% correct.
+ - [. .] at end of a range does not work
+ - [. .] and [= =] do not handle collating symbols (where a symbol
+ stands for multiple character) and multibyte character in
+ general not correctly.
+
+ This is *extremely* hard to fix since regex has to be rewritten
+ completely.
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Ulrich Drepper
drepper@cygnus.com
diff --git a/ChangeLog b/ChangeLog
index 0192430ee2..909ae5746f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2000-01-01 Ulrich Drepper <drepper@cygnus.com>
+
+ * locale/programs/ld-ctype.c: Implement rest of transliteration
+ definition parsing.
+ * locale/programs/locfile-kw.gperf: New keyword translit_ignore.
+ * locale/programs/locfile-token.h: Add tok_translit_ignore.
+
1999-12-31 Ulrich Drepper <drepper@cygnus.com>
* locale/programs/ld-collate.c (collate_output): Emit correct
diff --git a/locale/programs/ld-ctype.c b/locale/programs/ld-ctype.c
index bfaf6c7d09..231df137ea 100644
--- a/locale/programs/ld-ctype.c
+++ b/locale/programs/ld-ctype.c
@@ -85,11 +85,25 @@ struct translit_t
{
uint32_t *from;
+ const char *fname;
+ size_t lineno;
+
struct translit_to_t *to;
struct translit_t *next;
};
+struct translit_ignore_t
+{
+ uint32_t from;
+ uint32_t to;
+
+ const char *fname;
+ size_t lineno;
+
+ struct translit_ignore_t *next;
+};
+
/* The real definition of the struct for the LC_CTYPE locale. */
struct locale_ctype_t
@@ -138,6 +152,11 @@ struct locale_ctype_t
const char *translit_copy_locale;
const char *translit_copy_repertoire;
struct translit_t *translit;
+ struct translit_ignore_t *translit_ignore;
+
+ uint32_t *default_missing;
+ const char *default_missing_file;
+ size_t default_missing_lineno;
/* The arrays for the binary representation. */
uint32_t plane_size;
@@ -162,7 +181,7 @@ struct locale_ctype_t
size_t translit_from_tbl_size;
size_t translit_to_tbl_size;
- struct obstack mem_pool;
+ struct obstack mempool;
};
@@ -282,7 +301,7 @@ ctype_startup (struct linereader *lr, struct localedef_t *locale,
ctype->map256_collection[1][cnt] = cnt;
}
- obstack_init (&ctype->mem_pool);
+ obstack_init (&ctype->mempool);
}
}
@@ -1537,7 +1556,7 @@ read_widestring (struct linereader *ldfile, struct token *now,
else if (now->tok == tok_bsymbol)
{
/* Get the value from the repertoire. */
- wstr = xmalloc (2 * sizeof (uint32_t));
+ wstr = (uint32_t *) xmalloc (2 * sizeof (uint32_t));
wstr[0] = repertoire_find_value (repertoire, now->val.str.startmb,
now->val.str.lenmb);
if (wstr[0] == ILLEGAL_CHAR_VALUE)
@@ -1548,7 +1567,7 @@ read_widestring (struct linereader *ldfile, struct token *now,
}
else if (now->tok == tok_ucs4)
{
- wstr = xmalloc (2 * sizeof (uint32_t));
+ wstr = (uint32_t *) xmalloc (2 * sizeof (uint32_t));
wstr[0] = now->val.ucs4;
wstr[1] = 0;
}
@@ -1570,14 +1589,14 @@ read_widestring (struct linereader *ldfile, struct token *now,
/* We cannot proceed, we don't know the UCS4 value. */
return NULL;
- wstr = xmalloc (2 * sizeof (uint32_t));
+ wstr = (uint32_t *) xmalloc (2 * sizeof (uint32_t));
wstr[0] = seq->ucs4;
wstr[1] = 0;
}
else if (now->tok == tok_string)
{
wstr = now->val.str.startwc;
- if (wstr[0] == 0)
+ if (wstr == NULL || wstr[0] == 0)
return NULL;
}
else
@@ -1600,7 +1619,7 @@ read_translit_entry (struct linereader *ldfile, struct locale_ctype_t *ctype,
uint32_t *from_wstr = read_widestring (ldfile, now, charmap, repertoire);
struct translit_t *result;
struct translit_to_t **top;
- struct obstack *ob = &ctype->mem_pool;
+ struct obstack *ob = &ctype->mempool;
int first;
int ignore;
@@ -1611,6 +1630,8 @@ read_translit_entry (struct linereader *ldfile, struct locale_ctype_t *ctype,
result = (struct translit_t *) obstack_alloc (ob,
sizeof (struct translit_t));
result->from = from_wstr;
+ result->fname = ldfile->fname;
+ result->lineno = ldfile->lineno;
result->next = NULL;
result->to = NULL;
top = &result->to;
@@ -1673,6 +1694,129 @@ read_translit_entry (struct linereader *ldfile, struct locale_ctype_t *ctype,
}
+static void
+read_translit_ignore_entry (struct linereader *ldfile,
+ struct locale_ctype_t *ctype,
+ struct charmap_t *charmap,
+ struct repertoire_t *repertoire)
+{
+ /* We expect a semicolon-separated list of characters we ignore. We are
+ only interested in the wide character definitions. These must be
+ single characters, possibly defining a range when an ellipsis is used. */
+ while (1)
+ {
+ struct token *now = lr_token (ldfile, charmap, repertoire);
+ struct translit_ignore_t *newp;
+ uint32_t from;
+
+ if (now->tok == tok_eol || now->tok == tok_eof)
+ {
+ lr_error (ldfile,
+ _("premature end of `translit_ignore' definition"));
+ return;
+ }
+
+ if (now->tok != tok_bsymbol && now->tok != tok_ucs4)
+ {
+ lr_error (ldfile, _("syntax error"));
+ lr_ignore_rest (ldfile, 0);
+ return;
+ }
+
+ if (now->tok == tok_ucs4)
+ from = now->val.ucs4;
+ else
+ {
+ /* Try to get the value. */
+ from = repertoire_find_value (repertoire, now->val.str.startmb,
+ now->val.str.lenmb);
+ }
+
+ if (from == ILLEGAL_CHAR_VALUE)
+ {
+ lr_error (ldfile, "invalid character name");
+ newp = NULL;
+ }
+ else
+ {
+ newp = (struct translit_ignore_t *)
+ obstack_alloc (&ctype->mempool, sizeof (struct translit_ignore_t));
+ newp->from = from;
+ newp->to = from;
+
+ newp->next = ctype->translit_ignore;
+ ctype->translit_ignore = newp;
+ }
+
+ /* Now we expect either a semicolon, an ellipsis, or the end of the
+ line. */
+ now = lr_token (ldfile, charmap, repertoire);
+
+ if (now->tok == tok_ellipsis2)
+ {
+ /* XXX Should we bother implementing `....'? `...' certainly
+ will not be implemented. */
+ uint32_t to;
+
+ now = lr_token (ldfile, charmap, repertoire);
+
+ if (now->tok == tok_eol || now->tok == tok_eof)
+ {
+ lr_error (ldfile,
+ _("premature end of `translit_ignore' definition"));
+ return;
+ }
+
+ if (now->tok != tok_bsymbol && now->tok != tok_ucs4)
+ {
+ lr_error (ldfile, _("syntax error"));
+ lr_ignore_rest (ldfile, 0);
+ return;
+ }
+
+ if (now->tok == tok_ucs4)
+ to = now->val.ucs4;
+ else
+ {
+ /* Try to get the value. */
+ to = repertoire_find_value (repertoire, now->val.str.startmb,
+ now->val.str.lenmb);
+ }
+
+ if (to == ILLEGAL_CHAR_VALUE)
+ lr_error (ldfile, "invalid character name");
+ else
+ {
+ /* Make sure the `to'-value is larger. */
+ if (to >= from)
+ newp->to = to;
+ else
+ lr_error (ldfile, _("\
+to-value <U%0*X> of range is smaller than from-value <U%0*X>"),
+ (to | from) < 65536 ? 4 : 8, to,
+ (to | from) < 65536 ? 4 : 8, from);
+ }
+
+ /* And the next token. */
+ now = lr_token (ldfile, charmap, repertoire);
+ }
+
+ if (now->tok == tok_eol || now->tok == tok_eof)
+ /* We are done. */
+ return;
+
+ if (now->tok == tok_semicolon)
+ /* Next round. */
+ continue;
+
+ /* If we come here something is wrong. */
+ lr_error (ldfile, _("syntax error"));
+ lr_ignore_rest (ldfile, 0);
+ return;
+ }
+}
+
+
/* The parser for the LC_CTYPE section of the locale definition. */
void
ctype_read (struct linereader *ldfile, struct localedef_t *result,
@@ -2257,6 +2401,45 @@ with character code range values one must use the absolute ellipsis `...'"));
/* The rest of the line must be empty. */
lr_ignore_rest (ldfile, 1);
+
+ /* Make sure the locale is read. */
+ add_to_readlist (LC_CTYPE, ctype->translit_copy_locale,
+ repertoire_name, 1);
+ continue;
+ }
+ else if (now->tok == tok_default_missing)
+ {
+ uint32_t *wstr;
+
+ /* We expect a single character or string as the
+ argument. */
+ now = lr_token (ldfile, charmap, NULL);
+ wstr = read_widestring (ldfile, now, charmap, repertoire);
+
+ if (wstr != NULL)
+ {
+ if (ctype->default_missing != NULL)
+ {
+ lr_error (ldfile, _("\
+%s: duplicate `default_missing' definition"), "LC_CTYPE");
+ error_at_line (0, 0, ctype->default_missing_file,
+ ctype->default_missing_lineno,
+ _("previous definition was here"));
+ }
+ else
+ {
+ ctype->default_missing = wstr;
+ ctype->default_missing_file = ldfile->fname;
+ ctype->default_missing_lineno = ldfile->lineno;
+ }
+ }
+ lr_ignore_rest (ldfile, 1);
+ continue;
+ }
+ else if (now->tok == tok_translit_ignore)
+ {
+ read_translit_ignore_entry (ldfile, ctype, charmap,
+ repertoire);
continue;
}
diff --git a/locale/programs/locfile-kw.gperf b/locale/programs/locfile-kw.gperf
index 91c20891f1..3670548a4c 100644
--- a/locale/programs/locfile-kw.gperf
+++ b/locale/programs/locfile-kw.gperf
@@ -52,6 +52,7 @@ tolower, tok_tolower, 0
map, tok_map, 0
translit_start, tok_translit_start, 0
translit_end, tok_translit_end, 0
+translit_ignore, tok_translit_ignore, 0
default_missing, tok_default_missing, 0
LC_COLLATE, tok_lc_collate, 0
coll_weight_max, tok_coll_weight_max, 0
diff --git a/locale/programs/locfile-kw.h b/locale/programs/locfile-kw.h
index 811234b25d..a04bc2723c 100644
--- a/locale/programs/locfile-kw.h
+++ b/locale/programs/locfile-kw.h
@@ -24,12 +24,12 @@
#include "locfile-token.h"
struct keyword_t ;
-#define TOTAL_KEYWORDS 172
+#define TOTAL_KEYWORDS 173
#define MIN_WORD_LENGTH 3
#define MAX_WORD_LENGTH 22
#define MIN_HASH_VALUE 3
-#define MAX_HASH_VALUE 545
-/* maximum key range = 543, duplicates = 0 */
+#define MAX_HASH_VALUE 645
+/* maximum key range = 643, duplicates = 0 */
#ifdef __GNUC__
__inline
@@ -39,32 +39,32 @@ hash (register const char *str, register unsigned int len)
{
static const unsigned short asso_values[] =
{
- 546, 546, 546, 546, 546, 546, 546, 546, 546, 546,
- 546, 546, 546, 546, 546, 546, 546, 546, 546, 546,
- 546, 546, 546, 546, 546, 546, 546, 546, 546, 546,
- 546, 546, 546, 546, 546, 546, 546, 546, 546, 546,
- 546, 546, 546, 546, 546, 546, 546, 546, 546, 546,
- 5, 0, 546, 546, 546, 546, 546, 546, 546, 546,
- 546, 546, 546, 546, 546, 20, 546, 0, 0, 0,
- 5, 30, 0, 0, 546, 546, 0, 546, 0, 0,
- 546, 546, 10, 0, 5, 10, 546, 546, 546, 0,
- 546, 546, 546, 546, 546, 30, 546, 0, 10, 125,
- 5, 0, 105, 30, 5, 95, 546, 0, 105, 155,
- 135, 50, 75, 0, 5, 45, 0, 55, 0, 30,
- 25, 25, 10, 546, 546, 546, 546, 546, 546, 546,
- 546, 546, 546, 546, 546, 546, 546, 546, 546, 546,
- 546, 546, 546, 546, 546, 546, 546, 546, 546, 546,
- 546, 546, 546, 546, 546, 546, 546, 546, 546, 546,
- 546, 546, 546, 546, 546, 546, 546, 546, 546, 546,
- 546, 546, 546, 546, 546, 546, 546, 546, 546, 546,
- 546, 546, 546, 546, 546, 546, 546, 546, 546, 546,
- 546, 546, 546, 546, 546, 546, 546, 546, 546, 546,
- 546, 546, 546, 546, 546, 546, 546, 546, 546, 546,
- 546, 546, 546, 546, 546, 546, 546, 546, 546, 546,
- 546, 546, 546, 546, 546, 546, 546, 546, 546, 546,
- 546, 546, 546, 546, 546, 546, 546, 546, 546, 546,
- 546, 546, 546, 546, 546, 546, 546, 546, 546, 546,
- 546, 546, 546, 546, 546, 546
+ 646, 646, 646, 646, 646, 646, 646, 646, 646, 646,
+ 646, 646, 646, 646, 646, 646, 646, 646, 646, 646,
+ 646, 646, 646, 646, 646, 646, 646, 646, 646, 646,
+ 646, 646, 646, 646, 646, 646, 646, 646, 646, 646,
+ 646, 646, 646, 646, 646, 646, 646, 646, 646, 646,
+ 10, 0, 646, 646, 646, 646, 646, 646, 646, 646,
+ 646, 646, 646, 646, 646, 15, 646, 0, 0, 0,
+ 10, 20, 0, 0, 646, 646, 0, 646, 0, 5,
+ 646, 646, 10, 0, 10, 5, 646, 646, 646, 20,
+ 646, 646, 646, 646, 646, 30, 646, 0, 25, 110,
+ 5, 0, 25, 0, 5, 105, 646, 20, 125, 85,
+ 175, 0, 75, 10, 5, 125, 0, 135, 45, 15,
+ 10, 75, 0, 646, 646, 646, 646, 646, 646, 646,
+ 646, 646, 646, 646, 646, 646, 646, 646, 646, 646,
+ 646, 646, 646, 646, 646, 646, 646, 646, 646, 646,
+ 646, 646, 646, 646, 646, 646, 646, 646, 646, 646,
+ 646, 646, 646, 646, 646, 646, 646, 646, 646, 646,
+ 646, 646, 646, 646, 646, 646, 646, 646, 646, 646,
+ 646, 646, 646, 646, 646, 646, 646, 646, 646, 646,
+ 646, 646, 646, 646, 646, 646, 646, 646, 646, 646,
+ 646, 646, 646, 646, 646, 646, 646, 646, 646, 646,
+ 646, 646, 646, 646, 646, 646, 646, 646, 646, 646,
+ 646, 646, 646, 646, 646, 646, 646, 646, 646, 646,
+ 646, 646, 646, 646, 646, 646, 646, 646, 646, 646,
+ 646, 646, 646, 646, 646, 646, 646, 646, 646, 646,
+ 646, 646, 646, 646, 646, 646
};
register int hval = len;
@@ -106,285 +106,296 @@ locfile_hash (register const char *str, register unsigned int len)
{"LC_ADDRESS", tok_lc_address, 0},
{""},
{"LC_TELEPHONE", tok_lc_telephone, 0},
- {"LC_CTYPE", tok_lc_ctype, 0},
+ {""},
{"era_t_fmt", tok_era_t_fmt, 0},
- {"LC_COLLATE", tok_lc_collate, 0},
+ {"LC_NUMERIC", tok_lc_numeric, 0},
{"height", tok_height, 0},
{"LC_IDENTIFICATION", tok_lc_identification, 0},
- {""},
+ {"LC_CTYPE", tok_lc_ctype, 0},
{"era_d_fmt", tok_era_d_fmt, 0},
- {"LC_NUMERIC", tok_lc_numeric, 0},
- {""}, {""}, {""},
- {"UNDEFINED", tok_undefined, 0},
+ {"graph", tok_graph, 0},
+ {"order_start", tok_order_start, 0},
+ {"LC_NAME", tok_lc_name, 0},
{""},
+ {"UNDEFINED", tok_undefined, 0},
+ {"LC_COLLATE", tok_lc_collate, 0},
{"reorder-end", tok_reorder_end, 0},
- {"LC_NAME", tok_lc_name, 0},
+ {"tolower", tok_tolower, 0},
{"reorder-after", tok_reorder_after, 0},
- {"LC_MEASUREMENT", tok_lc_measurement, 0},
- {""},
- {"LC_MONETARY", tok_lc_monetary, 0},
+ {"order_end", tok_order_end, 0},
{""},
- {"day", tok_day, 0},
- {"week", tok_week, 0},
- {"t_fmt", tok_t_fmt, 0},
- {"yesstr", tok_yesstr, 0},
+ {"LC_MESSAGES", tok_lc_messages, 0},
{""},
{"LC_PAPER", tok_lc_paper, 0},
- {""},
+ {"LC_MEASUREMENT", tok_lc_measurement, 0},
+ {"t_fmt", tok_t_fmt, 0},
+ {"IGNORE", tok_ignore, 0},
+ {"forward", tok_forward, 0},
+ {"fax", tok_fax, 0},
+ {"week", tok_week, 0},
{"d_fmt", tok_d_fmt, 0},
- {"LC_MESSAGES", tok_lc_messages, 0},
+ {"tel_dom_fmt", tok_tel_dom_fmt, 0},
+ {""}, {""}, {""}, {""},
+ {"era_d_t_fmt", tok_era_d_t_fmt, 0},
+ {""}, {""}, {""}, {""},
+ {"LC_MONETARY", tok_lc_monetary, 0},
{""},
- {"era_year", tok_era_year, 0},
- {""}, {""},
- {"IGNORE", tok_ignore, 0},
- {""}, {""}, {""},
- {"graph", tok_graph, 0},
- {""}, {""},
{"backward", tok_backward, 0},
- {""}, {""}, {""},
- {"address", tok_address, 0},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""},
- {"yesexpr", tok_yesexpr, 0},
- {"audience", tok_audience, 0},
- {""},
- {"abday", tok_abday, 0},
- {""}, {""}, {""}, {""}, {""},
- {"order_start", tok_order_start, 0},
- {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {"order_end", tok_order_end, 0},
- {"reorder-sections-end", tok_reorder_sections_end, 0},
+ {"d_t_fmt", tok_d_t_fmt, 0},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""},
+ {"day", tok_day, 0},
{""},
- {"reorder-sections-after", tok_reorder_sections_after, 0},
- {""}, {""},
{"print", tok_print, 0},
+ {"yesstr", tok_yesstr, 0},
+ {"toupper", tok_toupper, 0},
+ {"grouping", tok_grouping, 0},
+ {""}, {""}, {""}, {""},
+ {"era_year", tok_era_year, 0},
+ {""}, {""}, {""},
+ {"yesexpr", tok_yesexpr, 0},
+ {""}, {""}, {""}, {""}, {""},
+ {"repertoiremap", tok_repertoiremap, 0},
{""}, {""}, {""}, {""}, {""}, {""},
- {"tolower", tok_tolower, 0},
- {""},
- {"translit_start", tok_translit_start, 0},
- {""}, {""},
- {"translit_end", tok_translit_end, 0},
- {""}, {""},
{"title", tok_title, 0},
{""}, {""},
- {"repertoiremap", tok_repertoiremap, 0},
+ {"timezone", tok_timezone, 0},
{""},
{"digit", tok_digit, 0},
- {""}, {""},
+ {""},
+ {"contact", tok_contact, 0},
+ {""},
+ {"from", tok_from, 0},
+ {""},
+ {"country_ab3", tok_country_ab3, 0},
+ {""}, {""}, {""},
+ {"conversion_rate", tok_conversion_rate, 0},
+ {"xdigit", tok_xdigit, 0},
+ {"collating-element", tok_collating_element, 0},
{"tel", tok_tel, 0},
{"else", tok_else, 0},
{"alpha", tok_alpha, 0},
- {""}, {""},
- {"timezone", tok_timezone, 0},
- {""}, {""}, {""}, {""}, {""}, {""},
- {"blank", tok_blank, 0},
- {"tel_dom_fmt", tok_tel_dom_fmt, 0},
- {""}, {""}, {""},
- {"space", tok_space, 0},
- {"era_d_t_fmt", tok_era_d_t_fmt, 0},
- {"duo_valid_to", tok_duo_valid_to, 0},
+ {"country_ab2", tok_country_ab2, 0},
{""}, {""}, {""},
- {"xdigit", tok_xdigit, 0},
+ {"width", tok_width, 0},
{""},
- {"fax", tok_fax, 0},
+ {"address", tok_address, 0},
+ {""}, {""},
+ {"lower", tok_lower, 0},
+ {"tel_int_fmt", tok_tel_int_fmt, 0},
{""},
- {"punct", tok_punct, 0},
+ {"audience", tok_audience, 0},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""},
- {"toupper", tok_toupper, 0},
- {"symbol-equivalence", tok_symbol_equivalence, 0},
+ {"elif", tok_elif, 0},
+ {""}, {""}, {""}, {""}, {""},
+ {"reorder-sections-end", tok_reorder_sections_end, 0},
{""},
- {"width", tok_width, 0},
- {"escape_char", tok_escape_char, 0},
- {""}, {""},
+ {"reorder-sections-after", tok_reorder_sections_after, 0},
+ {"map", tok_map, 0},
{"lang_name", tok_lang_name, 0},
- {"upper", tok_upper, 0},
+ {"coll_weight_max", tok_coll_weight_max, 0},
+ {""}, {""}, {""}, {""},
+ {"postal_fmt", tok_postal_fmt, 0},
+ {""},
+ {"mon_grouping", tok_mon_grouping, 0},
+ {""},
+ {"translit_start", tok_translit_start, 0},
+ {"translit_ignore", tok_translit_ignore, 0},
+ {""},
+ {"translit_end", tok_translit_end, 0},
+ {"decimal_point", tok_decimal_point, 0},
+ {""},
+ {"abday", tok_abday, 0},
+ {""}, {""}, {""}, {""},
+ {"ifdef", tok_ifdef, 0},
{"define", tok_define, 0},
- {"d_t_fmt", tok_d_t_fmt, 0},
- {"grouping", tok_grouping, 0},
- {""}, {""}, {""},
{"lang_ab", tok_lang_ab, 0},
{"lang_lib", tok_lang_lib, 0},
- {"territory", tok_territory, 0},
- {""}, {""},
- {"abbreviation", tok_abbreviation, 0},
- {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {"alt_digits", tok_alt_digits, 0},
+ {"copy", tok_copy, 0},
+ {"nostr", tok_nostr, 0},
{""},
- {"forward", tok_forward, 0},
- {"language", tok_language, 0},
+ {"mon_decimal_point", tok_mon_decimal_point, 0},
+ {"category", tok_category, 0},
{""},
- {"lower", tok_lower, 0},
+ {"blank", tok_blank, 0},
+ {""},
+ {"country_post", tok_country_post, 0},
{""}, {""},
+ {"t_fmt_ampm", tok_t_fmt_ampm, 0},
+ {""},
+ {"duo_valid_to", tok_duo_valid_to, 0},
+ {""}, {""},
+ {"space", tok_space, 0},
+ {""}, {""}, {""}, {""}, {""}, {""},
+ {"abbreviation", tok_abbreviation, 0},
{"name_fmt", tok_name_fmt, 0},
- {""}, {""}, {""},
+ {""},
+ {"punct", tok_punct, 0},
+ {""},
{"name_mr", tok_name_mr, 0},
- {""}, {""}, {""}, {""},
- {"contact", tok_contact, 0},
- {"thousands_sep", tok_thousands_sep, 0},
+ {"first_weekday", tok_first_weekday, 0},
{""}, {""},
- {"country_ab3", tok_country_ab3, 0},
+ {"escape_char", tok_escape_char, 0},
{""},
- {"category", tok_category, 0},
+ {"first_workday", tok_first_workday, 0},
+ {"p_sep_by_space", tok_p_sep_by_space, 0},
+ {"upper", tok_upper, 0},
{""}, {""},
- {"country_ab2", tok_country_ab2, 0},
+ {"symbol-equivalence", tok_symbol_equivalence, 0},
{""},
- {"revision", tok_revision, 0},
+ {"endif", tok_endif, 0},
+ {"measurement", tok_measurement, 0},
+ {""}, {""}, {""}, {""},
+ {"country_car", tok_country_car, 0},
+ {"comment_char", tok_comment_char, 0},
+ {""}, {""},
+ {"default_missing", tok_default_missing, 0},
+ {"source", tok_source, 0},
{""}, {""}, {""}, {""}, {""}, {""},
- {"nostr", tok_nostr, 0},
- {""}, {""}, {""},
- {"copy", tok_copy, 0},
- {""}, {""}, {""},
{"outdigit", tok_outdigit, 0},
{""}, {""},
- {"tel_int_fmt", tok_tel_int_fmt, 0},
- {""}, {""},
- {"elif", tok_elif, 0},
- {""}, {""},
- {"name_ms", tok_name_ms, 0},
- {"name_mrs", tok_name_mrs, 0},
- {""}, {""},
- {"measurement", tok_measurement, 0},
- {"collating-element", tok_collating_element, 0},
+ {"collating-symbol", tok_collating_symbol, 0},
+ {""}, {""}, {""}, {""}, {""}, {""},
+ {"position", tok_position, 0},
{""},
- {"p_sep_by_space", tok_p_sep_by_space, 0},
+ {"am_pm", tok_am_pm, 0},
+ {"noexpr", tok_noexpr, 0},
+ {""},
+ {"mon", tok_mon, 0},
+ {"territory", tok_territory, 0},
+ {"alt_digits", tok_alt_digits, 0},
+ {""}, {""},
+ {"language", tok_language, 0},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {"charconv", tok_charconv, 0},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""},
- {"source", tok_source, 0},
- {"duo_p_cs_precedes", tok_duo_p_cs_precedes, 0},
- {"duo_p_sep_by_space", tok_duo_p_sep_by_space, 0},
- {""}, {""}, {""}, {""},
- {"map", tok_map, 0},
{"duo_valid_from", tok_duo_valid_from, 0},
- {""}, {""}, {""},
- {"first_weekday", tok_first_weekday, 0},
{""},
- {"conversion_rate", tok_conversion_rate, 0},
- {""}, {""},
- {"first_workday", tok_first_workday, 0},
- {""}, {""}, {""}, {""},
- {"decimal_point", tok_decimal_point, 0},
- {""}, {""}, {""},
- {"duo_int_p_sep_by_space", tok_duo_int_p_sep_by_space, 0},
- {""}, {""},
- {"duo_frac_digits", tok_duo_frac_digits, 0},
+ {"p_sign_posn", tok_p_sign_posn, 0},
{""},
- {"uno_valid_to", tok_uno_valid_to, 0},
+ {"positive_sign", tok_positive_sign, 0},
+ {""}, {""}, {""},
+ {"country_name", tok_country_name, 0},
{""}, {""},
- {"default_missing", tok_default_missing, 0},
+ {"alnum", tok_alnum, 0},
+ {"frac_digits", tok_frac_digits, 0},
+ {"mon_thousands_sep", tok_mon_thousands_sep, 0},
+ {""}, {""}, {""}, {""}, {""},
+ {"duo_p_sep_by_space", tok_duo_p_sep_by_space, 0},
+ {""}, {""}, {""}, {""},
+ {"revision", tok_revision, 0},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""},
- {"country_post", tok_country_post, 0},
- {"charconv", tok_charconv, 0},
- {"name_miss", tok_name_miss, 0},
- {""}, {""}, {""},
- {"position", tok_position, 0},
- {"from", tok_from, 0},
- {"t_fmt_ampm", tok_t_fmt_ampm, 0},
- {"noexpr", tok_noexpr, 0},
- {""}, {""}, {""},
- {"coll_weight_max", tok_coll_weight_max, 0},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{"n_sep_by_space", tok_n_sep_by_space, 0},
- {"abmon", tok_abmon, 0},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {"lang_term", tok_lang_term, 0},
+ {"duo_frac_digits", tok_duo_frac_digits, 0},
{""},
- {"duo_n_cs_precedes", tok_duo_n_cs_precedes, 0},
- {"duo_n_sep_by_space", tok_duo_n_sep_by_space, 0},
+ {"name_ms", tok_name_ms, 0},
+ {"name_mrs", tok_name_mrs, 0},
{""},
- {"postal_fmt", tok_postal_fmt, 0},
- {"frac_digits", tok_frac_digits, 0},
- {"include", tok_include, 0},
+ {"email", tok_email, 0},
+ {""},
+ {"duo_int_p_sep_by_space", tok_duo_int_p_sep_by_space, 0},
+ {"thousands_sep", tok_thousands_sep, 0},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""},
- {"duo_int_p_cs_precedes", tok_duo_int_p_cs_precedes, 0},
+ {"undef", tok_undef, 0},
{""}, {""}, {""}, {""}, {""}, {""},
- {"positive_sign", tok_positive_sign, 0},
- {"section-symbol", tok_section_symbol, 0},
+ {"uno_valid_to", tok_uno_valid_to, 0},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {"abmon", tok_abmon, 0},
+ {"country_num", tok_country_num, 0},
+ {""},
+ {"p_cs_precedes", tok_p_cs_precedes, 0},
{""}, {""}, {""},
+ {"duo_p_cs_precedes", tok_duo_p_cs_precedes, 0},
{"name_gen", tok_name_gen, 0},
- {"duo_currency_symbol", tok_duo_currency_symbol, 0},
{""}, {""},
- {"duo_int_n_sep_by_space", tok_duo_int_n_sep_by_space, 0},
- {"negative_sign", tok_negative_sign, 0},
+ {"n_sign_posn", tok_n_sign_posn, 0},
{""},
+ {"negative_sign", tok_negative_sign, 0},
+ {"duo_currency_symbol", tok_duo_currency_symbol, 0},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {"country_isbn", tok_country_isbn, 0},
+ {""}, {""},
{"duo_p_sign_posn", tok_duo_p_sign_posn, 0},
- {"country_car", tok_country_car, 0},
- {"comment_char", tok_comment_char, 0},
- {"p_cs_precedes", tok_p_cs_precedes, 0},
- {""}, {""}, {""},
- {"country_name", tok_country_name, 0},
- {""},
+ {""}, {""},
+ {"duo_n_sep_by_space", tok_duo_n_sep_by_space, 0},
+ {""}, {""}, {""}, {""},
+ {"cal_direction", tok_cal_direction, 0},
{"duo_int_frac_digits", tok_duo_int_frac_digits, 0},
- {"class", tok_class, 0},
- {"collating-symbol", tok_collating_symbol, 0},
- {""}, {""}, {""},
{"currency_symbol", tok_currency_symbol, 0},
- {"p_sign_posn", tok_p_sign_posn, 0},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""},
- {"mon_thousands_sep", tok_mon_thousands_sep, 0},
- {"mon", tok_mon, 0},
{""}, {""}, {""}, {""}, {""}, {""},
- {"endif", tok_endif, 0},
- {""},
- {"mon_grouping", tok_mon_grouping, 0},
+ {"include", tok_include, 0},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""},
- {"charclass", tok_charclass, 0},
+ {"duo_int_n_sep_by_space", tok_duo_int_n_sep_by_space, 0},
+ {""}, {""}, {""}, {""}, {""},
+ {"int_p_sep_by_space", tok_int_p_sep_by_space, 0},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""},
- {"duo_int_n_cs_precedes", tok_duo_int_n_cs_precedes, 0},
- {""}, {""}, {""}, {""}, {""}, {""}, {""},
{"uno_valid_from", tok_uno_valid_from, 0},
- {""}, {""}, {""}, {""}, {""},
- {"email", tok_email, 0},
{""}, {""}, {""}, {""},
- {"duo_n_sign_posn", tok_duo_n_sign_posn, 0},
- {""}, {""},
- {"n_cs_precedes", tok_n_cs_precedes, 0},
- {""}, {""}, {""},
- {"mon_decimal_point", tok_mon_decimal_point, 0},
+ {"name_miss", tok_name_miss, 0},
{""},
- {"duo_int_p_sign_posn", tok_duo_int_p_sign_posn, 0},
- {""}, {""}, {""}, {""}, {""}, {""},
- {"n_sign_posn", tok_n_sign_posn, 0},
- {""}, {""}, {""}, {""}, {""},
- {"int_p_cs_precedes", tok_int_p_cs_precedes, 0},
- {"int_p_sep_by_space", tok_int_p_sep_by_space, 0},
- {""}, {""}, {""}, {""},
- {"cal_direction", tok_cal_direction, 0},
- {"duo_int_curr_symbol", tok_duo_int_curr_symbol, 0},
- {"undef", tok_undef, 0},
+ {"duo_int_p_cs_precedes", tok_duo_int_p_cs_precedes, 0},
{""}, {""}, {""}, {""},
- {"int_select", tok_int_select, 0},
{"application", tok_application, 0},
{""}, {""}, {""},
- {"ifdef", tok_ifdef, 0},
- {""},
- {"country_isbn", tok_country_isbn, 0},
- {""}, {""},
- {"alnum", tok_alnum, 0},
- {""}, {""}, {""}, {""},
{"int_frac_digits", tok_int_frac_digits, 0},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""},
{"int_prefix", tok_int_prefix, 0},
+ {""}, {""},
+ {"n_cs_precedes", tok_n_cs_precedes, 0},
+ {"charclass", tok_charclass, 0},
+ {""}, {""},
+ {"duo_n_cs_precedes", tok_duo_n_cs_precedes, 0},
+ {""}, {""},
+ {"class", tok_class, 0},
+ {""}, {""}, {""},
+ {"section-symbol", tok_section_symbol, 0},
+ {""}, {""}, {""}, {""},
+ {"duo_int_curr_symbol", tok_duo_int_curr_symbol, 0},
+ {""}, {""}, {""}, {""}, {""},
+ {"duo_n_sign_posn", tok_duo_n_sign_posn, 0},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {"duo_int_n_sign_posn", tok_duo_int_n_sign_posn, 0},
+ {"duo_int_p_sign_posn", tok_duo_int_p_sign_posn, 0},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {"lang_term", tok_lang_term, 0},
+ {""},
+ {"int_select", tok_int_select, 0},
+ {""},
+ {"int_p_cs_precedes", tok_int_p_cs_precedes, 0},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""},
+ {"cntrl", tok_cntrl, 0},
+ {""}, {""}, {""}, {""},
+ {"int_p_sign_posn", tok_int_p_sign_posn, 0},
{""}, {""},
- {"int_n_cs_precedes", tok_int_n_cs_precedes, 0},
{"int_n_sep_by_space", tok_int_n_sep_by_space, 0},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""},
- {"am_pm", tok_am_pm, 0},
- {""}, {""}, {""}, {""},
- {"cntrl", tok_cntrl, 0},
- {"country_num", tok_country_num, 0},
- {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {"int_p_sign_posn", tok_int_p_sign_posn, 0},
+ {"int_curr_symbol", tok_int_curr_symbol, 0},
+ {""}, {""}, {""}, {""}, {""},
+ {"duo_int_n_cs_precedes", tok_duo_int_n_cs_precedes, 0},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
- {""},
- {"int_curr_symbol", tok_int_curr_symbol, 0},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""},
+ {"duo_int_n_sign_posn", tok_duo_int_n_sign_posn, 0},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""},
+ {"int_n_cs_precedes", tok_int_n_cs_precedes, 0},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{"int_n_sign_posn", tok_int_n_sign_posn, 0}
};
diff --git a/locale/programs/locfile-token.h b/locale/programs/locfile-token.h
index 97945f8f1a..e1cd5f7a74 100644
--- a/locale/programs/locfile-token.h
+++ b/locale/programs/locfile-token.h
@@ -88,6 +88,7 @@ enum token_t
tok_map,
tok_translit_start,
tok_translit_end,
+ tok_translit_ignore,
tok_default_missing,
tok_lc_collate,
tok_coll_weight_max,