From ccc8c1dae7f1da2a0443f8553a8146c54a4324fd Mon Sep 17 00:00:00 2001 From: Jo-Philipp Wich Date: Sat, 31 Oct 2009 16:46:13 +0000 Subject: [PATCH] libs/lmo: fix po2lmo to cope with new po format --- libs/lmo/src/lmo_po2lmo.c | 46 ++++++++++++++++++++++++++------------- 1 file changed, 31 insertions(+), 15 deletions(-) diff --git a/libs/lmo/src/lmo_po2lmo.c b/libs/lmo/src/lmo_po2lmo.c index 9f78ff2add..9b7b09792f 100644 --- a/libs/lmo/src/lmo_po2lmo.c +++ b/libs/lmo/src/lmo_po2lmo.c @@ -99,7 +99,7 @@ int main(int argc, char *argv[]) memset(key, 0, sizeof(val)); memset(val, 0, sizeof(val)); - while( (NULL != fgets(line, sizeof(line), in)) || (state >= 2 && feof(in)) ) + while( (NULL != fgets(line, sizeof(line), in)) || (state >= 3 && feof(in)) ) { if( state == 0 && strstr(line, "msgid \"") == line ) { @@ -108,36 +108,52 @@ int main(int argc, char *argv[]) case -1: die("Syntax error in msgid"); case 0: - continue; - default: state = 1; + break; + default: + state = 2; } } - else if( state == 1 && strstr(line, "msgstr \"") == line ) + else if( state == 1 || state == 2 ) { - switch(extract_string(line, val, sizeof(val))) + if( strstr(line, "msgstr \"") == line || state == 2 ) { - case -1: - die("Syntax error in msgstr"); - case 0: - state = 2; - break; - default: - state = 3; + switch(extract_string(line, val, sizeof(val))) + { + case -1: + state = 4; + break; + case 0: + state = 2; + break; + default: + state = 3; + } + } + else + { + switch(extract_string(line, tmp, sizeof(tmp))) + { + case -1: + state = 4; + break; + default: + strcat(key, tmp); + } } } - else if( state == 2 ) + else if( state == 3 ) { switch(extract_string(line, tmp, sizeof(tmp))) { case -1: - state = 3; + state = 4; break; default: strcat(val, tmp); } } - else if( state == 3 ) + else if( state == 4 ) { if( strlen(key) > 0 && strlen(val) > 0 ) { -- 2.30.2