#include <qstringlist.h>
#include <unistd.h>
+#include <libconfig.h>
+#include "AppConfiguration.h"
+
#define REMOTE_PATH "REMOTE"
#define MAXLINKS 30
#define LOGPORT 3600
void NETMOD::load_config(char *fname)
{
- QFile f(fname);
- QString line;
- QString val;
- int br=0,on,k=0;
- NETlink *pomlink;
+ int on,k=0;
+ NETlink *pomlink;
+
+
+ /* Hack for checking if file exists without using external libs.*/
+ FILE * file = fopen(fname, "r");
+ if (!file) {
+ fprintf(stderr, "Error: Cannot load configuration file %s!\n", fname);
+ write_at_console("Cannot load configuration file!");
+ exit(3);
+ }
+ /* File exists, so file has been locked. Release it. */
+ fclose(file);
+
+ AppConfiguration config(fname);
+
+ MyNode = config.getInt("node_number");
+ if (config.error() == TRUE) {
+ write_at_console("Node number must be specified");
+ config.release();
+ exit(1);
+ }
- if (!f.exists())
- {
- write_at_console("Cannot load configuration file!");sleep(2);exit(3);
- }
- f.open(IO_ReadOnly);
- br = f.readLine(line,256);
- while (br>0)
- {
- QStringList l = QStringList::split("=",line,FALSE);
- QStringList::Iterator it = l.begin();
- line = *it;
- ++it;
- val = *it;
- val = val.stripWhiteSpace();
- if (line == "node_number") {MyNode = val.toInt();};
- if (line == "host" ) {
- k++;
- pomlink = new NETlink;
- strcpy(pomlink->addr,val.ascii());
- pomlink->connected = FALSE;
- pomlink->sock = socket(AF_INET, SOCK_STREAM, 0);
- fcntl(pomlink->sock, F_SETFL,O_NONBLOCK | fcntl(pomlink->sock,F_GETFL,0));
- on=1;
- setsockopt(pomlink->sock,IPPROTO_TCP,TCP_NODELAY,(char*)&on,sizeof(on));
- Links.append(pomlink);
- to_connect++;
- };
- br = f.readLine(line,256);
- }
- f.close();
- if (k==0) all_connected=TRUE;
- if (MyNode==-1) {write_at_console("Node number must be specified");exit(1);};
+ char host[255];
+ strcpy(host, config.getString("host"));
+ if(config.error() == FALSE)
+ {
+ k++;
+ pomlink = new NETlink;
+ strcpy(pomlink->addr, host);
+ pomlink->connected = FALSE;
+ pomlink->sock = socket(AF_INET, SOCK_STREAM, 0);
+ fcntl(pomlink->sock, F_SETFL,O_NONBLOCK | fcntl(pomlink->sock,F_GETFL,0));
+ on=1;
+ setsockopt(pomlink->sock,IPPROTO_TCP,TCP_NODELAY,(char*)&on,sizeof(on));
+ Links.append(pomlink);
+ to_connect++;
+ }
+ config.release();
+
+ if (k==0) all_connected=TRUE;
}