libs/lmo: fix po2lmo to cope with new po format

This commit is contained in:
Jo-Philipp Wich 2009-10-31 16:46:13 +00:00
parent 760b917114
commit ccc8c1dae7

View file

@ -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;
}
}
else if( state == 1 && strstr(line, "msgstr \"") == line )
{
switch(extract_string(line, val, sizeof(val)))
{
case -1:
die("Syntax error in msgstr");
case 0:
state = 2;
break;
default:
state = 3;
state = 2;
}
}
else if( state == 2 )
else if( state == 1 || state == 2 )
{
if( strstr(line, "msgstr \"") == line || state == 2 )
{
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 == 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 )
{