From 620cdffb589dd11bb5e17cf0af0b1d559d4037ce Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Tue, 20 Jun 2000 22:30:32 +0000 Subject: Update. 2000-06-20 Ulrich Drepper * locale/programs/charmap.c (parse_charmap): Handle UCS names also in width definitions. --- locale/programs/charmap.c | 45 ++++++++++++++++++++++++++++++++------------- 1 file changed, 32 insertions(+), 13 deletions(-) (limited to 'locale/programs') diff --git a/locale/programs/charmap.c b/locale/programs/charmap.c index 8ffb8a06ea..073d458849 100644 --- a/locale/programs/charmap.c +++ b/locale/programs/charmap.c @@ -720,7 +720,7 @@ only WIDTH definitions are allowed to follow the CHARMAP definition")); continue; } - if (nowtok != tok_bsymbol) + if (nowtok != tok_bsymbol && nowtok != tok_ucs4) { lr_error (cmfile, _("syntax error in %s definition: %s"), "WIDTH_VARIABLE", _("no symbolic name given")); @@ -733,9 +733,17 @@ only WIDTH definitions are allowed to follow the CHARMAP definition")); if (from_name != NULL) obstack_free (&result->mem_pool, from_name); - from_name = (char *) obstack_copy0 (&result->mem_pool, - now->val.str.startmb, - now->val.str.lenmb); + if (nowtok == tok_bsymbol) + from_name = (char *) obstack_copy0 (&result->mem_pool, + now->val.str.startmb, + now->val.str.lenmb); + else + { + obstack_printf (&result->mem_pool, "U%08X", + cmfile->token.val.ucs4); + obstack_1grow (&result->mem_pool, '\0'); + from_name = (char *) obstack_finish (&result->mem_pool); + } to_name = NULL; state = 99; @@ -753,19 +761,30 @@ only WIDTH definitions are allowed to follow the CHARMAP definition")); continue; case 100: - if (nowtok != tok_bsymbol) - lr_error (cmfile, _("syntax error in %s definition: %s"), - "WIDTH_VARIABLE", - _("no symbolic name given for end of range")); + if (nowtok != tok_bsymbol && nowtok != tok_ucs4) + { + lr_error (cmfile, _("syntax error in %s definition: %s"), + "WIDTH_VARIABLE", + _("no symbolic name given for end of range")); + lr_ignore_rest (cmfile, 0); + continue; + } + + if (nowtok == tok_bsymbol) + to_name = (char *) obstack_copy0 (&result->mem_pool, + now->val.str.startmb, + now->val.str.lenmb); else { - to_name = (char *) obstack_copy0 (&result->mem_pool, - now->val.str.startmb, - now->val.str.lenmb); - /* XXX Enter value into table. */ + obstack_printf (&result->mem_pool, "U%08X", + cmfile->token.val.ucs4); + obstack_1grow (&result->mem_pool, '\0'); + to_name = (char *) obstack_finish (&result->mem_pool); } - lr_ignore_rest (cmfile, nowtok == tok_bsymbol); + /* XXX Enter value into table. */ + + lr_ignore_rest (cmfile, 1); state = 98; continue; -- cgit v1.2.3