diff --git a/source/ubl-settings-bootloader.cc b/source/ubl-settings-bootloader.cc index 7604bf3..a0916c2 100644 --- a/source/ubl-settings-bootloader.cc +++ b/source/ubl-settings-bootloader.cc @@ -109,11 +109,11 @@ void MainWindow::fill_in_view() { this->view_add_colums(*treeViewKernel); this->view_add_colums(*treeViewIPT); this->view_add_colums(*treeViewOTT); - - + // auto iter = list_store_kernel->prepend(); + // row_kernel[m_columns.cmd_set_true]; + // cout << cmd << endl; } - void MainWindow::item_selected_kernel(const Gtk::TreeModel::Path& path, const Gtk::TreeModel::iterator&) { auto selection_IPT = treeViewIPT->get_selection(); auto selection_OTT = treeViewOTT->get_selection(); diff --git a/source/util.cc b/source/util.cc index 501cb80..95a9936 100644 --- a/source/util.cc +++ b/source/util.cc @@ -1,28 +1,53 @@ #include "util.h" -std::array, 5> read_csv(const std::string& filename) { - std::array, 5> array_vectors; - std::vector vec_cmd_get; - std::vector vec_cmd_set_true; - std::vector vec_cmd_set_false; - std::vector vec_option; - std::vector vec_opcision; - std::ifstream file(filename); - std::string line; + +array, 5> read_csv(const string& filename) { + array, 5> array_vectors; + vector vec_cmd_get; + vector vec_cmd_set_true; + vector vec_cmd_set_false; + vector vec_option; + vector vec_opcision; + ifstream file(filename); + string line; char delimiter = ','; getline(file, line); - while (std::getline(file, line)) { - std::stringstream stream(line); - std::string cmd_get; - std::string cmd_set_true; - std::string cmd_set_false; - std::string option; - std::string opcision; + while (getline(file, line)) { + stringstream stream(line); + string cmd_get; + string cmd_set_true; + string cmd_set_false; + string option; + string opcision; getline(stream, cmd_get, delimiter); getline(stream, cmd_set_true, delimiter); getline(stream, cmd_set_false, delimiter); getline(stream, option, delimiter); - getline(stream, opcision, delimiter); + string line_local = stream.str(); + if (line_local.find("\"") != string::npos) { + string str_delimiter = "\""; + vector point = find_all(line_local, str_delimiter); + size_t len = point.size(); + if (len >= 2) { + int index_start = point[len-2]; + int index_end = point[len-1]; + opcision = line_local.substr(index_start, index_end); + index_end = opcision.find("\""); + if (opcision.find("\"") != string::npos) { + opcision.replace(index_end, opcision.length(), ""); + } + + } + else { + opcision = "error"; + } + + + } + else{ + getline(stream, opcision, delimiter); + } + vec_cmd_get.push_back(cmd_get); vec_cmd_set_true.push_back(cmd_set_true); vec_cmd_set_false.push_back(cmd_set_false); @@ -37,7 +62,7 @@ std::array, 5> read_csv(const std::string& filename) { return array_vectors; } -std::string call(std::string cmd) { +string call(string cmd) { FILE *fp; int status; char path[PATH_MAX] = {0}; @@ -53,4 +78,13 @@ std::string call(std::string cmd) { exit(1); } return path; +} +vector find_all(string &str_ntp, string substr) { + size_t index = 0; + vector sub_index; + while ((index = str_ntp.find(substr, index)) != std::string::npos) { + index += substr.length(); + sub_index.push_back(index); + } + return sub_index; } \ No newline at end of file diff --git a/source/util.h b/source/util.h index e7c6db1..c304296 100644 --- a/source/util.h +++ b/source/util.h @@ -6,8 +6,10 @@ #include #include #include +using namespace std; std::array, 5> read_csv(const std::string& filename); -std::string call(std::string cmd); \ No newline at end of file +std::string call(std::string cmd); +vector find_all(string &str_ntp, string substr); \ No newline at end of file