* locale/programs/ld-collate.c (collate_read): Optimize a bit.

(skip_to): Fix problems with parameter of elifdef/elifndef.
This commit is contained in:
Ulrich Drepper 2007-10-12 15:54:54 +00:00
parent 26a51060b1
commit d074d36dde
2 changed files with 21 additions and 17 deletions

View File

@ -1,3 +1,8 @@
2007-10-12 Ulrich Drepper <drepper@redhat.com>
* locale/programs/ld-collate.c (collate_read): Optimize a bit.
(skip_to): Fix problems with parameter of elifdef/elifndef.
2007-10-11 Ulrich Drepper <drepper@redhat.com>
* iconv/gconv_simple.c: Add some branch prediction.

View File

@ -2662,13 +2662,16 @@ skip_to (struct linereader *ldfile, struct locale_collate_t *collate,
if (nowtok == tok_eof || nowtok == tok_end)
return nowtok;
}
else if ((!to_endif && (nowtok == tok_else || nowtok == tok_elifdef
|| nowtok == tok_elifndef))
|| nowtok == tok_endif)
else if (nowtok == tok_endif || (!to_endif && nowtok == tok_else))
{
lr_ignore_rest (ldfile, 1);
return nowtok;
}
else if (!to_endif && (nowtok == tok_elifdef || nowtok == tok_elifndef))
{
/* Do not read the rest of the line. */
return nowtok;
}
else if (nowtok == tok_else)
{
lr_error (ldfile, _("%s: more then one 'else'"), "LC_COLLATE");
@ -2709,15 +2712,18 @@ collate_read (struct linereader *ldfile, struct localedef_t *result,
/* The rest of the line containing `LC_COLLATE' must be free. */
lr_ignore_rest (ldfile, 1);
do
while (1)
{
now = lr_token (ldfile, charmap, result, NULL, verbose);
nowtok = now->tok;
}
while (nowtok == tok_eol);
do
{
now = lr_token (ldfile, charmap, result, NULL, verbose);
nowtok = now->tok;
}
while (nowtok == tok_eol);
if (nowtok != tok_define)
break;
while (nowtok == tok_define)
{
if (ignore_content)
lr_ignore_rest (ldfile, 0);
else
@ -2738,13 +2744,6 @@ collate_read (struct linereader *ldfile, struct localedef_t *result,
lr_ignore_rest (ldfile, 1);
}
}
do
{
now = lr_token (ldfile, charmap, result, NULL, verbose);
nowtok = now->tok;
}
while (nowtok == tok_eol);
}
if (nowtok == tok_copy)