Update.
authorUlrich Drepper <drepper@redhat.com>
Thu, 6 Apr 2000 07:42:24 +0000 (07:42 +0000)
committerUlrich Drepper <drepper@redhat.com>
Thu, 6 Apr 2000 07:42:24 +0000 (07:42 +0000)
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.

ChangeLog
locale/programs/charmap.c
locale/programs/ld-ctype.c

index 283c8ea..6197531 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -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__
index 0c54c78..37047a0 100644 (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;
index 21f271f..23ca236 100644 (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;
-
-             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;