+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__
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"));
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;
continue;
case 4:
- if (nowtok != tok_bsymbol)
+ if (nowtok != tok_bsymbol && nowtok != tok_ucs4)
{
lr_error (cmfile, _("syntax error in %s definition: %s"),
"CHARMAP",
}
/* 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;
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;
-
- insert_entry (&repertoire->seq_table, newp, sizeof (uint32_t),
- (void *) &negative);
+ 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);
+ }
}
else
(*seqp)->ucs4 = now->val.ucs4;