libs/lmo: fix po2lmo to cope with new po format
authorJo-Philipp Wich <jow@openwrt.org>
Sat, 31 Oct 2009 16:46:13 +0000 (16:46 +0000)
committerJo-Philipp Wich <jow@openwrt.org>
Sat, 31 Oct 2009 16:46:13 +0000 (16:46 +0000)
libs/lmo/src/lmo_po2lmo.c

index 9f78ff2..9b7b097 100644 (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;
+                                       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 )
                        {