X-Git-Url: https://git.dlugolecki.net.pl/?a=blobdiff_plain;f=src%2Fkernel%2Fkernel.cpp;h=c6a9d1795d252fd286c8ca2266cb406fa141bf01;hb=0584aeb7c0bebaa46738dc1cc81a3a7dc463fd17;hp=2052fed9a47536a9de7512e551592b34ecf9ed77;hpb=15ae31bcd6ed35816cfc9c8b9fb2b4094ad2377a;p=vlp.git diff --git a/src/kernel/kernel.cpp b/src/kernel/kernel.cpp index 2052fed..c6a9d17 100644 --- a/src/kernel/kernel.cpp +++ b/src/kernel/kernel.cpp @@ -69,6 +69,9 @@ #include "lock.h" #include "options.h" #include "kill_interpreter_dialog.h" +#include "connect_dialog.h" + +#include "vlp/config.h" /* File resides in top directory (where are Makefiles)*/ #include "../../config.h" @@ -138,7 +141,7 @@ QKernel::QKernel(int argc, char **argv) q.mkpath(getRemoteDir()); } - info_messages = TRUE; + info_messages = actionInfo_messages->isChecked(); wait_for_info = FALSE; setWindowTitle(PACKAGE_NAME); @@ -149,11 +152,15 @@ QKernel::QKernel(int argc, char **argv) freeINTid = 1; ActiveConnections = 0; strcpy(LockPasswd, ""); + loadConfig(getConfigFilePath()); + RunNetModule(); Net_Notify = new QSocketNotifier(net_sock, QSocketNotifier::Read, this); connect(Net_Notify, SIGNAL(activated(int)), this, SLOT(NetMessage())); + + WriteMessage("\n " PACKAGE_STRING ": READY \n"); } QString QKernel::getConfigFilePath() @@ -191,94 +198,19 @@ void QKernel::loadConfig(const QString & fname) */ void QKernel::loadConfig(const char * fname) { - fprintf(stderr, "2: %s\n", fname); - config_t cfg; - config_setting_t *setting; - - /* Hack for checking if file exists without using external libs.*/ - - FILE * file = fopen(fname, "rt"); - if (!file) { - fprintf(stderr, "Error: Cannot load configuration file: %s!\n", - fname); - exit(3); - } - /* File exists, so file has been locked. Release it. */ - - config_init(&cfg); - - /* Read the file. If there is an error, report it and exit. */ - if (!config_read(&cfg, file)) { - fprintf(stderr, "%s! In file %s, line %d\n", - config_error_text(&cfg), - config_error_file(&cfg), - config_error_line(&cfg)); - config_destroy(&cfg); - fclose(file); - exit(3); - } - - setting = config_lookup(&cfg, "node_number"); - if (setting) { - NodeNumber = config_setting_get_int(setting); - } else { - fprintf(stderr, "%s! In file %s, '%s' was not found.\n", - "Warning", fname, "node_number"); - config_destroy(&cfg); - fclose(file); - exit(3); - } + loglan::vlp::Config config; + if(config.load(fname)) { + NodeNumber = config.getNodeNumber(); + ConType = config.getConnectionType(); - setting = config_lookup(&cfg, "type"); - if (setting) { - /* same as strcmp(..) == 0 */ - if (!strcmp(config_setting_get_string(setting), "explicit")) { - ConType = 1; - } else { - ConType = 2; - } - } else { - fprintf(stderr, "%s! In file %s, '%s' was not found.\n", - "Warning", fname, "type"); - } - setting = config_lookup(&cfg, "host"); - if (setting) { - switch(config_setting_type(setting)) { - /* TODO: Deprecated. Made for back compatibility. */ - case CONFIG_TYPE_STRING: - ConnectList.append(new ConnectEntry((char*) - config_setting_get_string(setting))); - break; - case CONFIG_TYPE_ARRAY: { - int size = config_setting_length(setting); - for (int i = 0; i < size; i++) { - ConnectList.append(new ConnectEntry((char*) - config_setting_get_string_elem(setting, - i))); - } - break; - } - default: - fprintf(stderr, "%s! In file %s, bad entry type for %s." - " Will not be read.\n", - "Error", fname, "host"); + std::vector hosts = config.getHosts(); + for (unsigned int i = 0; i < hosts.size(); i++) { + ConnectList.append(new ConnectEntry(hosts[i].c_str())); } - } else { - fprintf(stderr, "%s! In file %s, '%s' was not found.\n", - "Warning", fname, "host"); - } - setting = config_lookup(&cfg, "progdir"); - if (setting){ - strncpy(progdir, config_setting_get_string(setting), 256); - } else { - fprintf(stderr, "%s! In file %s, '%s' was not found.\n", - "Warning", fname, "progdir"); + strncpy(progdir, config.getProgramDir(), 256); } - - config_destroy(&cfg); - fclose(file); } /** @@ -323,6 +255,13 @@ void QKernel::on_actionEditor_triggered() WriteMessage("Executing logedit failed!"); } } + else if (pid < 0) { + WriteMessage("fork(logedit) failed!"); + WriteMessage("Exiting..."); + sleep(2); + on_actionQuit_triggered(); + exit(3); + } } /** @@ -351,6 +290,13 @@ void QKernel::on_actionHelp_triggered() WriteMessage("Executing loghelp failed!"); } } + else if (pid < 0) { + WriteMessage("fork(loghelp) failed!"); + WriteMessage("Exiting..."); + sleep(2); + on_actionQuit_triggered(); + exit(3); + } } /** @@ -358,10 +304,9 @@ void QKernel::on_actionHelp_triggered() */ void QKernel::RunGraphModule(char *sk) { - char cmd[255]; - QString program = getHomeDir(); program += "/modules/loggraph"; + pid_t pid = fork(); if (pid == 0) { if (execl(program.toStdString().c_str(), @@ -462,30 +407,16 @@ void QKernel::RunNetModule() */ void QKernel::on_actionConnect_triggered() { - QDialog d(this, Qt::Dialog); - QLabel lab("IP Address:", &d); - QLineEdit ed("", &d); - QPushButton ob("", &d); - QPushButton cb("", &d); MESSAGE m; - ob.setGeometry(30, 60, 80, 30); - ob.setText("Ok"); - ob.setDefault(TRUE); - lab.setGeometry(10, 10, 60, 30); - lab.setText("Address"); - ed.setGeometry(70, 10, 140, 30); - cb.setGeometry(130, 60, 80, 30); - cb.setText("Cancel"); - d.resize(240, 100); - - connect(&ob, SIGNAL(clicked()), &d, SLOT(accept())); - connect(&cb, SIGNAL(clicked()), &d, SLOT(reject())); - if (d.exec()) { + ConnectDialog dialog(this); + dialog.setWindowTitle("IP Address:"); + + if (dialog.exec()) { m.msg_type = MSG_NET; m.param.pword[0] = NET_CONNECT_TO; - strcpy(m.param.pstr, ed.text().toAscii().data()); - write(net_sock, &m, sizeof(MESSAGE)); + strcpy(m.param.pstr, dialog.getAddress().toStdString().c_str()); + write(net_sock, &m, sizeof(MESSAGE)); } } @@ -801,12 +732,12 @@ void QKernel::IntMessage(int sock) * Writes message to kernel logger. * @parame msg String with message to log */ -void QKernel::WriteMessage(char *msg) +void QKernel::WriteMessage(const char *msg) { int x; - int y; +// int y; x = desktop->textCursor().blockNumber(); - y = desktop->textCursor().columnNumber(); +// y = desktop->textCursor().columnNumber(); if (x > 100) { desktop->clear(); @@ -911,14 +842,6 @@ void QKernel::on_actionUnlock_console_triggered() } } -/** - * Writes init message in kernel - */ -void QKernel::InitMessage() -{ - WriteMessage("\n " PACKAGE_STRING ": READY \n"); -} - /** * Finds Interpreter by its socket * @param _id ID of the socket @@ -1198,7 +1121,6 @@ int main(int argc, char **argv) QApplication * app = new QApplication(argc, argv); QKernel kernel(argc, argv); kernel.show(); - kernel.InitMessage(); return app->exec(); }