Fixes: vlp-17.
[vlp.git] / src / lgconfig / lgconfig.cpp
index 4d599dc22f7e2bcc51cd7d4fa4ca912e0744b974..c46d5a3136a13df88d0bc640c878dac489ea53ed 100644 (file)
@@ -23,6 +23,7 @@
 #include <stdlib.h>
 #include <unistd.h>
 
+#include <libconfig.h>
 
 class VLPEntry
 {
@@ -239,9 +240,8 @@ void QInstall::SetOptions()
   QLabel* tmpQLabel;
   QPushButton *addbtn,*delbtn,*okbtn,*cancelbtn;
   VLPEntry *pom;
-  QFile *vlp_file;
   int i,j;
-  char pomstr[255],line[255];
+  char pomstr[255];
        
         //dlg.setStyle(WindowsStyle);
        nodelist = new QListBox( &dlg, "ListBox_1" );
@@ -278,25 +278,57 @@ void QInstall::SetOptions()
               {
                 j = Nodes.at();
                 sprintf(pomstr,"%s.cfg",pom->addr);
-                vlp_file = new QFile(pomstr);
-                vlp_file->open(IO_WriteOnly);
-                sprintf(line,"progdir=%s\n",pom->progdir);
-                vlp_file->writeBlock(line,strlen(line));
-                sprintf(line,"homedir=%s\n",pom->homedir);
-                vlp_file->writeBlock(line,strlen(line));
-                sprintf(line,"node_number=%d\n",pom->ID);
-                vlp_file->writeBlock(line,strlen(line));
-                if ( pom->type == 0)
-                 {
-                   sprintf(line,"type=explicit\n");
-                   vlp_file->writeBlock(line,strlen(line));
+                
+                config_t cfg;
+                config_setting_t *root, *setting;
+                config_init(&cfg);
+                
+                root = config_root_setting(&cfg);
+                
+                setting = config_setting_get_member(root, "progdir");
+                if(!setting) {
+                  setting = config_setting_add(root, "progdir", CONFIG_TYPE_STRING);
+                }
+                config_setting_set_string(setting, pom->progdir);
+                
+                setting = config_setting_get_member(root, "homedir");
+                if(!setting) {
+                  setting = config_setting_add(root, "homedir", CONFIG_TYPE_STRING);
+                }
+                config_setting_set_string(setting, pom->homedir);
+                
+                setting = config_setting_get_member(root, "node_number");
+                if(!setting) {
+                  setting = config_setting_add(root, "node_number", CONFIG_TYPE_INT);
+                }
+                config_setting_set_int(setting, pom->ID);
+                
+                if (pom->type == 0)
+                {
+                  setting = config_setting_get_member(root, "type");
+                  if(!setting) {
+                    setting = config_setting_add(root, "type", CONFIG_TYPE_STRING);
                   }
+                  config_setting_set_string(setting, "explicit");
+                }
                 for(i=0;i<Nodes.count();i++)
-                  if (pom!=Nodes.at(i)) {
-                                         sprintf(line,"host=%s\n",Nodes.at(i)->addr);
-                                         vlp_file->writeBlock(line,strlen(line));
-                                          }; 
-                vlp_file->close();
+                {
+                  if (pom!=Nodes.at(i))
+                  {
+                    setting = config_setting_get_member(root, "host");
+                    if(!setting) {
+                      setting = config_setting_add(root, "host", CONFIG_TYPE_STRING);
+                    }
+                    config_setting_set_string(setting, Nodes.at(i)->addr);
+                  };
+                }
+                
+                if(!config_write_file(&cfg, pomstr))
+                {
+                    fprintf(stderr, "Error while writing to file: %s.\n", pomstr);
+                }                
+                config_destroy(&cfg);
+                
                 pom = Nodes.at(j);
                 pom = Nodes.next();
                }