#include "util.h" namespace Utils { string format_str_size(int num, int index) { string value = ""; value = to_string(num); if (num == 0) { return value; } if (index == 1) { value += "M"; } else if (index == 2) { value += "G"; } else if (index == 3) { value += "T"; } return value; } array, 5> read_csv(const string& filename) { array, 5> array_vectors; vector vec_option; vector vec_opcision; ifstream file(filename); string line; char delimiter = ','; getline(file, line); while (getline(file, line)) { stringstream stream(line); string option; string opcision; getline(stream, option, 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_option.push_back(option); vec_opcision.push_back(opcision); } array_vectors[0] = vec_option; array_vectors[1] = vec_opcision; return array_vectors; } string call(string cmd) { FILE *fp; int status; char path[PATH_MAX] = {0}; fp = popen(cmd.c_str(), "r"); if (fp == NULL) { exit(1); } while (fgets(path, PATH_MAX, fp) != NULL) { break; } status = pclose(fp); if (status == -1) { 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; } void str_remove(std::string& source, std::string to_remove) { string::size_type n = to_remove.length(); for (string::size_type i = source.find(to_remove); i != string::npos; i = source.find(to_remove)) source.erase(i, n); } void str_replace_all(std::string& str_base, string str_find, string sReplacement) { size_t pos = 0, fpos; while ((fpos = str_base.find(str_find, pos)) != std::string::npos) { str_base.replace(fpos, str_find.size(), sReplacement); pos = fpos + sReplacement.size(); } } std::vector split(std::string text, char delim) { std::string line; std::vector vec; std::stringstream ss(text); while(std::getline(ss, line, delim)) { vec.push_back(line); } return vec; } int synopsis_show(string str_link) { // gettext("https://wiki.ublinux.com/ru/Программное_обеспечение/Программы_и_утилиты/Все/") string cmd = "xdg-open " + str_link; if (geteuid() == 0) { string response_user = getlogin(); cmd = "su -l " + response_user + " -c \" DISPLAY=$DISPLAY " + cmd + " \""; } return system(cmd.c_str()); } string file_read(string filename) { string line; string buffer; std::ifstream in(filename); // окрываем файл для чтения if (in.is_open()) { while (getline(in, line)) { buffer += line; } } return buffer; } }