2000-04-06  Ulrich Drepper  <drepper@redhat.com>

	* locale/programs/charmap.c (parse_charmap): Recognize <Uxxxx>
	values as character names.

	* locale/programs/ld-ctype.c (get_character): Handle missing
	repertoire map correctly.
This commit is contained in:
Ulrich Drepper 2000-04-06 07:42:24 +00:00
parent a1303dc8dc
commit 723faa38f9
3 changed files with 43 additions and 16 deletions

View File

@ -1,3 +1,11 @@
2000-04-06 Ulrich Drepper <drepper@redhat.com>
* locale/programs/charmap.c (parse_charmap): Recognize <Uxxxx>
values as character names.
* locale/programs/ld-ctype.c (get_character): Handle missing
repertoire map correctly.
2000-04-05 Cristian Gafton <gafton@redhat.com>
* ctype/ctype.h (__isctype_l): Define even if not __OPTIMIZE__

View File

@ -441,7 +441,7 @@ character sets with locking states are not supported"));
continue;
}
if (nowtok != tok_bsymbol)
if (nowtok != tok_bsymbol && nowtok != tok_ucs4)
{
lr_error (cmfile, _("syntax error in %s definition: %s"),
"CHARMAP", _("no symbolic name given"));
@ -455,9 +455,17 @@ character sets with locking states are not supported"));
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, "<%08X>",
cmfile->token.val.ucs4);
obstack_1grow (&result->mem_pool, '\0');
from_name = (char *) obstack_finish (&result->mem_pool);
}
to_name = NULL;
state = 3;
@ -506,7 +514,7 @@ character sets with locking states are not supported"));
continue;
case 4:
if (nowtok != tok_bsymbol)
if (nowtok != tok_bsymbol && nowtok != tok_ucs4)
{
lr_error (cmfile, _("syntax error in %s definition: %s"),
"CHARMAP",
@ -517,9 +525,17 @@ character sets with locking states are not supported"));
}
/* Copy the to-name in a safe place. */
to_name = (char *) obstack_copy0 (&result->mem_pool,
cmfile->token.val.str.startmb,
cmfile->token.val.str.lenmb);
if (nowtok == tok_bsymbol)
to_name = (char *) obstack_copy0 (&result->mem_pool,
cmfile->token.val.str.startmb,
cmfile->token.val.str.lenmb);
else
{
obstack_printf (&result->mem_pool, "<%08X>",
cmfile->token.val.ucs4);
obstack_1grow (&result->mem_pool, '\0');
to_name = (char *) obstack_finish (&result->mem_pool);
}
state = 5;
continue;

View File

@ -1192,15 +1192,18 @@ get_character (struct token *now, struct charmap_t *charmap,
if (*seqp == NULL)
{
/* Insert a negative entry. */
static const struct charseq negative
= { .ucs4 = ILLEGAL_CHAR_VALUE };
uint32_t *newp = obstack_alloc (&repertoire->mem_pool,
sizeof (uint32_t));
*newp = now->val.ucs4;
if (repertoire != NULL)
{
/* Insert a negative entry. */
static const struct charseq negative
= { .ucs4 = ILLEGAL_CHAR_VALUE };
uint32_t *newp = obstack_alloc (&repertoire->mem_pool,
sizeof (uint32_t));
*newp = now->val.ucs4;
insert_entry (&repertoire->seq_table, newp, sizeof (uint32_t),
(void *) &negative);
insert_entry (&repertoire->seq_table, newp,
sizeof (uint32_t), (void *) &negative);
}
}
else
(*seqp)->ucs4 = now->val.ucs4;