diff --git a/Makefile b/Makefile index 9178f69..2ec93b6 100644 --- a/Makefile +++ b/Makefile @@ -43,7 +43,6 @@ debug: @echo "Debug ..." if [ ! -d ${CMAKE_BUILD_DIR} ]; then \ $(CMAKE_COMMAND) -S${CMAKE_SOURCE_DIR} -B${CMAKE_BUILD_DIR} -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX="${PREFIX}"; \ -# @cc source/my_device.c source/my_device.h source/filters.c source/filters.h source/ubl-cmake.h source/view_edit.h source/view_edit.c source/view_add.h source/view_add.c source/ubl-utils.h source/ubl-utils.c source/ubl-strings.h source/ubl-settings-resourcequota.h source/ubl-settings-resourcequota.c -o ubl-settings-resourcequota `pkg-config --cflags --libs gtk+-3.0 vte-2.91 webkit2gtk-4.0 webkit2gtk-web-extension-4.0` -g fi; \ echo "Debug: OK" diff --git a/source/ubl-settings-resourcequota.c b/source/ubl-settings-resourcequota.c index 87a24a6..c2866bc 100644 --- a/source/ubl-settings-resourcequota.c +++ b/source/ubl-settings-resourcequota.c @@ -116,6 +116,10 @@ void config_init(){ main_config.flag_load = 0; main_config.size_array_del_line = 0; main_config.flag_set_data = 0; + main_config.i_o_limit_read_size=NULL; + main_config.i_o_limit_write_size=NULL; + main_config.i_o_limit_write=NULL; + main_config.i_o_limit_read=NULL; } main_window *setup_window(){ @@ -274,10 +278,11 @@ void clear_array() { philos_free_string_array(&main_config.soft_raw_limit , main_config.size_tree_view); philos_free_string_array(&main_config.hard_raw_limit , main_config.size_tree_view); philos_free_string_array(&main_config.swap , main_config.size_tree_view); - philos_free_string_array(&main_config.cpu_limit , main_config.size_tree_view); - philos_free_string_array(&main_config.i_o_limit_read , main_config.size_tree_view); - philos_free_string_array(&main_config.i_o_limit_write , main_config.size_tree_view); - philos_free_string_array(&main_config.disk, main_config.size_tree_view); + philos_free_string_array(&main_config.cpu_limit, main_config.size_tree_view); + philos_free_string_array_n3(&main_config.i_o_limit_read, main_config.size_tree_view); + philos_free_string_array_n3(&main_config.i_o_limit_write, main_config.size_tree_view); + philos_free_string_array_n3(&main_config.disk_read, main_config.size_tree_view); + philos_free_string_array_n3(&main_config.disk_write, main_config.size_tree_view); philos_free_string_array(&main_config.array_del_line, main_config.size_array_del_line); main_config.size_array_del_line = 0; @@ -288,8 +293,8 @@ void clear_array() { philos_free_int_array(&main_config.hard_raw_limit_size, main_config.size_tree_view); philos_free_int_array(&main_config.swap_size, main_config.size_tree_view); philos_free_int_array(&main_config.cpu_limit_size, main_config.size_tree_view); - philos_free_int_array(&main_config.i_o_limit_read_size, main_config.size_tree_view); - philos_free_int_array(&main_config.i_o_limit_write_size, main_config.size_tree_view); + philos_free_int_array_n2(&main_config.i_o_limit_read_size, main_config.size_tree_view); + philos_free_int_array_n2(&main_config.i_o_limit_write_size, main_config.size_tree_view); gtk_list_store_clear(main_config.list); main_config.size_tree_view = 0; } @@ -306,7 +311,7 @@ void template_load_cfg(char* cmd, dictionary* load_cfg) { if (str_key_value[0] == '\"') { yon_char_divide(str_key_value, 0); size_t length = strlen(str_key_value); - str_key_value = yon_char_divide(str_key_value, length-2); + str_key_value = yon_char_divide(str_key_value, length-1); } load_cfg = yon_dictionary_create_with_data_connected(load_cfg, str_key, str_key_value); str_split_value(str_key_value, main_config.size_tree_view); @@ -322,8 +327,8 @@ void template_load_cfg(char* cmd, dictionary* load_cfg) { } void init_cfg_array(int index) { - main_config.disk = yon_char_parsed_append(main_config.disk, &index, "-"); - index--; + //main_config.disk = yon_char_parsed_append(main_config.disk, &index, "-"); + //index--; set_pow_size("-", &main_config.type_quota_size, &main_config.type_quota, index); set_pow_size("-", &main_config.quota_volume_size, &main_config.quota_volume, index); set_pow_size("-", &main_config.cpu_limit_size, &main_config.cpu_limit, index); @@ -331,8 +336,6 @@ void init_cfg_array(int index) { set_pow_size("-", &main_config.soft_raw_limit_size, &main_config.soft_raw_limit, index); set_pow_size("-", &main_config.hard_raw_limit_size, &main_config.hard_raw_limit, index); set_pow_size("-", &main_config.swap_size, &main_config.swap, index); - set_pow_size("-", &main_config.i_o_limit_read_size, &main_config.i_o_limit_read, index); - set_pow_size("-", &main_config.i_o_limit_write_size, &main_config.i_o_limit_write, index); } void str_split_key(char* source_value, int index) { @@ -403,8 +406,14 @@ void str_split_value(char* values, int index) { init_cfg_array(index); char* value_i = NULL; for (int index_1 = 0; index_1 < size; index_1++) { - value = arr_values[index_1]; + value = yon_char_new(arr_values[index_1]); key = yon_char_divide_search(value, "=", -1); + if (yon_char_find_count(key, "IOReadBandwidthMax") != 0) { + get_param_io_limit(arr_values, index_1, size,index, "IOReadBandwidthMax"); + } + if (yon_char_find_count(key, "IOWriteBandwidthMax") != 0) { + get_param_io_limit(arr_values, index_1, size,index, "IOWriteBandwidthMax"); + } if (yon_char_find_count(key, "MemoryHigh") != 0) { set_pow_size(value, &main_config.soft_raw_limit_size, &main_config.soft_raw_limit, index); } @@ -417,42 +426,85 @@ void str_split_value(char* values, int index) { if (yon_char_find_count(key, "CPUQuota") != 0) { set_pow_size(value, &main_config.cpu_limit_size, &main_config.cpu_limit, index); } - if (yon_char_find_count(key, "IOReadBandwidthMax") != 0) { - set_pow_size(value, &main_config.i_o_limit_read_size, &main_config.i_o_limit_read, index); - } - if (yon_char_find_count(key, "IOWriteBandwidthMax") != 0) { - set_pow_size(value, &main_config.i_o_limit_write_size, &main_config.i_o_limit_write, index); - } } } -/* -void get_param(char** arr_values, int index_start , int size) { - int count = 0; - for (int index = index_start; index < size; index++) { - if (strstr(arr_values[index], "BandwidthMax")!=NULL) { - count = count + 1; + +void get_param_io_limit(char** arr_values, int index_start, int size, int index_n1, char *key_find) { + char** array_limit = NULL; + char** array_disk = NULL; + int* array_limit_size = NULL; + int index_n2 = 0; + if (strstr(key_find, "IOReadBandwidthMax")!=NULL) { + main_config.i_o_limit_read = yon_remalloc(main_config.i_o_limit_read, (index_n1 + 1) * sizeof(char**)); + main_config.i_o_limit_read_size = yon_remalloc(main_config.i_o_limit_read_size, (index_n1 + 1) * sizeof(int*)); + main_config.disk_read = yon_remalloc(main_config.disk_read, (index_n1 + 1) * sizeof(char**)); + array_disk = main_config.disk_read[index_n1]; + array_limit = main_config.i_o_limit_read[index_n1]; + array_limit_size = main_config.i_o_limit_read_size[index_n1]; + //array_disk = yon_remalloc(array_disk, sizeof(char*)); + //array_limit_size = yon_remalloc(array_limit_size, sizeof(int)); + //array_limit = yon_remalloc(array_limit, sizeof(char*)); + } + else { + main_config.i_o_limit_write = yon_remalloc(main_config.i_o_limit_write, (index_n1 + 1) * sizeof(char**)); + main_config.i_o_limit_write_size = yon_remalloc(main_config.i_o_limit_read_size, (index_n1 + 1) * sizeof(int*)); + main_config.disk_write = yon_remalloc(main_config.disk_write, (index_n1 + 1) * sizeof(char**)); + array_disk = main_config.disk_write[index_n1]; + array_limit = main_config.i_o_limit_write[index_n1]; + array_limit_size = main_config.i_o_limit_write_size[index_n1]; + //array_disk = yon_remalloc(array_disk, sizeof(char*)); + //array_limit_size = yon_remalloc(array_limit_size, sizeof(int)); + //array_limit = yon_remalloc(array_limit, sizeof(char*)); + } + int flag_parsed = 0; + int flag_exit = 0; + for (int i = index_start; i < size; i++) { + if (strstr(arr_values[i], "BandwidthMax")!=NULL ) { + char* value = yon_char_new(arr_values[i]); + yon_char_divide_search(value, "=", -1); + if (strstr(arr_values[i], key_find)!=NULL) { + // Найден ключ в массив + char* disk = yon_char_divide_search(yon_char_new(value), " ", -1); + array_disk = yon_char_parsed_append(array_disk, &index_n2, yon_char_new(disk)); + index_n2--; + set_pow_size(yon_char_new(value), &array_limit_size, &array_limit, index_n2); + flag_parsed = 1; + } + else if (strstr(arr_values[i], "BandwidthMax")!=NULL && + strstr(arr_values[i], key_find)==NULL && flag_parsed == 1) { + // Найден ключ в массив, но не тот + flag_exit = 1; + + } + free(value); } - if ((index+1) == size) { - + else if (flag_parsed == 1) { + char* disk = yon_char_divide_search(yon_char_new(arr_values[i]), " ", -1); + array_disk = yon_char_parsed_append(array_disk, &index_n2, yon_char_new(disk)); + index_n2--; + set_pow_size(yon_char_new(arr_values[i]), &array_limit_size, &array_limit, index_n2); } + else if (flag_exit == 1) { + break; + } + index_n2++; } - + if (index_n2 != 0 ) { + index_n2 += 1; + } + array_limit = yon_char_parsed_append(array_limit, &index_n2, NULL); + index_n2--; + array_limit = yon_char_parsed_append(array_disk, &index_n2, NULL); } -*/ + void set_pow_size(char* str_find, int** array_size, char*** array_data , int index) { - char* disk = NULL; - - if (strstr(str_find,"\"") != NULL) { - yon_char_divide(str_find, 0); - size_t length = strlen(str_find); - str_find = yon_char_divide(str_find, length-2); - if (str_find[0] == '\"') { - if (strstr(str_find, " ") != NULL) { - disk = yon_char_divide_search(str_find, " ", -1); - *array_data = yon_char_parsed_append(*array_data, &index, disk); - } - } + if (strstr(str_find, " ") != NULL) { + char* mem_s = yon_char_new(str_find); + yon_char_divide_search(mem_s, " ", -1); + size_t len = strlen(mem_s); + mem_s = yon_char_divide(mem_s, len-1); + *array_data = yon_char_parsed_append(*array_data, &index, mem_s); } size_t length = strlen(str_find); if (strstr(str_find,"K") != NULL) { @@ -517,7 +569,6 @@ void main_cbx_2_event() { if (menu_id >= 0) { free(cmd); } - } void tree_view_select(GtkWidget *self, main_window *widgets) { @@ -552,12 +603,14 @@ void tree_view_add(int index) { main_config.size_tree_view--; main_config.cpu_limit = yon_char_parsed_append(main_config.cpu_limit, &main_config.size_tree_view, add_get_limit_cpu()); main_config.size_tree_view--; + /* main_config.i_o_limit_read = yon_char_parsed_append(main_config.i_o_limit_read, &main_config.size_tree_view, add_get_read_device()); main_config.size_tree_view--; main_config.i_o_limit_write = yon_char_parsed_append(main_config.i_o_limit_write, &main_config.size_tree_view, add_get_write_device()); main_config.size_tree_view--; main_config.disk = yon_char_parsed_append(main_config.disk, &main_config.size_tree_view, add_get_select_device()); main_config.size_tree_view--; + */ main_config.type_quota_size = philos_int_append(main_config.type_quota_size, &main_config.size_tree_view, add_get_quota_object_size()); main_config.size_tree_view--; @@ -570,10 +623,10 @@ void tree_view_add(int index) { main_config.swap_size = philos_int_append(main_config.swap_size, &main_config.size_tree_view, add_get_limit_swap_size()); main_config.size_tree_view--; main_config.cpu_limit_size = philos_int_append(main_config.cpu_limit_size, &main_config.size_tree_view, add_get_limit_cpu_size()); - main_config.size_tree_view--; - main_config.i_o_limit_read_size = philos_int_append(main_config.i_o_limit_read_size, &main_config.size_tree_view, add_get_read_device_size()); - main_config.size_tree_view--; - main_config.i_o_limit_write_size = philos_int_append(main_config.i_o_limit_write_size, &main_config.size_tree_view, add_get_write_device_size()); + //main_config.size_tree_view--; + //main_config.i_o_limit_read_size = philos_int_append(main_config.i_o_limit_read_size, &main_config.size_tree_view, add_get_read_device_size()); + ///main_config.size_tree_view--; + // main_config.i_o_limit_write_size = philos_int_append(main_config.i_o_limit_write_size, &main_config.size_tree_view, add_get_write_device_size()); fill_tree_view(main_config.size_tree_view-1, main_config.size_tree_view, 1); main_config.flag_set_data = 1; } @@ -585,20 +638,57 @@ void fill_tree_view(int start, int size, int flag_gui_add) { gtk_list_store_clear(main_config.list); } for (int index = start; index < size; index++) { - GtkTreeIter iter; - gtk_list_store_append(main_config.list,&iter); - gtk_list_store_set(main_config.list,&iter,0,main_config.type_quota[index], - 1,main_config.quota_volume[index], - 2,main_config.soft_raw_limit[index], - 3,main_config.hard_raw_limit[index], - 4,main_config.swap[index], - 5,main_config.cpu_limit[index], - 6,main_config.i_o_limit_read[index], - 7,main_config.i_o_limit_write[index],-1); + GtkTreeIter iter; + gtk_list_store_append(main_config.list,&iter); + char* str_io_read = format_io_limit_in_tree_view(main_config.disk_read, main_config.i_o_limit_read, main_config.i_o_limit_read_size, index); + char* str_io_write = format_io_limit_in_tree_view(main_config.disk_write, main_config.i_o_limit_write, main_config.i_o_limit_write_size, index); + gtk_list_store_set(main_config.list,&iter,0,main_config.type_quota[index], + 1,main_config.quota_volume[index], + 2,main_config.soft_raw_limit[index], + 3,main_config.hard_raw_limit[index], + 4,main_config.swap[index], + 5,main_config.cpu_limit[index], + 6,str_io_read, + 7,str_io_write,-1); + free(str_io_read); + free(str_io_write); } if (flag_gui_add != 0) { gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->treeViewMain), model); } + +} + +char* format_io_limit_in_tree_view(config_str* disk, config_str* i_o_limit, int** i_o_limit_size, int index) { + int index_to_n2 = 0; + char* str = NULL; + while (1) { + if (i_o_limit[index]!= NULL) { + if (i_o_limit[index][index_to_n2] != NULL) { + if (index_to_n2!=0) { + str = yon_char_unite(str, ", ", disk[index][index_to_n2], " ", i_o_limit[index][index_to_n2], i_o_limit_size[index][index_to_n2], NULL); + } + else { + str = yon_char_unite(str, disk[index][index_to_n2], " ", i_o_limit[index][index_to_n2], i_o_limit_size[index][index_to_n2], NULL); + } + index_to_n2++; + } + else { + break; + } + } + else { + break; + } + + + } + if (str == NULL) { + str = (char*)malloc(sizeof(char*)*2); + str[0] = '-'; + str[1] = '\0'; + } + return str; } int tree_view_edit() { @@ -615,23 +705,23 @@ int tree_view_edit() { main_config.hard_raw_limit[index] = edit_get_hard(); main_config.swap[index] = edit_get_limit_swap(); main_config.cpu_limit[index] = edit_get_limit_cpu(); - main_config.i_o_limit_read[index] = edit_get_read_device(); - main_config.i_o_limit_write[index] = edit_get_write_device(); + //main_config.i_o_limit_read[index] = edit_get_read_device(); + //main_config.i_o_limit_write[index] = edit_get_write_device(); main_config.soft_raw_limit_size[index] = edit_get_soft_size(); main_config.hard_raw_limit_size[index] = edit_get_hard_size(); main_config.swap_size[index] = edit_get_limit_swap_size(); main_config.cpu_limit_size[index] = edit_get_limit_cpu_size(); - main_config.i_o_limit_read_size[index] = edit_get_read_device_size(); - main_config.i_o_limit_write_size[index] = edit_get_write_device_size(); + //main_config.i_o_limit_read_size[index] = edit_get_read_device_size(); + //main_config.i_o_limit_write_size[index] = edit_get_write_device_size(); gtk_list_store_set(main_config.list,&iter,0,main_config.type_quota[index], 1,main_config.quota_volume[index], 2,main_config.soft_raw_limit[index], 3,main_config.hard_raw_limit[index], 4,main_config.swap[index], - 5,main_config.cpu_limit[index], - 6,main_config.i_o_limit_read[index], - 7,main_config.i_o_limit_write[index],-1); + 5,main_config.cpu_limit[index] + /*6,main_config.i_o_limit_read[index], + 7,main_config.i_o_limit_write[index],-1*/); return 1; } else { @@ -725,12 +815,12 @@ void wrapper_edit_show() { char* str_iter = gtk_tree_model_get_string_from_iter(model, &iter); int index = atoi(str_iter); edit_show(NULL, glade_path); - edit_set_select_device(main_config.disk[index]); + //edit_set_select_device(main_config.disk[index]); edit_set_hard(main_config.hard_raw_limit[index], main_config.hard_raw_limit_size[index]); edit_set_limit_cpu(main_config.cpu_limit[index], main_config.cpu_limit_size[index]); edit_set_soft(main_config.soft_raw_limit[index], main_config.soft_raw_limit_size[index]); - edit_set_write_device(main_config.i_o_limit_write[index], main_config.i_o_limit_write_size[index]); - edit_set_read_device(main_config.i_o_limit_read[index], main_config.i_o_limit_read_size[index]); + //edit_set_write_device(main_config.i_o_limit_write[index], main_config.i_o_limit_write_size[index]); + //edit_set_read_device(main_config.i_o_limit_read[index], main_config.i_o_limit_read_size[index]); edit_init_windows(); edit_set_limit_swap(main_config.swap[index], main_config.swap_size[index]); edit_event(get_widget_edit()); @@ -774,10 +864,10 @@ void tree_view_del_line() { main_config.size_tree_view++; main_config.cpu_limit = yon_char_parsed_shrink(main_config.cpu_limit, &main_config.size_tree_view,index); main_config.size_tree_view++; - main_config.i_o_limit_read = yon_char_parsed_shrink(main_config.i_o_limit_read, &main_config.size_tree_view,index); - main_config.size_tree_view++; - main_config.i_o_limit_write = yon_char_parsed_shrink(main_config.i_o_limit_write, &main_config.size_tree_view,index); - main_config.size_tree_view++; + //main_config.i_o_limit_read = yon_char_parsed_shrink(main_config.i_o_limit_read, &main_config.size_tree_view,index); + //main_config.size_tree_view++; + //main_config.i_o_limit_write = yon_char_parsed_shrink(main_config.i_o_limit_write, &main_config.size_tree_view,index); + //main_config.size_tree_view++; main_config.type_quota_size = remove_element_int_array(main_config.type_quota_size, &main_config.size_tree_view,index); main_config.size_tree_view++; @@ -790,16 +880,17 @@ void tree_view_del_line() { main_config.swap_size = remove_element_int_array(main_config.swap_size, &main_config.size_tree_view,index); main_config.size_tree_view++; main_config.cpu_limit_size = remove_element_int_array(main_config.cpu_limit_size, &main_config.size_tree_view,index); - main_config.size_tree_view++; - main_config.i_o_limit_read_size = remove_element_int_array(main_config.i_o_limit_read_size, &main_config.size_tree_view,index); - main_config.size_tree_view++; - main_config.i_o_limit_write_size = remove_element_int_array(main_config.i_o_limit_write_size, &main_config.size_tree_view,index); + //main_config.size_tree_view++; + //main_config.i_o_limit_read_size = remove_element_int_array(main_config.i_o_limit_read_size, &main_config.size_tree_view,index); + //main_config.size_tree_view++; + //main_config.i_o_limit_write_size = remove_element_int_array(main_config.i_o_limit_write_size, &main_config.size_tree_view,index); main_fill_tree_view_after_remove(); gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->treeViewMain), model); free(str_iter); main_config.flag_set_data = 1; } } + void wrapper_all_save() { int flag_mess_save = 0; if (main_config.flag_load == 0) { @@ -871,14 +962,14 @@ char* save_format_value(int index) { split_simvol[0] = ','; split_simvol[1] = '\0'; } - if (strstr(main_config.i_o_limit_read[index], "-") == NULL) { - value = yon_char_unite(value ,split_simvol, philos_format_cfg_str_size_memory("IOReadBandwidthMax", main_config.i_o_limit_read[index],main_config.i_o_limit_read_size[index]), NULL); - split_simvol[0] = ','; - split_simvol[1] = '\0'; - } - if (strstr(main_config.i_o_limit_write[index], "-") == NULL) { - value = yon_char_unite(value ,split_simvol, philos_format_cfg_str_size_memory("IOWriteBandwidthMax", main_config.i_o_limit_write[index],main_config.i_o_limit_write_size[index]), NULL); - } + //if (strstr(main_config.i_o_limit_read[index], "-") == NULL) { + //value = yon_char_unite(value ,split_simvol, philos_format_cfg_str_size_memory("IOReadBandwidthMax", main_config.i_o_limit_read[index],main_config.i_o_limit_read_size[index]), NULL); + // split_simvol[0] = ','; + // split_simvol[1] = '\0'; + //} + //if (strstr(main_config.i_o_limit_write[index], "-") == NULL) { + //value = yon_char_unite(value ,split_simvol, philos_format_cfg_str_size_memory("IOWriteBandwidthMax", main_config.i_o_limit_write[index],main_config.i_o_limit_write_size[index]), NULL); + //} return value; } @@ -978,9 +1069,9 @@ void main_fill_tree_view_after_remove() { 2,main_config.soft_raw_limit[index], 3,main_config.hard_raw_limit[index], 4,main_config.swap[index], - 5,main_config.cpu_limit[index], - 6,main_config.i_o_limit_read[index], - 7,main_config.i_o_limit_write[index],-1); + 5,main_config.cpu_limit[index] + /*6,main_config.i_o_limit_read[index], + 7,main_config.i_o_limit_write[index],-1*/); } } @@ -1001,7 +1092,6 @@ void main_localization(main_window *widgets) { } int main(int argc, char *argv[]){ - // printf("%f\n", get_size_pow_memory(get_mem_total(), 3)); local=setlocale(LC_ALL, ""); textdomain (LocaleName); config_init(); @@ -1095,7 +1185,7 @@ int main(int argc, char *argv[]){ gtk_style_context_add_provider_for_screen(gdk_screen_get_default(), GTK_STYLE_PROVIDER(css), -1); - load_global_cfg(); + //load_global_cfg(); load_system_cfg(); gtk_main(); } diff --git a/source/ubl-settings-resourcequota.h b/source/ubl-settings-resourcequota.h index f84ced5..2b17f27 100755 --- a/source/ubl-settings-resourcequota.h +++ b/source/ubl-settings-resourcequota.h @@ -79,9 +79,10 @@ typedef struct config_str hard_raw_limit; config_str swap; config_str cpu_limit; - config_str i_o_limit_read; - config_str i_o_limit_write; - config_str disk; + config_str* i_o_limit_read; + config_str* i_o_limit_write; + config_str* disk_read; + config_str* disk_write; config_str array_del_line; int size_array_del_line; @@ -91,8 +92,8 @@ typedef struct int *hard_raw_limit_size; int *swap_size; int *cpu_limit_size; - int *i_o_limit_read_size; - int *i_o_limit_write_size; + int** i_o_limit_read_size; + int** i_o_limit_write_size; int size_tree_view; dictionary *load_global_cfg; @@ -214,4 +215,6 @@ void wrapper_all_save(); int template_format_str_save(dictionary *load_cfg, char *source_cmd, char* source_remove_cmd); char* template_format_str_remove_save(dictionary* load_cfg, char* source_remove_cmd); char* template_format_str_set_save(dictionary* load_cfg, char* source_set_cmd); -char* save_format_key(int index); \ No newline at end of file +char* save_format_key(int index); +void get_param_io_limit(char** arr_values, int index_start, int size, int index_n1, char *key_find); +char* format_io_limit_in_tree_view(config_str* disk, config_str* i_o_limit, int** i_o_limit_size, int index); \ No newline at end of file diff --git a/source/ubl-utils.c b/source/ubl-utils.c index a1205d2..fbcd15e 100644 --- a/source/ubl-utils.c +++ b/source/ubl-utils.c @@ -352,15 +352,51 @@ void philos_free_string_array(char ***array, int size) { if (size!= 0) { free(*array); (*array) = NULL; + } +} + +void philos_free_string_array_n3(char ****array, int size) { + if ((*array) == NULL || size == 0) { + return; } - + int index_to_l2 = 0; + for (int i = 0; i < size; i++){ + index_to_l2 = 0; + if ((*array)[i]!=NULL) { + while ((*array)[i][index_to_l2] != NULL) { + if ((*array)[i][index_to_l2] != NULL) { + free((*array)[i][index_to_l2]); + index_to_l2++; + } + + } + } + free((*array)[i]); + + } + if (size!= 0) { + free(*array); + (*array) = NULL; + } } + void philos_free_int_array(int **array, int size) { if (size!= 0) { free(*array); *array = NULL; } - +} +void philos_free_int_array_n2(int ***array, int size) { + if ((*array) == NULL || size == 0) { + return; + } + for (int i = 0; i < size; i++){ + free((*array)[i]); + } + if (size!= 0) { + free(*array); + (*array) = NULL; + } } /**[EN] * @@ -780,7 +816,7 @@ config_str yon_char_parsed_new (config_str old, int *old_size, ...){ * Добавляет строку [string] в конец массива строк [parsed] с длинной [size]. */ config_str yon_char_parsed_append(config_str parsed, int *size, char *string){ - config_str new_parsed=realloc(parsed,(*size+1)*sizeof(char*)); + config_str new_parsed=yon_remalloc(parsed,(*size+1)*sizeof(char*)); new_parsed[(*size)]=yon_char_new(string); (*size)++; return new_parsed; @@ -1053,12 +1089,7 @@ int yon_launch(thread_output *thread) } int* philos_int_append(int* array, int* size, int value) { - if (array == NULL) { - array = (int*) malloc((*size+1) * sizeof(int)); - } - else { - array = (int*) realloc(array, ((*size)+1)*sizeof(int)); - } + array = yon_remalloc(array, (*size+1)*sizeof(int)); array[(*size)] = value; (*size)++; return array; diff --git a/source/ubl-utils.h b/source/ubl-utils.h index d8fe781..eb116a5 100644 --- a/source/ubl-utils.h +++ b/source/ubl-utils.h @@ -19,6 +19,8 @@ #endif #define DesktopPath "/usr/share/applications/" +#define yon_remalloc(pointer, size) (!pointer) ? malloc(size) : realloc(pointer, size) + #define for_dictionaries(obj, obj1) for (obj = obj1->first; obj != NULL; obj = obj->next) #define new(type) malloc(sizeof(type)) @@ -128,6 +130,10 @@ char *yon_char_get_augumented(char *source, char *append); void philos_free_string_array(char ***array, int size); +void philos_free_string_array_n3(char ****array, int size); + +void philos_free_int_array_n2(int ***array, int size); + void philos_free_int_array(int **array, int size); char *yon_char_new(char *chr); diff --git a/ubl-settings-resourcequota.glade b/ubl-settings-resourcequota.glade index 42674c7..182e604 100644 --- a/ubl-settings-resourcequota.glade +++ b/ubl-settings-resourcequota.glade @@ -72,6 +72,7 @@ True False + center 90 @@ -83,7 +84,7 @@ 5 6 6 - 69 + 64 com.ublinux.ubl-settings-resourcequota