From d074d36dde3140ba9b09555760dcbd503405d0f3 Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Fri, 12 Oct 2007 15:54:54 +0000 Subject: * locale/programs/ld-collate.c (collate_read): Optimize a bit. (skip_to): Fix problems with parameter of elifdef/elifndef. --- locale/programs/ld-collate.c | 33 ++++++++++++++++----------------- 1 file changed, 16 insertions(+), 17 deletions(-) (limited to 'locale/programs/ld-collate.c') diff --git a/locale/programs/ld-collate.c b/locale/programs/ld-collate.c index 145a27f71a..bf22a2c47b 100644 --- a/locale/programs/ld-collate.c +++ b/locale/programs/ld-collate.c @@ -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) -- cgit 1.4.1