Fixes: vlp-17.
[vlp.git] / src / net / lognet.cpp
index dc2a750ca848f880437cd56765b5206ac5ec7750..088ef9fc24f012f8f8e73b8a05a65fa309ccccd5 100644 (file)
@@ -186,7 +186,7 @@ NETMOD::NETMOD(char *kernel_name)
 void NETMOD::load_config(char *fname)
 {
   config_t cfg;
-  const char *str;
+  config_setting_t *setting;
   int on,k=0;
   NETlink *pomlink;
 
@@ -194,7 +194,7 @@ void NETMOD::load_config(char *fname)
   
   
   /* Hack for checking if file exists without using external libs.*/
-  FILE * file = fopen(fname, "r");
+  FILE * file = fopen(fname, "rt");
   if (!file) {
     fprintf(stderr, "Error: Cannot load configuration file %s!\n", fname);
     write_at_console("Cannot load configuration file!");
@@ -214,30 +214,45 @@ void NETMOD::load_config(char *fname)
     exit(3);/* from original code. */
   }
   
-  if(config_lookup_int(&cfg, "node_number", &MyNode))
+  setting = config_lookup(&cfg, "node_number");
+  if(setting)
   {
-    if (MyNode==-1) {
-      write_at_console("Node number must be specified");
-      config_destroy(&cfg);
-      fclose(file);
-      exit(1);
-    };
+    MyNode = config_setting_get_int(setting);
   }
-  else
+  /* else */
+  if (!setting || MyNode==-1)
   {
     fprintf(stderr, "%s! In file %s, '%s' was not found.\n",
-        "Warning",
-        fname,
-        "node_number");
+      "Error",
+      fname,
+      "node_number");
+    write_at_console("Node number must be specified");
     config_destroy(&cfg);
     fclose(file);
     exit(1);
   }
 
-  if(config_lookup_string(&cfg, "host", &str)) {
+  setting = config_lookup(&cfg, "host");  
+  if(setting) {
     k++;
     pomlink = new NETlink;
-    strcpy(pomlink->addr, str);
+    
+    switch(config_setting_type(setting)) {
+      case CONFIG_TYPE_STRING:/* TODO: Deprecated. Made for back compatibility. */
+        strncpy(pomlink->addr, config_setting_get_string(setting), 255);
+        break;
+      case CONFIG_TYPE_ARRAY:
+        strncpy(pomlink->addr, config_setting_get_string_elem(setting, 0), 255);
+        break;
+      default:
+        fprintf(stderr, "%s! In file %s, bad entry type for %s. Will not be read.\n"
+          "Fatal error",
+          fname,
+          "host");
+        config_destroy(&cfg);
+        fclose(file);
+        exit(1);
+    }
     pomlink->connected = FALSE;
     pomlink->sock = socket(AF_INET, SOCK_STREAM, 0); 
     fcntl(pomlink->sock, F_SETFL,O_NONBLOCK | fcntl(pomlink->sock,F_GETFL,0));