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.
This commit is contained in:
Ulrich Drepper 1999-11-21 18:11:05 +00:00
parent a223631664
commit 87372aa9cf
2 changed files with 14 additions and 16 deletions

View File

@ -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> 1999-11-20 Ulrich Drepper <drepper@cygnus.com>
* locale/programs/ld-monetary.c (monetary_finish): Don't print * locale/programs/ld-monetary.c (monetary_finish): Don't print

View File

@ -1764,7 +1764,7 @@ ctype_read (struct linereader *ldfile, struct localedef_t *result,
now = lr_token (ldfile, charmap, NULL); now = lr_token (ldfile, charmap, NULL);
if (now->tok == tok_ident || now->tok == tok_string) 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) for (cnt = 0; cnt < ctype->nr_charclass; ++cnt)
if (strcmp (ctype->classnames[cnt], now->val.str.startmb) == 0) if (strcmp (ctype->classnames[cnt], now->val.str.startmb) == 0)
break; break;
@ -1783,13 +1783,10 @@ ctype_read (struct linereader *ldfile, struct localedef_t *result,
else else
#endif #endif
{ {
lr_error (ldfile, _("\ /* OK, it's a new class. */
unknown character class `%s' in category `LC_CTYPE'"), ctype_class_new (ldfile, ctype, now->val.str.startmb);
now->val.str.startmb);
free (now->val.str.startmb);
lr_ignore_rest (ldfile, 0); class_bit = _ISwbit (ctype->nr_charclass - 1);
continue;
} }
} }
else 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) if (strcmp (now->val.str.startmb, ctype->mapnames[cnt]) == 0)
break; break;
if (cnt < ctype->map_collection_nr) if (cnt >= ctype->map_collection_nr)
mapidx = cnt; /* OK, it's a new map. */
else ctype_map_new (ldfile, ctype, now->val.str.startmb, charmap);
{
lr_error (ldfile, _("unknown map `%s'"), mapidx = cnt;
now->val.str.startmb);
lr_ignore_rest (ldfile, 0);
break;
}
} }
else if (now->tok < tok_toupper || now->tok > tok_tolower) else if (now->tok < tok_toupper || now->tok > tok_tolower)
goto err_label; goto err_label;