aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>1999-11-21 18:11:05 +0000
committerUlrich Drepper <drepper@redhat.com>1999-11-21 18:11:05 +0000
commit87372aa9cf3b26291bfbd74e68e221da06ea953d (patch)
tree9b573413af42fac008083cc986747e46e4617888
parenta2236316645f0e4c3c9b286a7f908da786b9726f (diff)
downloadglibc-87372aa9cf3b26291bfbd74e68e221da06ea953d.tar
glibc-87372aa9cf3b26291bfbd74e68e221da06ea953d.tar.gz
glibc-87372aa9cf3b26291bfbd74e68e221da06ea953d.tar.bz2
glibc-87372aa9cf3b26291bfbd74e68e221da06ea953d.zip
Update.
1999-11-21 Ulrich Drepper <drepper@cygnus.com> * locale/programs/ld-ctype.c (ctype_read): Correctly implement 14652-style definition of new maps and classes.
-rw-r--r--ChangeLog5
-rw-r--r--locale/programs/ld-ctype.c25
2 files changed, 14 insertions, 16 deletions
diff --git a/ChangeLog b/ChangeLog
index cd800296ec..0f04a21d07 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+1999-11-21 Ulrich Drepper <drepper@cygnus.com>
+
+ * locale/programs/ld-ctype.c (ctype_read): Correctly implement
+ 14652-style definition of new maps and classes.
+
1999-11-20 Ulrich Drepper <drepper@cygnus.com>
* locale/programs/ld-monetary.c (monetary_finish): Don't print
diff --git a/locale/programs/ld-ctype.c b/locale/programs/ld-ctype.c
index a08095bbf5..d9a560783f 100644
--- a/locale/programs/ld-ctype.c
+++ b/locale/programs/ld-ctype.c
@@ -1764,7 +1764,7 @@ ctype_read (struct linereader *ldfile, struct localedef_t *result,
now = lr_token (ldfile, charmap, NULL);
if (now->tok == tok_ident || now->tok == tok_string)
{
- /* Must be one of the predefined class names. */
+ /* Must can be one of the predefined class names. */
for (cnt = 0; cnt < ctype->nr_charclass; ++cnt)
if (strcmp (ctype->classnames[cnt], now->val.str.startmb) == 0)
break;
@@ -1783,13 +1783,10 @@ ctype_read (struct linereader *ldfile, struct localedef_t *result,
else
#endif
{
- lr_error (ldfile, _("\
-unknown character class `%s' in category `LC_CTYPE'"),
- now->val.str.startmb);
- free (now->val.str.startmb);
+ /* OK, it's a new class. */
+ ctype_class_new (ldfile, ctype, now->val.str.startmb);
- lr_ignore_rest (ldfile, 0);
- continue;
+ class_bit = _ISwbit (ctype->nr_charclass - 1);
}
}
else
@@ -2073,15 +2070,11 @@ with character code range values one must use the absolute ellipsis `...'"));
if (strcmp (now->val.str.startmb, ctype->mapnames[cnt]) == 0)
break;
- if (cnt < ctype->map_collection_nr)
- mapidx = cnt;
- else
- {
- lr_error (ldfile, _("unknown map `%s'"),
- now->val.str.startmb);
- lr_ignore_rest (ldfile, 0);
- break;
- }
+ if (cnt >= ctype->map_collection_nr)
+ /* OK, it's a new map. */
+ ctype_map_new (ldfile, ctype, now->val.str.startmb, charmap);
+
+ mapidx = cnt;
}
else if (now->tok < tok_toupper || now->tok > tok_tolower)
goto err_label;