From: Jo-Philipp Wich Date: Sat, 31 Oct 2009 16:46:13 +0000 (+0000) Subject: libs/lmo: fix po2lmo to cope with new po format X-Git-Tag: 0.10.0~1039 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=ccc8c1dae7f1da2a0443f8553a8146c54a4324fd;p=oweals%2Fluci.git libs/lmo: fix po2lmo to cope with new po format --- diff --git a/libs/lmo/src/lmo_po2lmo.c b/libs/lmo/src/lmo_po2lmo.c index 9f78ff2ad..9b7b09792 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 ) {