From 8475151e9f69ae4d3eae21698b773e26e07c00fd Mon Sep 17 00:00:00 2001 From: Igor Belitskiy Date: Tue, 30 May 2023 17:58:17 +0600 Subject: [PATCH 01/91] fix --- source/ubl-settings-resourcequota.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/source/ubl-settings-resourcequota.c b/source/ubl-settings-resourcequota.c index 613dbc6..981fa38 100644 --- a/source/ubl-settings-resourcequota.c +++ b/source/ubl-settings-resourcequota.c @@ -291,7 +291,7 @@ void str_split_key(char* value, int index) { index--; main_config.type_quota_size = philos_int_append(main_config.type_quota_size, &index, 4); index--; - main_config.quota_volume = yon_char_parsed_append(main_config.type_quota, &index, STR_PROCESS); + main_config.type_quota = yon_char_parsed_append(main_config.type_quota, &index, STR_PROCESS); index--; } else if (strstr(value, ".service") != NULL) { @@ -299,7 +299,7 @@ void str_split_key(char* value, int index) { index--; main_config.type_quota_size = philos_int_append(main_config.type_quota_size, &index, 3); index--; - main_config.quota_volume = yon_char_parsed_append(main_config.type_quota, &index, STR_SLICE); + main_config.type_quota = yon_char_parsed_append(main_config.type_quota, &index, STR_SLICE); index--; } else { @@ -307,7 +307,7 @@ void str_split_key(char* value, int index) { index--; main_config.type_quota_size = philos_int_append(main_config.type_quota_size, &index, -1); index--; - main_config.quota_volume = yon_char_parsed_append(main_config.type_quota, &index, "-"); + main_config.type_quota = yon_char_parsed_append(main_config.type_quota, &index, "-"); index--; } @@ -322,7 +322,7 @@ void str_split_key(char* value, int index) { index--; main_config.quota_volume = yon_char_parsed_append(main_config.quota_volume, &index, value); index--; - main_config.quota_volume = yon_char_parsed_append(main_config.type_quota, &index, STR_USER); + main_config.type_quota = yon_char_parsed_append(main_config.type_quota, &index, STR_USER); index--; } // Группа @@ -331,7 +331,7 @@ void str_split_key(char* value, int index) { index--; main_config.quota_volume = yon_char_parsed_append(main_config.quota_volume, &index, value); index--; - main_config.quota_volume = yon_char_parsed_append(main_config.type_quota, &index, STR_GROUP); + main_config.type_quota = yon_char_parsed_append(main_config.type_quota, &index, STR_GROUP); index--; } } @@ -418,7 +418,7 @@ void set_pow_size(char* str_find, int* array_size, char** array_data , int index array_size = philos_int_append(array_size, &index, -1); index--; } - if (strstr(str_find,"-") == NULL) { + if (strstr(str_find, "-") == NULL) { if (str_find[0] == '\"') { yon_char_divide(str_find, 0); size_t length = strlen(str_find); @@ -518,6 +518,7 @@ void fill_tree_view(int start, int size) { 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], + // === NULL === Ошибка 2,main_config.soft_raw_limit[index], 3,main_config.hard_raw_limit[index], 4,main_config.swap[index], -- 2.35.1 From 6d4a32bc2283a71bbcb8b5467e46b3168f0418b2 Mon Sep 17 00:00:00 2001 From: Igor Belitskiy Date: Wed, 31 May 2023 11:25:38 +0600 Subject: [PATCH 02/91] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB=20=D0=B7=D0=B0=D0=B3=D1=80=D1=83=D0=B7=D0=BA=D1=83?= =?UTF-8?q?=20=D0=BA=D0=BE=D0=BD=D1=84=D0=B8=D0=B3=D1=83=D1=80=D0=B0=D1=86?= =?UTF-8?q?=D0=B8=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/ubl-settings-resourcequota.c | 94 +++++++++++++++++++---------- source/ubl-settings-resourcequota.h | 5 +- source/ubl-utils.c | 16 +++++ source/ubl-utils.h | 4 ++ 4 files changed, 86 insertions(+), 33 deletions(-) diff --git a/source/ubl-settings-resourcequota.c b/source/ubl-settings-resourcequota.c index 981fa38..8d88574 100644 --- a/source/ubl-settings-resourcequota.c +++ b/source/ubl-settings-resourcequota.c @@ -252,15 +252,39 @@ void main_update_information() { void load_system_cfg() { template_cfg(CMD_LOAD_SYSTEM); + yon_ubl_status_box_render(LOCAL_LOAD_SUCCESS, BACKGROUND_IMAGE_SUCCESS_TYPE); } void load_global_cfg() { template_cfg(CMD_LOAD_GLOBAL); + yon_ubl_status_box_render(GLOBAL_LOAD_SUCCESS,BACKGROUND_IMAGE_SUCCESS_TYPE); +} + +void clear_array() { + philos_free_string_array(&main_config.type_quota, main_config.size_tree_view); + philos_free_string_array(&main_config.quota_volume , main_config.size_tree_view); + 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_int_array(&main_config.type_quota_size, main_config.size_tree_view); + philos_free_int_array(&main_config.quota_volume_size, main_config.size_tree_view); + philos_free_int_array(&main_config.soft_raw_limit_size, main_config.size_tree_view); + 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); + gtk_list_store_clear(main_config.list); + main_config.size_tree_view = 0; } void template_cfg(char* cmd) { + clear_array(); int size = 0; - int index_quotas = 0; char** cfg = yon_config_load(cmd, &size); for (int index = 0; index < size; index++) { char* str_key_value = yon_char_new(cfg[index]); @@ -271,13 +295,13 @@ void template_cfg(char* cmd) { size_t length = strlen(str_key_value); str_key_value = yon_char_divide(str_key_value, length-2); } - str_split_key(str_key, index_quotas); - str_split_value(str_key_value, index); - index_quotas++; + str_split_key(str_key, main_config.size_tree_view); + str_split_value(str_key_value, main_config.size_tree_view); + main_config.size_tree_view++; } } - if (index_quotas != 0) { - fill_tree_view(0, size); + if (main_config.size_tree_view != 0) { + fill_tree_view(0, main_config.size_tree_view, 0); } @@ -352,70 +376,70 @@ void str_split_value(char* values, int index) { value = arr_values[index_1]; key = yon_char_divide_search(value, "=", -1); if (yon_char_find_count(key, "MemoryHigh") != 0) { - set_pow_size(value, main_config.soft_raw_limit_size, main_config.soft_raw_limit, index); + set_pow_size(value, &main_config.soft_raw_limit_size, &main_config.soft_raw_limit, index); } else { - set_pow_size("-", main_config.soft_raw_limit_size, main_config.soft_raw_limit, index); + set_pow_size("-", &main_config.soft_raw_limit_size, &main_config.soft_raw_limit, index); } if (yon_char_find_count(key, "MemoryMax") != 0) { - set_pow_size(value, main_config.hard_raw_limit_size, main_config.hard_raw_limit, index); + set_pow_size(value, &main_config.hard_raw_limit_size, &main_config.hard_raw_limit, index); } else { - set_pow_size("-", main_config.hard_raw_limit_size, main_config.hard_raw_limit, index); + set_pow_size("-", &main_config.hard_raw_limit_size, &main_config.hard_raw_limit, index); } if (yon_char_find_count(key, "MemorySwapMax") != 0) { - set_pow_size(value, main_config.swap_size, main_config.swap, index); + set_pow_size(value, &main_config.swap_size, &main_config.swap, index); } else { - set_pow_size("-", main_config.swap_size, main_config.swap, index); + set_pow_size("-", &main_config.swap_size, &main_config.swap, index); } if (yon_char_find_count(key, "CPUQuota") != 0) { - set_pow_size(value, main_config.cpu_limit_size, main_config.cpu_limit, index); + set_pow_size(value, &main_config.cpu_limit_size, &main_config.cpu_limit, index); } else { - set_pow_size("-", main_config.cpu_limit_size, main_config.cpu_limit, index); + set_pow_size("-", &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); + set_pow_size(value, &main_config.i_o_limit_read_size, &main_config.i_o_limit_read, index); } else { - 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_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); + set_pow_size(value, &main_config.i_o_limit_write_size, &main_config.i_o_limit_write, index); } else { - set_pow_size("-", main_config.i_o_limit_write_size, main_config.i_o_limit_write, index); + set_pow_size("-", &main_config.i_o_limit_write_size, &main_config.i_o_limit_write, index); } } } -void set_pow_size(char* str_find, int* array_size, char** array_data , int index) { +void set_pow_size(char* str_find, int** array_size, char*** array_data , int index) { if (strstr(str_find,"K") != NULL) { - array_size = philos_int_append(array_size, &index, 0); + *array_size = philos_int_append(*array_size, &index, 0); index--; } else if (strstr(str_find,"M") != NULL) { - array_size = philos_int_append(array_size, &index, 1); + *array_size = philos_int_append(*array_size, &index, 1); index--; } else if (strstr(str_find,"G") != NULL) { - array_size = philos_int_append(array_size, &index, 2); + *array_size = philos_int_append(*array_size, &index, 2); index--; } else if (strstr(str_find,"T") != NULL) { - array_size = philos_int_append(array_size, &index, 3); + *array_size = philos_int_append(*array_size, &index, 3); index--; } else if (strstr(str_find,"\%") != NULL) { - array_size = philos_int_append(array_size, &index, -1); + *array_size = philos_int_append(*array_size, &index, -1); index--; } else if (strstr(str_find,"\"") != NULL) { } else if (strstr(str_find,"-") != NULL) { - array_size = philos_int_append(array_size, &index, -1); + *array_size = philos_int_append(*array_size, &index, -1); index--; } if (strstr(str_find, "-") == NULL) { @@ -425,11 +449,11 @@ void set_pow_size(char* str_find, int* array_size, char** array_data , int index str_find = yon_char_divide(str_find, length-2); } size_t length = strlen(str_find); - str_find = yon_char_divide(str_find, length-2); - array_data = yon_char_parsed_append(array_data, &index, str_find); + str_find = yon_char_divide(str_find, length-1); + *array_data = yon_char_parsed_append(*array_data, &index, str_find); } else { - array_data = yon_char_parsed_append(array_data, &index, "-"); + *array_data = yon_char_parsed_append(*array_data, &index, "-"); } } @@ -509,16 +533,21 @@ void tree_view_add(int index) { 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); + fill_tree_view(main_config.size_tree_view-1, main_config.size_tree_view, 1); } -void fill_tree_view(int start, int size) { +void fill_tree_view(int start, int size, int flag_gui_add) { + GtkTreeModel *model = GTK_TREE_MODEL(main_config.list); + if (flag_gui_add == 0) { + g_object_ref(main_config.list); + 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], - // === NULL === Ошибка + // === NULL === О 2,main_config.soft_raw_limit[index], 3,main_config.hard_raw_limit[index], 4,main_config.swap[index], @@ -526,6 +555,9 @@ void fill_tree_view(int start, int size) { 6,main_config.i_o_limit_read[index], 7,main_config.i_o_limit_write[index],-1); } + if (flag_gui_add != 0) { + gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->treeViewMain), model); + } } int tree_view_edit() { diff --git a/source/ubl-settings-resourcequota.h b/source/ubl-settings-resourcequota.h index 57a56b5..2d4447a 100755 --- a/source/ubl-settings-resourcequota.h +++ b/source/ubl-settings-resourcequota.h @@ -181,6 +181,7 @@ void load_system_cfg(); void load_global_cfg(); void template_cfg(char* cmd); void str_split_value(char* values, int index); -void set_pow_size(char* str_find, int* array_size, char** array_data, int index); +void set_pow_size(char* str_find, int** array_size, char*** array_data, int index); void str_split_key(char* value, int index); -void fill_tree_view(int start, int size); \ No newline at end of file +void fill_tree_view(int start, int size, int flag_gui_add); +void clear_array(); \ No newline at end of file diff --git a/source/ubl-utils.c b/source/ubl-utils.c index dd61852..7fed624 100644 --- a/source/ubl-utils.c +++ b/source/ubl-utils.c @@ -305,7 +305,23 @@ char *yon_char_get_augumented(char *source, char *append) else return NULL; } +void philos_free_string_array(char ***array, int size) { + for (int i = 0; i < size; i++){ + 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; + } +} /**[EN] * * creates new char string by copying another char. diff --git a/source/ubl-utils.h b/source/ubl-utils.h index acd60c5..e05164c 100644 --- a/source/ubl-utils.h +++ b/source/ubl-utils.h @@ -120,6 +120,10 @@ void *yon_dictionary_free_all(dictionary *dictionary,void (data_manipulation)(vo char* philos_str_remove(char *str, const char *sub); char *yon_char_get_augumented(char *source, char *append); +void philos_free_string_array(char ***array, int size); + +void philos_free_int_array(int **array, int size); + char *yon_char_new(char *chr); char *yon_char_unite(char *source, ...); -- 2.35.1 From 1fd2f78f256bd6245ad0034a37c848412d42fe88 Mon Sep 17 00:00:00 2001 From: Igor Belitskiy Date: Wed, 31 May 2023 15:08:59 +0600 Subject: [PATCH 03/91] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=BE=20=D0=BE=D1=82=D0=BE=D0=B1=D1=80=D0=B0?= =?UTF-8?q?=D0=B6=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=B4=D0=B0=D0=BD=D0=BD=D1=8B?= =?UTF-8?q?=D1=85=20=D0=B2=20=D1=82=D0=B0=D0=B1=D0=BB=D0=B8=D1=86=D0=B5=20?= =?UTF-8?q?=D0=BF=D1=80=D0=B8=20=D0=B7=D0=B0=D0=B3=D1=80=D1=83=D0=B7=D0=BA?= =?UTF-8?q?=D0=B8=20=D0=BA=D0=BE=D0=BD=D1=84=D0=B8=D0=B3=D1=83=D1=80=D0=B0?= =?UTF-8?q?=D1=86=D0=B8=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/ubl-settings-resourcequota.c | 76 ++++++++++++++++------------- source/ubl-settings-resourcequota.h | 4 +- source/ubl-strings.h | 5 ++ source/view_edit.c | 4 +- ubl-settings-resourcequota.glade | 18 +++---- 5 files changed, 62 insertions(+), 45 deletions(-) diff --git a/source/ubl-settings-resourcequota.c b/source/ubl-settings-resourcequota.c index 8d88574..b68601b 100644 --- a/source/ubl-settings-resourcequota.c +++ b/source/ubl-settings-resourcequota.c @@ -269,6 +269,7 @@ void clear_array() { 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_int_array(&main_config.type_quota_size, main_config.size_tree_view); philos_free_int_array(&main_config.quota_volume_size, main_config.size_tree_view); @@ -302,9 +303,19 @@ void template_cfg(char* cmd) { } if (main_config.size_tree_view != 0) { fill_tree_view(0, main_config.size_tree_view, 0); - } - - + } +} + +void init_cfg_array(int index) { + main_config.disk = yon_char_parsed_append(main_config.disk, &index, "-"); + index--; + set_pow_size("-", &main_config.cpu_limit_size, &main_config.cpu_limit, index); + set_pow_size("-", &main_config.cpu_limit_size, &main_config.cpu_limit, 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* value, int index) { yon_char_divide_search(value, "[", -1); @@ -371,6 +382,7 @@ void str_split_value(char* values, int index) { if (arr_values == NULL) { return; } + init_cfg_array(index); char* value_i = NULL; for (int index_1 = 0; index_1 < size; index_1++) { value = arr_values[index_1]; @@ -378,85 +390,84 @@ void str_split_value(char* values, int index) { if (yon_char_find_count(key, "MemoryHigh") != 0) { set_pow_size(value, &main_config.soft_raw_limit_size, &main_config.soft_raw_limit, index); } - else { - set_pow_size("-", &main_config.soft_raw_limit_size, &main_config.soft_raw_limit, index); - } if (yon_char_find_count(key, "MemoryMax") != 0) { set_pow_size(value, &main_config.hard_raw_limit_size, &main_config.hard_raw_limit, index); } - else { - set_pow_size("-", &main_config.hard_raw_limit_size, &main_config.hard_raw_limit, index); - } if (yon_char_find_count(key, "MemorySwapMax") != 0) { set_pow_size(value, &main_config.swap_size, &main_config.swap, index); } - else { - set_pow_size("-", &main_config.swap_size, &main_config.swap, index); - } if (yon_char_find_count(key, "CPUQuota") != 0) { set_pow_size(value, &main_config.cpu_limit_size, &main_config.cpu_limit, index); } - else { - set_pow_size("-", &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); } - else { - set_pow_size("-", &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); } - else { - set_pow_size("-", &main_config.i_o_limit_write_size, &main_config.i_o_limit_write, index); - } } } 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); + } + } + } + size_t length = strlen(str_find); if (strstr(str_find,"K") != NULL) { *array_size = philos_int_append(*array_size, &index, 0); + str_find = yon_char_divide(str_find, length-1); + str_find = yon_char_unite(str_find, " ", STR_KB); index--; } else if (strstr(str_find,"M") != NULL) { *array_size = philos_int_append(*array_size, &index, 1); + str_find = yon_char_divide(str_find, length-1); + str_find = yon_char_unite(str_find," ", STR_MB); index--; } else if (strstr(str_find,"G") != NULL) { *array_size = philos_int_append(*array_size, &index, 2); + str_find = yon_char_divide(str_find, length-1); + str_find = yon_char_unite(str_find," ", STR_GB); index--; } else if (strstr(str_find,"T") != NULL) { *array_size = philos_int_append(*array_size, &index, 3); + str_find = yon_char_divide(str_find, length-1); + str_find = yon_char_unite(str_find," ", STR_TB); index--; } else if (strstr(str_find,"\%") != NULL) { *array_size = philos_int_append(*array_size, &index, -1); + str_find = yon_char_divide(str_find, length-1); index--; - } - else if (strstr(str_find,"\"") != NULL) { - } else if (strstr(str_find,"-") != NULL) { *array_size = philos_int_append(*array_size, &index, -1); index--; } - if (strstr(str_find, "-") == NULL) { + if (strstr(str_find, "-") != NULL) { + *array_data = yon_char_parsed_append(*array_data, &index, "-"); + } + else { if (str_find[0] == '\"') { yon_char_divide(str_find, 0); size_t length = strlen(str_find); str_find = yon_char_divide(str_find, length-2); } - size_t length = strlen(str_find); - str_find = yon_char_divide(str_find, length-1); *array_data = yon_char_parsed_append(*array_data, &index, str_find); - } - else { - *array_data = yon_char_parsed_append(*array_data, &index, "-"); - } -} + } +} void main_cbx_2_event() { int menu_id = gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->cbtMainInfo)); @@ -547,7 +558,6 @@ void fill_tree_view(int start, int size, int flag_gui_add) { 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], - // === NULL === О 2,main_config.soft_raw_limit[index], 3,main_config.hard_raw_limit[index], 4,main_config.swap[index], diff --git a/source/ubl-settings-resourcequota.h b/source/ubl-settings-resourcequota.h index 2d4447a..7bb9f2e 100755 --- a/source/ubl-settings-resourcequota.h +++ b/source/ubl-settings-resourcequota.h @@ -73,6 +73,7 @@ typedef struct { config_str cpu_limit; config_str i_o_limit_read; config_str i_o_limit_write; + config_str disk; int* type_quota_size; int* quota_volume_size; @@ -184,4 +185,5 @@ void str_split_value(char* values, int index); void set_pow_size(char* str_find, int** array_size, char*** array_data, int index); void str_split_key(char* value, int index); void fill_tree_view(int start, int size, int flag_gui_add); -void clear_array(); \ No newline at end of file +void clear_array(); +void init_cfg_array(int index); diff --git a/source/ubl-strings.h b/source/ubl-strings.h index 2d732c4..b5cca97 100644 --- a/source/ubl-strings.h +++ b/source/ubl-strings.h @@ -28,6 +28,11 @@ #define STR_PROCESS _("Process") #define STR_SLICE _("Slice") +#define STR_KB _("Kb") +#define STR_MB _("Mb") +#define STR_GB _("Gb") +#define STR_TB _("Tb") + #define GLOBAL_LOAD_SUCCESS _("Global configuration loading succseeded.") #define LOCAL_LOAD_SUCCESS _("Local configuration loading succseeded.") diff --git a/source/view_edit.c b/source/view_edit.c index 7127154..6695813 100644 --- a/source/view_edit.c +++ b/source/view_edit.c @@ -201,7 +201,7 @@ void edit_set_hard(char* str_value, int pow_mem) { void edit_set_limit_cpu(char* str_value, int pow_mem) { edit_temp_set(str_value,pow_mem, edit_widgets->chkCPULimitEdit, edit_widgets->spinCPULimitEdit, - edit_widgets->lblCPULimitEdit); + NULL); } void edit_set_limit_swap(char* str_value, int pow_mem) { edit_temp_set(str_value,pow_mem, edit_widgets->chkPaddingFLEdit, @@ -211,7 +211,7 @@ void edit_set_limit_swap(char* str_value, int pow_mem) { void edit_temp_set(char* str_value, int pow_mem, GtkWidget* cheek, GtkWidget* spin, GtkWidget* combo_box_text) { char* search = "-"; char* mem_size_pow = yon_char_new(str_value); - if (yon_char_find_count(mem_size_pow, search) == 0) { + if (strstr(mem_size_pow, search) == 0) { int value = atoi(yon_char_divide_search(mem_size_pow, " ", -1)); gtk_spin_button_set_value(GTK_SPIN_BUTTON(spin), value); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(cheek), 1); diff --git a/ubl-settings-resourcequota.glade b/ubl-settings-resourcequota.glade index c9045b9..1107ca6 100644 --- a/ubl-settings-resourcequota.glade +++ b/ubl-settings-resourcequota.glade @@ -174,48 +174,48 @@ 1 - 1000 + 100000 1 1 10 - 100 + 10000 1 10 - 100 + 10000 1 10 - 1023 + 1000023 1 10 - 100 + 10000 1 10 - 1023 + 100023 1 10 - 1023 + 100023 1 10 - 100 + 10000 1 10 - 100 + 10000 1 10 -- 2.35.1 From 990226175f0452e0a05d9b058bf07ee8c49417b5 Mon Sep 17 00:00:00 2001 From: Igor Belitskiy Date: Wed, 31 May 2023 17:41:38 +0600 Subject: [PATCH 04/91] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB=20=D1=87=D0=B0=D1=81=D1=82=D1=8C=20=D1=83=D1=82?= =?UTF-8?q?=D0=B5=D1=87=D0=B5=D0=BA=20=D0=BF=D0=B0=D0=BC=D1=8F=D1=82=D0=B8?= =?UTF-8?q?=20=D0=BF=D1=80=D0=B8=20=D0=B7=D0=B0=D0=B3=D1=80=D1=83=D0=B7?= =?UTF-8?q?=D0=BA=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/ubl-settings-resourcequota.c | 3 +++ source/ubl-utils.c | 3 +++ source/view_edit.c | 4 ++-- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/source/ubl-settings-resourcequota.c b/source/ubl-settings-resourcequota.c index b68601b..61a2765 100644 --- a/source/ubl-settings-resourcequota.c +++ b/source/ubl-settings-resourcequota.c @@ -528,6 +528,8 @@ void tree_view_add(int index) { 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--; @@ -695,6 +697,7 @@ void wrapper_edit_show() { 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_event(get_widget_edit()); edit_set_limit_swap(main_config.swap[index], main_config.swap_size[index]); // edit_set_select_device(main_config.cpu_limit[index]); g_signal_connect(G_OBJECT(get_widget_edit()->btnSaveEditSave), "clicked", G_CALLBACK(main_edit_btn_save), NULL); diff --git a/source/ubl-utils.c b/source/ubl-utils.c index 7fed624..288a5df 100644 --- a/source/ubl-utils.c +++ b/source/ubl-utils.c @@ -306,6 +306,9 @@ char *yon_char_get_augumented(char *source, char *append) return NULL; } void philos_free_string_array(char ***array, int size) { + if ((*array) == NULL) { + return; + } for (int i = 0; i < size; i++){ free((*array)[i]); } diff --git a/source/view_edit.c b/source/view_edit.c index 6695813..c20cb18 100644 --- a/source/view_edit.c +++ b/source/view_edit.c @@ -36,7 +36,7 @@ edit_window *edit_setup_window(char* glade_path){ edit_widgets->cbtEditWrite = yon_gtk_builder_get_widget(builder,"cbtEditWrite"); edit_widgets->entryEditCmd = yon_gtk_builder_get_widget(builder,"entryEditCmd"); device_fill_disk(edit_widgets->cbtEditDevice); - edit_event(edit_widgets); + // edit_event(edit_widgets); edit_localization(edit_widgets); } return edit_widgets; @@ -226,7 +226,7 @@ void edit_temp_set(char* str_value, int pow_mem, GtkWidget* cheek, GtkWidget* sp } } void edit_generate_cmd() { - char* str_cmd = ""; + char* str_cmd = " "; char* split_simvol = g_malloc0(sizeof(char)*2); int size_bite = 0; if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(edit_widgets->chkSoftRestrictionEdit))) { -- 2.35.1 From 2994580efe93c4a5d35fcbf1fe6ba2244462081e Mon Sep 17 00:00:00 2001 From: Igor Belitskiy Date: Mon, 5 Jun 2023 11:13:46 +0600 Subject: [PATCH 05/91] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB=20=D0=B2=D1=8B=D0=B2=D0=BE=D0=B4=20=D0=B2=20treeVi?= =?UTF-8?q?ew?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/ubl-settings-resourcequota.c | 97 +++++++++++++++++++++++------ source/ubl-settings-resourcequota.h | 8 ++- source/ubl-utils.c | 31 +++++---- source/ubl-utils.h | 2 +- source/view_edit.c | 2 +- 5 files changed, 103 insertions(+), 37 deletions(-) diff --git a/source/ubl-settings-resourcequota.c b/source/ubl-settings-resourcequota.c index 61a2765..41d4a20 100644 --- a/source/ubl-settings-resourcequota.c +++ b/source/ubl-settings-resourcequota.c @@ -251,12 +251,12 @@ void main_update_information() { } void load_system_cfg() { - template_cfg(CMD_LOAD_SYSTEM); + template_cfg(CMD_LOAD_SYSTEM, main_config.load_system_cfg); yon_ubl_status_box_render(LOCAL_LOAD_SUCCESS, BACKGROUND_IMAGE_SUCCESS_TYPE); } void load_global_cfg() { - template_cfg(CMD_LOAD_GLOBAL); + template_cfg(CMD_LOAD_GLOBAL, main_config.load_global_cfg); yon_ubl_status_box_render(GLOBAL_LOAD_SUCCESS,BACKGROUND_IMAGE_SUCCESS_TYPE); } @@ -283,7 +283,7 @@ void clear_array() { main_config.size_tree_view = 0; } -void template_cfg(char* cmd) { +void template_cfg(char* cmd, dictionary* load_cfg) { clear_array(); int size = 0; char** cfg = yon_config_load(cmd, &size); @@ -296,11 +296,13 @@ void template_cfg(char* cmd) { size_t length = strlen(str_key_value); str_key_value = yon_char_divide(str_key_value, length-2); } - str_split_key(str_key, main_config.size_tree_view); + 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); + str_split_key(str_key, main_config.size_tree_view); main_config.size_tree_view++; } } + if (main_config.size_tree_view != 0) { fill_tree_view(0, main_config.size_tree_view, 0); } @@ -309,6 +311,8 @@ void template_cfg(char* cmd) { void init_cfg_array(int 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); set_pow_size("-", &main_config.cpu_limit_size, &main_config.cpu_limit, index); set_pow_size("-", &main_config.soft_raw_limit_size, &main_config.soft_raw_limit, index); @@ -317,7 +321,9 @@ void init_cfg_array(int 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* value, int index) { + +void str_split_key(char* source_value, int index) { + char* value = yon_char_new(source_value); yon_char_divide_search(value, "[", -1); value = yon_char_divide_search(value, "]", -1); if (strstr(value, ".") != NULL) { @@ -340,8 +346,6 @@ void str_split_key(char* value, int index) { else { main_config.quota_volume = yon_char_parsed_append(main_config.quota_volume, &index, value); index--; - main_config.type_quota_size = philos_int_append(main_config.type_quota_size, &index, -1); - index--; main_config.type_quota = yon_char_parsed_append(main_config.type_quota, &index, "-"); index--; } @@ -352,8 +356,8 @@ void str_split_key(char* value, int index) { char** arr_users = philos_list_user(&user_size); for (int user_index = 0; user_index < user_size; user_index++) { // Пользователь - if (strcmp(arr_users[user_index], value) != 0) { - main_config.type_quota_size = philos_int_append(main_config.type_quota_size, &index, 0); + if (strstr(arr_users[user_index], value) != NULL) { + main_config.type_quota_size = philos_int_append(main_config.type_quota_size, &index, -1); index--; main_config.quota_volume = yon_char_parsed_append(main_config.quota_volume, &index, value); index--; @@ -371,6 +375,7 @@ void str_split_key(char* value, int index) { } } } + } void str_split_value(char* values, int index) { @@ -425,25 +430,25 @@ void set_pow_size(char* str_find, int** array_size, char*** array_data , int ind if (strstr(str_find,"K") != NULL) { *array_size = philos_int_append(*array_size, &index, 0); str_find = yon_char_divide(str_find, length-1); - str_find = yon_char_unite(str_find, " ", STR_KB); + str_find = yon_char_unite(str_find, " ", STR_KB, NULL); index--; } else if (strstr(str_find,"M") != NULL) { *array_size = philos_int_append(*array_size, &index, 1); str_find = yon_char_divide(str_find, length-1); - str_find = yon_char_unite(str_find," ", STR_MB); + str_find = yon_char_unite(str_find," ", STR_MB, NULL); index--; } else if (strstr(str_find,"G") != NULL) { *array_size = philos_int_append(*array_size, &index, 2); str_find = yon_char_divide(str_find, length-1); - str_find = yon_char_unite(str_find," ", STR_GB); + str_find = yon_char_unite(str_find," ", STR_GB, NULL); index--; } else if (strstr(str_find,"T") != NULL) { *array_size = philos_int_append(*array_size, &index, 3); str_find = yon_char_divide(str_find, length-1); - str_find = yon_char_unite(str_find," ", STR_TB); + str_find = yon_char_unite(str_find," ", STR_TB, NULL); index--; } else if (strstr(str_find,"\%") != NULL) { @@ -720,8 +725,13 @@ void tree_view_del_line() { GtkTreeModel *model = GTK_TREE_MODEL(main_config.list); GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->treeViewMain)); if(gtk_tree_selection_get_selected(selection, &model, &iter)) { - char* str_iter = gtk_tree_model_get_string_from_iter(model, &iter); + char* str_iter = yon_char_new(gtk_tree_model_get_string_from_iter(model, &iter)); index = atoi(str_iter); + g_object_ref(main_config.list); + gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->treeViewMain), NULL); + gtk_list_store_clear(main_config.list); + main_fill_tree_view_after_remove(); + gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->treeViewMain), model); main_config.type_quota = yon_char_parsed_shrink(main_config.type_quota, &main_config.size_tree_view,index); main_config.size_tree_view++; main_config.quota_volume = yon_char_parsed_shrink(main_config.quota_volume, &main_config.size_tree_view,index); @@ -754,14 +764,59 @@ void tree_view_del_line() { 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); - g_object_ref(main_config.list); - gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->treeViewMain), NULL); - gtk_list_store_clear(main_config.list); - main_fill_tree_view_after_remove(); - gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->treeViewMain), model); } - else { +} +void template_format_save(dictionary* load_temp_cfg) { + if (load_temp_cfg == NULL) { + return; + } + for (size_t i = 0; i < main_config.size_tree_view; i++) { + char* key = NULL; + char* value = ""; + char split_simvol[2] = {0}; + if (strstr(main_config.quota_volume[i], "-") == NULL) { + key = yon_char_unite("CGROUP_QUOTA[", &main_config.type_quota[i] , "]", NULL); + } + else { + key = yon_char_unite("CGROUP_QUOTA[", &main_config.type_quota[i], ".", &main_config.quota_volume[i], "]", NULL); + } + split_simvol[0] = 0; + split_simvol[1] = 0; + if (strstr(main_config.soft_raw_limit[i], "-") != NULL) { + value = yon_char_unite(value, main_config.soft_raw_limit[i], NULL); + split_simvol[0] = ','; + split_simvol[1] = '\0'; + } + if (strstr(main_config.hard_raw_limit[i], "-") != NULL) { + value = yon_char_unite(value, split_simvol, main_config.hard_raw_limit[i], NULL); + split_simvol[0] = ','; + split_simvol[1] = '\0'; + } + if (strstr(main_config.swap[i], "-") != NULL) { + value = yon_char_unite(value, split_simvol, main_config.swap[i], NULL); + split_simvol[0] = ','; + split_simvol[1] = '\0'; + } + if (strstr(main_config.cpu_limit[i], "-") != NULL) { + value = yon_char_unite(value, split_simvol, main_config.cpu_limit[i], NULL); + split_simvol[0] = ','; + split_simvol[1] = '\0'; + } + if (strstr(main_config.i_o_limit_read[i], "-") != NULL) { + value = yon_char_unite(value, split_simvol, main_config.i_o_limit_read[i], NULL); + split_simvol[0] = ','; + split_simvol[1] = '\0'; + } + if (strstr(main_config.i_o_limit_write[i], "-") != NULL) { + value = yon_char_unite(value, split_simvol, main_config.i_o_limit_write[i], NULL); + split_simvol[0] = ','; + split_simvol[1] = '\0'; + } + main_config.save_cfg_gui = yon_dictionary_create_with_data_connected(main_config.save_cfg_gui, key, yon_char_new(value)); + free(key); + free(value); + } } @@ -866,6 +921,8 @@ int main(int argc, char *argv[]){ gtk_init(&argc,&argv); device_disk_parsed(); main_window *widgets = setup_window(); + main_config.load_global_cfg = yon_dictionary_create_empty(); + main_config.load_system_cfg = yon_dictionary_create_empty(); main_update_information(); filters_init_flag(); filters_setup_window(glade_path); diff --git a/source/ubl-settings-resourcequota.h b/source/ubl-settings-resourcequota.h index 7bb9f2e..da8eae9 100755 --- a/source/ubl-settings-resourcequota.h +++ b/source/ubl-settings-resourcequota.h @@ -62,7 +62,6 @@ typedef struct { config_str load_system_key; config_str load_global_key; - config_str cfg_gui_key; render_data status_render; config_str type_quota; @@ -84,6 +83,9 @@ typedef struct { int* i_o_limit_read_size; int* i_o_limit_write_size; int size_tree_view; + dictionary* load_global_cfg; + dictionary* load_system_cfg; + dictionary* save_cfg_gui; } config; typedef struct { @@ -180,10 +182,10 @@ void tree_view_del_line(); void main_fill_tree_view_after_remove(); void load_system_cfg(); void load_global_cfg(); -void template_cfg(char* cmd); +void template_cfg(char* cmd, dictionary* load_cfg); void str_split_value(char* values, int index); void set_pow_size(char* str_find, int** array_size, char*** array_data, int index); -void str_split_key(char* value, int index); +void str_split_key(char* source_value, int index); void fill_tree_view(int start, int size, int flag_gui_add); void clear_array(); void init_cfg_array(int index); diff --git a/source/ubl-utils.c b/source/ubl-utils.c index 288a5df..0f67570 100644 --- a/source/ubl-utils.c +++ b/source/ubl-utils.c @@ -568,11 +568,11 @@ char *yon_char_from_int(int int_to_convert) { int i = 1; float convert_check = (float)int_to_convert; - for (i = 1; convert_check > 10; i++) + for (i = 1; convert_check >= 10; i++) { convert_check = convert_check / 10; } - char *ch = malloc(i * sizeof(char) + 1); + char *ch = g_malloc0(i * sizeof(char) + 1); sprintf(ch, "%d", int_to_convert); return ch; } @@ -987,16 +987,23 @@ int* philos_int_append(int* array, int* size, int value) { } -int* remove_element_int_array(int* array, int* size, int index) { - int* temp = malloc(((*size) - 1) * sizeof(int)); - if (index != 0) - memcpy(temp, array, index * sizeof(int)); - - if (index != ((*size) - 1)) - memcpy(temp+index, array+index+1, ((*size) - index - 1) * sizeof(int)); - - free (array); - return temp; +int* remove_element_int_array(int* array, int* size, int item_to_delete) { + int *new_int_parsed=NULL; + new_int_parsed=malloc(sizeof(int*)*((*size)-1)); + int flag = 0; + for (int i=0;i < (*size);i++){ + if (i==item_to_delete) { + flag = 1; + } + if (flag == 0) { + memcpy(&(new_int_parsed[i]),&(array[i]),sizeof(int)); + } + else if (flag == 1 && i!=item_to_delete) { + memcpy(&(new_int_parsed[i]),&(array[i-1]),sizeof(int)); + } + } + (*size)=(*size)-1; + return new_int_parsed; } // Gtk functions diff --git a/source/ubl-utils.h b/source/ubl-utils.h index e05164c..b95c808 100644 --- a/source/ubl-utils.h +++ b/source/ubl-utils.h @@ -188,7 +188,7 @@ int yon_launch(thread_output *thread); int* philos_int_append(int* array, int* size, int value); -int* remove_element_int_array(int* array, int* size, int index); +int* remove_element_int_array(int* array, int* size, int item_to_delete); // Gtk functions #ifdef __GTK_H__ diff --git a/source/view_edit.c b/source/view_edit.c index c20cb18..eecd764 100644 --- a/source/view_edit.c +++ b/source/view_edit.c @@ -257,7 +257,7 @@ void edit_generate_cmd() { split_simvol[1] = '\0'; } if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(edit_widgets->chkCPULimitEdit))) { - size_bite = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(edit_widgets->spinCPULimitEdit)); + size_bite = (int)gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(edit_widgets->spinCPULimitEdit)); str_cmd = yon_char_unite(str_cmd, split_simvol, "CPUQuota=", yon_char_from_int(size_bite), -- 2.35.1 From 96e8ac3ecd119001dcc8c30887cade789ee4d818 Mon Sep 17 00:00:00 2001 From: Igor Belitskiy Date: Mon, 5 Jun 2023 12:15:31 +0600 Subject: [PATCH 06/91] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8?= =?UTF-8?q?=D0=BB=20=D0=B7=D0=B0=D0=BF=D0=BE=D0=BB=D0=BD=D0=B5=D0=BD=D0=B8?= =?UTF-8?q?=D0=B5=20gui=20=D1=81=D0=BF=D0=B8=D1=81=D0=BA=D0=BE=D0=BC=20?= =?UTF-8?q?=D0=B3=D1=80=D1=83=D0=BF=D0=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/ubl-settings-resourcequota.c | 34 ++++++++++++++++++++++------- source/ubl-settings-resourcequota.h | 6 +++++ source/ubl-utils.c | 13 ++++++++--- source/ubl-utils.h | 2 ++ source/view_add.c | 7 +++++- source/view_add.h | 3 +++ 6 files changed, 53 insertions(+), 12 deletions(-) diff --git a/source/ubl-settings-resourcequota.c b/source/ubl-settings-resourcequota.c index 41d4a20..5eebf41 100644 --- a/source/ubl-settings-resourcequota.c +++ b/source/ubl-settings-resourcequota.c @@ -191,8 +191,6 @@ main_window *setup_window(){ if (main_config.lock_save_global == 1 && main_config.lock_save_local == 1) { gtk_widget_set_sensitive(widgets->btnSaveCfg,0); } - - gtk_widget_show_all(widgets->Window); return widgets; } @@ -235,7 +233,8 @@ void main_update_information() { } else if (menu_id == 1) { - + fill_cmb_2 = yon_config_load(CMD_GET_GROUP, &size); + philos_array_string_remove_char(&fill_cmb_2, "\n", size); } else if (menu_id == 2) { @@ -666,6 +665,10 @@ void main_event(main_window *widgets) { g_signal_connect(G_OBJECT(widgets->treeViewMain), "cursor-changed", G_CALLBACK(tree_view_select), widgets); g_signal_connect(G_OBJECT(widgets->LoadGlobalMenuItem), "activate", G_CALLBACK(load_global_cfg), widgets); g_signal_connect(G_OBJECT(widgets->LoadLocalMenuItem), "activate", G_CALLBACK(load_system_cfg), widgets); + + g_signal_connect(G_OBJECT(widgets->SaveGlobalMenuItem), "activate", G_CALLBACK(wrapper_global_save), widgets); + g_signal_connect(G_OBJECT(widgets->SaveLocalMenuItem), "activate", G_CALLBACK(wrapper_system_save), widgets); + g_signal_connect(G_OBJECT(widgets->SaveMenuItem), "activate", G_CALLBACK(wrapper_all_save), widgets); /* g_signal_connect(G_OBJECT(widgets->LoadGlobalMenuItem),"activate",G_CALLBACK(),NULL); g_signal_connect(G_OBJECT(widgets->LoadLocalMenuItem),"activate",G_CALLBACK(),NULL); @@ -676,6 +679,7 @@ void main_event(main_window *widgets) { */ } void wrapper_add_show(GtkWidget *self) { + add_get_cmd_group(CMD_GET_GROUP); add_show(NULL, glade_path); g_signal_connect(G_OBJECT(get_widget_add()->btnSaveAddSave), "clicked", G_CALLBACK(main_add_btn_save), NULL); } @@ -766,11 +770,25 @@ void tree_view_del_line() { main_config.i_o_limit_write_size = remove_element_int_array(main_config.i_o_limit_write_size, &main_config.size_tree_view,index); } } +void wrapper_all_save() { + wrapper_template_save("all"); +} -void template_format_save(dictionary* load_temp_cfg) { - if (load_temp_cfg == NULL) { - return; - } +void wrapper_global_save() { + wrapper_template_save("global"); +} + +void wrapper_system_save() { + wrapper_template_save("system"); +} + +void wrapper_template_save(char* check_flag) { + puts(check_flag); + template_format_str_save(); +} + +void template_format_str_save() { + yon_dictionary_free_all(main_config.save_cfg_gui, NULL); for (size_t i = 0; i < main_config.size_tree_view; i++) { char* key = NULL; char* value = ""; @@ -816,7 +834,6 @@ void template_format_save(dictionary* load_temp_cfg) { main_config.save_cfg_gui = yon_dictionary_create_with_data_connected(main_config.save_cfg_gui, key, yon_char_new(value)); free(key); free(value); - } } @@ -923,6 +940,7 @@ int main(int argc, char *argv[]){ main_window *widgets = setup_window(); main_config.load_global_cfg = yon_dictionary_create_empty(); main_config.load_system_cfg = yon_dictionary_create_empty(); + main_config.save_cfg_gui = yon_dictionary_create_empty(); main_update_information(); filters_init_flag(); filters_setup_window(glade_path); diff --git a/source/ubl-settings-resourcequota.h b/source/ubl-settings-resourcequota.h index da8eae9..6c66328 100755 --- a/source/ubl-settings-resourcequota.h +++ b/source/ubl-settings-resourcequota.h @@ -34,6 +34,7 @@ #define LocaleName "ubl-settings-resourcequota" #define CMD_LOAD_GLOBAL "ubconfig --default --source global get security" #define CMD_LOAD_SYSTEM "ubconfig --default --source system get security" +#define CMD_GET_GROUP "cut -d: -f1 /etc/group" typedef char* string; string version_application = "1.0"; @@ -189,3 +190,8 @@ void str_split_key(char* source_value, int index); void fill_tree_view(int start, int size, int flag_gui_add); void clear_array(); void init_cfg_array(int index); +void wrapper_template_save(char* check_flag); +void wrapper_system_save(); +void wrapper_global_save(); +void wrapper_all_save(); +void template_format_str_save(); diff --git a/source/ubl-utils.c b/source/ubl-utils.c index 0f67570..b4acb04 100644 --- a/source/ubl-utils.c +++ b/source/ubl-utils.c @@ -26,6 +26,13 @@ void yon_dictionary_switch_to_last(dictionary **dict) } } +void philos_array_string_remove_char(char*** array, char* str_remove, int size) { + for (int index = 0; index < size; index++) { + (*array)[index] = yon_char_divide_search((*array)[index], str_remove, -1); + } + +} + dictionary *yon_dictionary_create_conneced(dictionary *targetdict) { targetdict = yon_dictionary_get_last(targetdict); @@ -403,9 +410,9 @@ config_str philos_list_user(int* size) { } break; } - if ((entry->pw_uid >= uid_min && entry->pw_uid < uid_max) || entry->pw_uid == 0) { - str_users = yon_char_parsed_append(str_users, size, entry->pw_name); - } + //if ((entry->pw_uid >= uid_min && entry->pw_uid < uid_max) || entry->pw_uid == 0) { + str_users = yon_char_parsed_append(str_users, size, entry->pw_name); + //} } endpwent(); return str_users; diff --git a/source/ubl-utils.h b/source/ubl-utils.h index b95c808..f8deecd 100644 --- a/source/ubl-utils.h +++ b/source/ubl-utils.h @@ -144,6 +144,8 @@ char **yon_char_parse(char *parameters, int *size, char *divider); char** philos_str_split(char *parameters, int *size, char *divider); +void philos_array_string_remove_char(char*** array, char* str_remove, int size); + char **yon_char_parsed_shrink(char **char_string, int *size, int item_to_delete); int yon_char_parsed_check_exist(char **parameters, int size, char *param); diff --git a/source/view_add.c b/source/view_add.c index c478654..e2dce85 100644 --- a/source/view_add.c +++ b/source/view_add.c @@ -84,6 +84,10 @@ void add_event(add_window *widgets) { } +void add_get_cmd_group(char* cmd_get_group) { + CMD_GET_GROUP = cmd_get_group; +} + void add_destroy(GtkWidget *self) { add_widgets = NULL; } @@ -212,7 +216,8 @@ void add_update_combo_box() { } else if (menu_id == 1) { - + fill_cmb_2 = yon_config_load(CMD_GET_GROUP, &size); + philos_array_string_remove_char(&fill_cmb_2, "\n", size); } else if (menu_id == 2) { diff --git a/source/view_add.h b/source/view_add.h index 261d998..068e5c9 100644 --- a/source/view_add.h +++ b/source/view_add.h @@ -13,8 +13,10 @@ #include #include "my_device.h" +static char* CMD_GET_GROUP; // Переменные typedef struct { + GtkWidget* Window; GtkWidget* btnSaveAddSave; GtkWidget* btnAddCancel; @@ -76,6 +78,7 @@ int add_get_limit_cpu_size(); int add_get_limit_swap_size(); int add_get_quota_object_size(); +void add_get_cmd_group(char* cmd_get_group); char* add_get_select_device_to_level_2(); void add_generate_cmd(); #endif \ No newline at end of file -- 2.35.1 From fedc0619c643790a4404ff0543d5cbb735c1def5 Mon Sep 17 00:00:00 2001 From: Igor Belitskiy Date: Mon, 5 Jun 2023 16:56:00 +0600 Subject: [PATCH 07/91] =?UTF-8?q?=D0=9D=D0=B0=D1=87=D0=B0=D1=82=D1=8B=20?= =?UTF-8?q?=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D1=8B=20=D0=BF=D0=BE=20=D1=80?= =?UTF-8?q?=D0=B5=D0=B0=D0=BB=D0=B8=D0=B7=D0=B0=D1=86=D0=B8=D0=B8=20=D1=81?= =?UTF-8?q?=D0=BE=D1=85=D1=80=D0=B0=D0=BD=D0=B5=D0=BD=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Makefile | 1 + source/ubl-settings-resourcequota.c | 158 +++++++++++++++++++--------- source/ubl-settings-resourcequota.h | 8 +- source/ubl-utils.c | 33 ++++++ source/ubl-utils.h | 4 + source/view_add.c | 2 +- source/view_edit.c | 2 +- 7 files changed, 155 insertions(+), 53 deletions(-) diff --git a/Makefile b/Makefile index af4d520..9178f69 100644 --- a/Makefile +++ b/Makefile @@ -97,6 +97,7 @@ uninstall: @echo "Uninstall: OK" install: check uninstall + @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 @echo "Install ..." @for FILE_PO in $(wildcard *.po); do \ LANG=$${FILE_PO##*_};LANG=$${LANG%.*}; \ diff --git a/source/ubl-settings-resourcequota.c b/source/ubl-settings-resourcequota.c index 5eebf41..549a0a1 100644 --- a/source/ubl-settings-resourcequota.c +++ b/source/ubl-settings-resourcequota.c @@ -450,7 +450,7 @@ void set_pow_size(char* str_find, int** array_size, char*** array_data , int ind str_find = yon_char_unite(str_find," ", STR_TB, NULL); index--; } - else if (strstr(str_find,"\%") != NULL) { + else if (strstr(str_find,"%%") != NULL) { *array_size = philos_int_append(*array_size, &index, -1); str_find = yon_char_divide(str_find, length-1); index--; @@ -771,72 +771,132 @@ void tree_view_del_line() { } } void wrapper_all_save() { - wrapper_template_save("all"); + // template_format_str_save(main_config.load_global_cfg, CMD_LOAD_GLOBAL); } void wrapper_global_save() { - wrapper_template_save("global"); + template_format_str_save(main_config.load_global_cfg, CMD_SAVE_GLOBAL); } void wrapper_system_save() { - wrapper_template_save("system"); + template_format_str_save(main_config.load_system_cfg, CMD_SAVE_SYSTEM); } -void wrapper_template_save(char* check_flag) { - puts(check_flag); - template_format_str_save(); + +char* save_format_key(int index) { + char* key = NULL; + if (strstr(main_config.quota_volume[index], "-") == NULL) { + key = yon_char_unite("CGROUP_QUOTA[", main_config.quota_volume[index] , "]", NULL); + } + return key; } -void template_format_str_save() { - yon_dictionary_free_all(main_config.save_cfg_gui, NULL); - for (size_t i = 0; i < main_config.size_tree_view; i++) { - char* key = NULL; - char* value = ""; - char split_simvol[2] = {0}; - if (strstr(main_config.quota_volume[i], "-") == NULL) { - key = yon_char_unite("CGROUP_QUOTA[", &main_config.type_quota[i] , "]", NULL); - } - else { - key = yon_char_unite("CGROUP_QUOTA[", &main_config.type_quota[i], ".", &main_config.quota_volume[i], "]", NULL); - } - split_simvol[0] = 0; - split_simvol[1] = 0; - if (strstr(main_config.soft_raw_limit[i], "-") != NULL) { - value = yon_char_unite(value, main_config.soft_raw_limit[i], NULL); - split_simvol[0] = ','; - split_simvol[1] = '\0'; - } - if (strstr(main_config.hard_raw_limit[i], "-") != NULL) { - value = yon_char_unite(value, split_simvol, main_config.hard_raw_limit[i], NULL); - split_simvol[0] = ','; - split_simvol[1] = '\0'; - } - if (strstr(main_config.swap[i], "-") != NULL) { - value = yon_char_unite(value, split_simvol, main_config.swap[i], NULL); - split_simvol[0] = ','; - split_simvol[1] = '\0'; - } - if (strstr(main_config.cpu_limit[i], "-") != NULL) { - value = yon_char_unite(value, split_simvol, main_config.cpu_limit[i], NULL); - split_simvol[0] = ','; - split_simvol[1] = '\0'; - } - if (strstr(main_config.i_o_limit_read[i], "-") != NULL) { - value = yon_char_unite(value, split_simvol, main_config.i_o_limit_read[i], NULL); - split_simvol[0] = ','; - split_simvol[1] = '\0'; +char* save_format_value(int index) { + char* value = NULL; + char split_simvol[2] = {0}; + split_simvol[0] = 0; + split_simvol[1] = 0; + if (strstr(main_config.soft_raw_limit[index], "-") == NULL) { + value = yon_char_unite(philos_format_cfg_str_size_memory("MemoryHigh", main_config.soft_raw_limit[index],main_config.soft_raw_limit_size[index]),NULL); + split_simvol[0] = ','; + split_simvol[1] = '\0'; + } + if (strstr(main_config.hard_raw_limit[index], "-") == NULL) { + value = yon_char_unite(value ,split_simvol, philos_format_cfg_str_size_memory("MemoryMax", main_config.hard_raw_limit[index],main_config.hard_raw_limit_size[index]), NULL); + split_simvol[0] = ','; + split_simvol[1] = '\0'; + } + if (strstr(main_config.swap[index], "-") == NULL) { + value = yon_char_unite(value ,split_simvol, philos_format_cfg_str_size_memory("MemorySwapMax", main_config.swap[index],main_config.swap_size[index]), NULL); + split_simvol[0] = ','; + split_simvol[1] = '\0'; + } + if (strstr(main_config.cpu_limit[index], "-") == NULL) { + value = yon_char_unite(value ,split_simvol, philos_format_cfg_str_size_memory("CPUQuota", main_config.cpu_limit[index],main_config.cpu_limit_size[index]), NULL); + 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); + } + return value; +} + +void pars_terminal() { + +} + +int check_save(dictionary* load_cfg) { + dictionary* ptr_dict_gui = NULL; + dictionary* ptr_dict_load = NULL; + char* key_gui = NULL; + char* value_gui = NULL; + char* key_load = NULL; + char* value_load = NULL; + int flag_check_key = 0; + int flag_check_value = 0; + size_t size_cfg_gui = yon_dict_len(main_config.save_cfg_gui); + size_t size_cfg_load = yon_dict_len(load_cfg); + if (size_cfg_gui!=size_cfg_load) { + return 1; + } + for_dictionaries(ptr_dict_gui, main_config.save_cfg_gui) { + for_dictionaries(ptr_dict_load, load_cfg) { + key_gui = ptr_dict_gui->key; + value_gui = (char*)ptr_dict_gui->data; + key_load = ptr_dict_load->key; + value_load = (char*)ptr_dict_load->data; + + if (key_gui == key_load) { + flag_check_key = 1; + return 1; + } + if (value_gui == value_load) { + // TODO: check + flag_check_value = 1; + return 1; + } } - if (strstr(main_config.i_o_limit_write[i], "-") != NULL) { - value = yon_char_unite(value, split_simvol, main_config.i_o_limit_write[i], NULL); - split_simvol[0] = ','; - split_simvol[1] = '\0'; + if (flag_check_key == 0 || flag_check_value == 0) { + return 1; } + } + return 1; +} + +void template_format_str_save(dictionary* load_cfg, char* source_cmd) { + yon_dictionary_free_all(main_config.save_cfg_gui, NULL); + char* cmd = yon_char_new(source_cmd); + main_config.save_cfg_gui = yon_dictionary_create_empty(); + int flag_save = 0; + for (size_t index = 0; index < main_config.size_tree_view; index++) { + char* key = NULL; + char* value = NULL; + key = save_format_key(index); + value = save_format_value(index); main_config.save_cfg_gui = yon_dictionary_create_with_data_connected(main_config.save_cfg_gui, key, yon_char_new(value)); + check_save(load_cfg); + if (key != NULL && value != NULL) { + cmd = yon_char_unite(cmd, " " , key, "=" , value, " ", NULL); + flag_save = 1; + } + puts(key); free(key); free(value); } + if (flag_save) { + puts(cmd); + yon_config_save(cmd); + } + free(cmd); } + void main_fill_tree_view_after_remove() { for (int index= 0; index < main_config.size_tree_view; index++) { GtkTreeIter iter; diff --git a/source/ubl-settings-resourcequota.h b/source/ubl-settings-resourcequota.h index 6c66328..bae7820 100755 --- a/source/ubl-settings-resourcequota.h +++ b/source/ubl-settings-resourcequota.h @@ -34,9 +34,13 @@ #define LocaleName "ubl-settings-resourcequota" #define CMD_LOAD_GLOBAL "ubconfig --default --source global get security" #define CMD_LOAD_SYSTEM "ubconfig --default --source system get security" +#define CMD_SAVE_GLOBAL "ubconfig --default --source global set security" +#define CMD_SAVE_SYSTEM "ubconfig --default --source system set security" +#define CMD_GET_SLICE " |grep -E -A 1 \"/sys/|^[a-zA-Z0-9]{1,}\"|grep -oE \"\\\"[\\\"0-9a-zA-Z :,./=]{1,}|/sys/[-/a-zA-z0-9:.]{1,}|^[a-zA-Z0-9]{0,}\"" +#define CMD_GET_SERVICE " |grep -E -A 1 \"/sys/|^[a-zA-Z0-9]{1,}\"|grep -oE \"\\\"[\\\"0-9a-zA-Z :,./=]{1,}|/sys/[-/a-zA-z0-9:.]{1,}|^[a-zA-Z0-9]{0,}\"" #define CMD_GET_GROUP "cut -d: -f1 /etc/group" typedef char* string; -string version_application = "1.0"; +string version_application = ""; static char *local; @@ -194,4 +198,4 @@ void wrapper_template_save(char* check_flag); void wrapper_system_save(); void wrapper_global_save(); void wrapper_all_save(); -void template_format_str_save(); +void template_format_str_save(dictionary* load_cfg, char* source_cmd); diff --git a/source/ubl-utils.c b/source/ubl-utils.c index b4acb04..b8f2d44 100644 --- a/source/ubl-utils.c +++ b/source/ubl-utils.c @@ -18,6 +18,15 @@ dictionary *yon_dictionary_create_empty() return dict; } +size_t yon_dict_len(dictionary *dict) { + dictionary* ptr_dict = NULL; + size_t size = 0; + for_dictionaries(ptr_dict, dict) { + size+=1; + } + return size; +} + void yon_dictionary_switch_to_last(dictionary **dict) { if ((*dict)->next != NULL) @@ -602,6 +611,30 @@ void philos_split_size_memory(char* str_value, int* size, char* pow_memory) { // pow_memory = yon_char_new(str_value); (*size) = atoi(yon_char_divide_search(pow_memory, " ", -1)); } + +char* philos_format_cfg_str_size_memory(char* str_key, char* str_source_value, int pow_size_memory) { + char* str_value = yon_char_new(str_source_value); + str_value = yon_char_divide_search(str_value, " ", -1); + if (pow_size_memory==0) { + return yon_char_unite(str_key, "=" , str_value, "K" ,NULL); + } + else if (pow_size_memory==1) { + return yon_char_unite(str_key, "=" , str_value, "M" ,NULL); + } + else if (pow_size_memory==2){ + return yon_char_unite(str_key, "=" , str_value, "G" ,NULL); + } + else if (pow_size_memory== 3) { + return yon_char_unite(str_key, "=" , str_value, "T" ,NULL); + } + else if (pow_size_memory== -1) { + return yon_char_unite(str_key, "=" , str_value, "%%" ,NULL); + } + else { + return yon_char_unite(str_key, "=" , str_value, "error" ,NULL); + } +} + /**[EN] * char **yon_char_parse(char *parameters, int *size, char *divider) * Parses string [parameters], divided by [divider], diff --git a/source/ubl-utils.h b/source/ubl-utils.h index f8deecd..2014bbb 100644 --- a/source/ubl-utils.h +++ b/source/ubl-utils.h @@ -92,6 +92,8 @@ typedef char** config_str; dictionary *yon_dictionary_create_empty(); +size_t yon_dict_len(dictionary *dict); + dictionary *yon_dictionary_create_conneced(dictionary *targetdict); dictionary *yon_dictionary_get_last(dictionary *dict); @@ -140,6 +142,8 @@ char *yon_char_replace(char *source, char *find, char*replace); void philos_split_size_memory(char* str_value, int* size, char* pow_memory); +char* philos_format_cfg_str_size_memory(char* str_key, char* str_source_value, int pow_size_memory); + char **yon_char_parse(char *parameters, int *size, char *divider); char** philos_str_split(char *parameters, int *size, char *divider); diff --git a/source/view_add.c b/source/view_add.c index e2dce85..2ccca86 100644 --- a/source/view_add.c +++ b/source/view_add.c @@ -267,7 +267,7 @@ void add_generate_cmd() { str_cmd = yon_char_unite(str_cmd, split_simvol, "CPUQuota=", yon_char_from_int(size_bite), - "\%", NULL); + "%%", NULL); split_simvol[0] = ','; split_simvol[1] = '\0'; } diff --git a/source/view_edit.c b/source/view_edit.c index eecd764..5d0b248 100644 --- a/source/view_edit.c +++ b/source/view_edit.c @@ -261,7 +261,7 @@ void edit_generate_cmd() { str_cmd = yon_char_unite(str_cmd, split_simvol, "CPUQuota=", yon_char_from_int(size_bite), - "\%", NULL); + "%%", NULL); split_simvol[0] = ','; split_simvol[1] = '\0'; } -- 2.35.1 From 111281f14623b7c3e21fe571d07225d890b25359 Mon Sep 17 00:00:00 2001 From: Igor Belitskiy Date: Mon, 5 Jun 2023 17:43:38 +0600 Subject: [PATCH 08/91] =?UTF-8?q?=D0=A0=D0=B5=D0=B0=D0=BB=D0=B8=D0=B7?= =?UTF-8?q?=D0=BE=D0=B2=D0=B0=D0=BD=D0=BD=D0=BE=20=D0=BF=D0=BE=D0=BB=D1=83?= =?UTF-8?q?=D1=87=D0=B5=D0=BD=D0=B8=D0=B5=20=D1=81=D0=BF=D0=B8=D1=81=D0=BA?= =?UTF-8?q?=D0=B0=20=D1=81=D0=BB=D0=B0=D0=B9=D1=81=D0=BE=D0=B2=20=D0=B8=20?= =?UTF-8?q?=D1=81=D0=B5=D1=80=D0=B2=D0=B8=D1=81=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/ubl-settings-resourcequota.c | 13 ++++++------- source/ubl-settings-resourcequota.h | 5 ++--- source/ubl-utils.c | 16 ++++++++++++++++ source/ubl-utils.h | 2 ++ source/view_add.c | 9 +++++++-- source/view_add.h | 2 ++ 6 files changed, 35 insertions(+), 12 deletions(-) diff --git a/source/ubl-settings-resourcequota.c b/source/ubl-settings-resourcequota.c index 549a0a1..fb73465 100644 --- a/source/ubl-settings-resourcequota.c +++ b/source/ubl-settings-resourcequota.c @@ -237,10 +237,12 @@ void main_update_information() { philos_array_string_remove_char(&fill_cmb_2, "\n", size); } else if (menu_id == 2) { - + fill_cmb_2 = philos_pars_terminal_systemd_cgls(CMD_GET_SLICE_SERVICE, ".service", &size); + philos_array_string_remove_char(&fill_cmb_2, "\n", size); } else if (menu_id == 3) { - + fill_cmb_2 = philos_pars_terminal_systemd_cgls(CMD_GET_SLICE_SERVICE, ".slice", &size); + philos_array_string_remove_char(&fill_cmb_2, "\n", size); } if (menu_id >= 0) { gtk_combo_box_text_remove_all(GTK_COMBO_BOX_TEXT(widgets->cbtMainInfoLevel2)); @@ -679,7 +681,6 @@ void main_event(main_window *widgets) { */ } void wrapper_add_show(GtkWidget *self) { - add_get_cmd_group(CMD_GET_GROUP); add_show(NULL, glade_path); g_signal_connect(G_OBJECT(get_widget_add()->btnSaveAddSave), "clicked", G_CALLBACK(main_add_btn_save), NULL); } @@ -827,10 +828,6 @@ char* save_format_value(int index) { return value; } -void pars_terminal() { - -} - int check_save(dictionary* load_cfg) { dictionary* ptr_dict_gui = NULL; dictionary* ptr_dict_load = NULL; @@ -995,6 +992,8 @@ int main(int argc, char *argv[]){ exit(0); } } + add_get_cmd_group(CMD_GET_GROUP); + add_get_systemd_cgls(CMD_GET_SLICE_SERVICE); gtk_init(&argc,&argv); device_disk_parsed(); main_window *widgets = setup_window(); diff --git a/source/ubl-settings-resourcequota.h b/source/ubl-settings-resourcequota.h index bae7820..331f5f1 100755 --- a/source/ubl-settings-resourcequota.h +++ b/source/ubl-settings-resourcequota.h @@ -36,9 +36,7 @@ #define CMD_LOAD_SYSTEM "ubconfig --default --source system get security" #define CMD_SAVE_GLOBAL "ubconfig --default --source global set security" #define CMD_SAVE_SYSTEM "ubconfig --default --source system set security" -#define CMD_GET_SLICE " |grep -E -A 1 \"/sys/|^[a-zA-Z0-9]{1,}\"|grep -oE \"\\\"[\\\"0-9a-zA-Z :,./=]{1,}|/sys/[-/a-zA-z0-9:.]{1,}|^[a-zA-Z0-9]{0,}\"" -#define CMD_GET_SERVICE " |grep -E -A 1 \"/sys/|^[a-zA-Z0-9]{1,}\"|grep -oE \"\\\"[\\\"0-9a-zA-Z :,./=]{1,}|/sys/[-/a-zA-z0-9:.]{1,}|^[a-zA-Z0-9]{0,}\"" -#define CMD_GET_GROUP "cut -d: -f1 /etc/group" +#define CMD_GET_SLICE_SERVICE "systemd-cgls --no-page" typedef char* string; string version_application = ""; @@ -199,3 +197,4 @@ void wrapper_system_save(); void wrapper_global_save(); void wrapper_all_save(); void template_format_str_save(dictionary* load_cfg, char* source_cmd); + diff --git a/source/ubl-utils.c b/source/ubl-utils.c index b8f2d44..5650adc 100644 --- a/source/ubl-utils.c +++ b/source/ubl-utils.c @@ -982,6 +982,22 @@ char *yon_config_make_save_parameter_with_multiple_arguments(char *parameter_str // terminal-using functions +char** philos_pars_terminal_systemd_cgls(char* CMD_GET_SLICE_SERVICE, char* str_find, int* size_array_data) { + int size = 0; + char** terminal_print = yon_config_load(CMD_GET_SLICE_SERVICE, &size); + char** array_data = NULL; + for (int index = 0; index < size; index++) { + if (strstr(terminal_print[index], str_find) != NULL) { + yon_char_divide_search(terminal_print[index],"─",-1); + terminal_print[index] = yon_char_divide_search(terminal_print[index]," ", -1); + yon_char_divide(terminal_print[index],1); + array_data = yon_char_parsed_append(array_data, size_array_data, terminal_print[index]); + + } + } + return array_data; +} + int yon_launch_app(char *name) { char *path = name; diff --git a/source/ubl-utils.h b/source/ubl-utils.h index 2014bbb..8e461dd 100644 --- a/source/ubl-utils.h +++ b/source/ubl-utils.h @@ -186,6 +186,8 @@ char *yon_config_make_save_parameter_with_multiple_arguments(char *parameter_str // terminal-using functions +char** philos_pars_terminal_systemd_cgls(char* CMD_GET_SLICE_SERVICE, char* str_find, int* size_array_data); + int yon_launch_app(char *name); int yon_launch_app_with_arguments(char *name, char *args); diff --git a/source/view_add.c b/source/view_add.c index 2ccca86..8294ca1 100644 --- a/source/view_add.c +++ b/source/view_add.c @@ -87,6 +87,9 @@ void add_event(add_window *widgets) { void add_get_cmd_group(char* cmd_get_group) { CMD_GET_GROUP = cmd_get_group; } +void add_get_systemd_cgls(char* cmd_systemd_cgls) { + CMD_GET_SLICE_SERVICE = cmd_systemd_cgls; +} void add_destroy(GtkWidget *self) { add_widgets = NULL; @@ -220,10 +223,12 @@ void add_update_combo_box() { philos_array_string_remove_char(&fill_cmb_2, "\n", size); } else if (menu_id == 2) { - + fill_cmb_2 = philos_pars_terminal_systemd_cgls(CMD_GET_SLICE_SERVICE, ".service", &size); + philos_array_string_remove_char(&fill_cmb_2, "\n", size); } else if (menu_id == 3) { - + fill_cmb_2 = philos_pars_terminal_systemd_cgls(CMD_GET_SLICE_SERVICE, ".slice", &size); + philos_array_string_remove_char(&fill_cmb_2, "\n", size); } if (menu_id >= 0) { gtk_combo_box_text_remove_all(GTK_COMBO_BOX_TEXT(add_widgets->cbxAddQuotaLevel2)); diff --git a/source/view_add.h b/source/view_add.h index 068e5c9..a55301b 100644 --- a/source/view_add.h +++ b/source/view_add.h @@ -14,6 +14,7 @@ #include "my_device.h" static char* CMD_GET_GROUP; +static char* CMD_GET_SLICE_SERVICE; // Переменные typedef struct { @@ -81,4 +82,5 @@ int add_get_quota_object_size(); void add_get_cmd_group(char* cmd_get_group); char* add_get_select_device_to_level_2(); void add_generate_cmd(); +void add_get_systemd_cgls(char* cmd_systemd_cgls); #endif \ No newline at end of file -- 2.35.1 From c657e5cffbb996d70d7bcca63c28d02357eb4b0f Mon Sep 17 00:00:00 2001 From: Igor Belitskiy Date: Mon, 5 Jun 2023 18:02:43 +0600 Subject: [PATCH 09/91] fix --- source/ubl-settings-resourcequota.c | 25 ++++++++++--------------- 1 file changed, 10 insertions(+), 15 deletions(-) diff --git a/source/ubl-settings-resourcequota.c b/source/ubl-settings-resourcequota.c index fb73465..5060cbf 100644 --- a/source/ubl-settings-resourcequota.c +++ b/source/ubl-settings-resourcequota.c @@ -478,23 +478,18 @@ void set_pow_size(char* str_find, int** array_size, char*** array_data , int ind void main_cbx_2_event() { int menu_id = gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->cbtMainInfo)); char* cmd_text_param = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(widgets->cbtMainInfo)); - if (menu_id == 0) { - - } - else if (menu_id == 1) { - - } - else if (menu_id == 2) { - + char* cmd = NULL; + if (menu_id >= 0) { + puts("2222"); + cmd = yon_char_unite("systemctl status ", cmd_text_param ," --no-pager", NULL); + yon_terminal_integrated_launch(widgets->vteInformation, cmd, NULL, NULL); } - else if (menu_id == 3) { - + if (cmd_text_param != NULL) { + free(cmd_text_param); } - if (menu_id >= 0) { - + if (cmd != NULL) { + free(cmd); } - //char *cmd = yon_char_get_augumented("systemd-cgtop -d ", str_second); - //yon_terminal_integrated_launch(widgets->vteDispatcher, cmd, NULL, NULL); } @@ -662,7 +657,7 @@ void main_event(main_window *widgets) { g_signal_connect(G_OBJECT(widgets->btnMainShowAllEmpty), "toggled", G_CALLBACK(main_update_processes), NULL); g_signal_connect(G_OBJECT(widgets->btnMainShowCoreStream), "toggled", G_CALLBACK(main_update_processes), NULL); g_signal_connect(G_OBJECT(widgets->cbtMainInfo),"changed",G_CALLBACK(main_update_information), NULL); - g_signal_connect(G_OBJECT(widgets->cbtMainInfoLevel2),"changed",G_CALLBACK(main_cbx_2_event), NULL); + g_signal_connect(G_OBJECT(widgets->cbtMainInfoLevel2),"popdown",G_CALLBACK(main_cbx_2_event), NULL); g_signal_connect(G_OBJECT(widgets->btnDelQuotas), "clicked", G_CALLBACK(tree_view_del_line), widgets); g_signal_connect(G_OBJECT(widgets->treeViewMain), "cursor-changed", G_CALLBACK(tree_view_select), widgets); g_signal_connect(G_OBJECT(widgets->LoadGlobalMenuItem), "activate", G_CALLBACK(load_global_cfg), widgets); -- 2.35.1 From c8fbab714a77a6536031107f28ec10499a6ee74a Mon Sep 17 00:00:00 2001 From: Igor Belitskiy Date: Tue, 6 Jun 2023 10:11:59 +0600 Subject: [PATCH 10/91] =?UTF-8?q?=D0=A0=D0=B5=D0=B0=D0=BB=D0=B8=D0=B7?= =?UTF-8?q?=D0=BE=D0=B2=D0=B0=D0=BD=20=D0=B2=D1=8B=D0=B2=D0=BE=D0=B4=20?= =?UTF-8?q?=D0=B2=D0=BA=D0=BB=D0=B0=D0=B4=D0=BA=D0=B8=20vte=20=D1=82=D0=B5?= =?UTF-8?q?=D1=80=D0=BC=D0=B8=D0=BD=D0=B0=D0=BB=D0=B0=20=D0=BD=D0=B0=20?= =?UTF-8?q?=D0=B2=D0=BA=D0=BB=D0=B0=D0=B4=D0=BA=D0=B5=20"=D0=98=D0=BD?= =?UTF-8?q?=D1=84=D0=BE=D1=80=D0=BC=D0=B0=D1=86=D0=B8=D1=8F"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- #ubl-settings-resourcequota.glade# | 4118 +++++++++++++++++++++++++++ source/ubl-settings-resourcequota.c | 12 +- source/ubl-settings-resourcequota.h | 60 +- source/ubl-utils.c | 4 +- 4 files changed, 4156 insertions(+), 38 deletions(-) create mode 100644 #ubl-settings-resourcequota.glade# diff --git a/#ubl-settings-resourcequota.glade# b/#ubl-settings-resourcequota.glade# new file mode 100644 index 0000000..1107ca6 --- /dev/null +++ b/#ubl-settings-resourcequota.glade# @@ -0,0 +1,4118 @@ + + + + + + + False + False + True + center + com.ublinux.ubl-settings-resourcequota + dialog + True + ubl-settings-resourcequota + 1.0 + Copyright © 2022 - 2023, UBSoft LLC + CPU and RAM quotas + https://wiki.ublinux.ru/ru/Программное_обеспечение/Программы_и_утилиты/Все/ubl-settings-resourcequota + Project Home Page + Это приложение распространяется без каких-либо гарантий. +Подробнее в <a href="https://www.gnu.org/licenses/old-licenses/gpl-2.0.html">GNU General Public License, версии 2 или позднее</a>. + UBGroup + UBGroup + com.ublinux.ubl-settings-resourcequota + True + gpl-2-0 + + + True + False + vertical + 2 + + + False + end + + + False + False + 1 + + + + + + + + + + True + False + True + + + True + False + 5 + 5 + 5 + 5 + 2 + ubl-settings-resourcequota + + + + + + + + + + True + False + + + 90 + True + False + 5 + 5 + 5 + 5 + 6 + 6 + 69 + com.ublinux.ubl-settings-resourcequota + + + False + True + 0 + + + + + True + False + + + True + False + + + True + False + vertical + + + 255 + True + False + end + CPU and RAM quotas + 0 + + + + + + + + True + True + 0 + + + + + 255 + True + False + start + Configuring CPU and RAM quota settings for groups and users of the system + True + 0 + + + + + + + + True + True + 1 + + + + + False + True + 0 + + + + + True + True + 0 + + + + + True + True + 1 + + + + + 1 + 100000 + 1 + 1 + 10 + + + 10000 + 1 + 10 + + + 10000 + 1 + 10 + + + 1000023 + 1 + 10 + + + 10000 + 1 + 10 + + + 100023 + 1 + 10 + + + 100023 + 1 + 10 + + + 10000 + 1 + 10 + + + 10000 + 1 + 10 + + + False + start + False + + + True + False + 5 + 5 + 5 + 5 + 5 + 5 + vertical + + + True + False + + + True + False + 5 + 5 + 5 + 5 + 5 + 5 + Quota object + + + False + True + 0 + + + + + 100 + True + False + 5 + 5 + 5 + 5 + 5 + 5 + 0 + 0 + + User + Group + Process + Slice + + + + True + True + 1 + + + + + True + False + 5 + 5 + 5 + 5 + 5 + 5 + + + False + True + 2 + + + + + False + True + 0 + + + + + True + False + vertical + + + True + False + 5 + 5 + 5 + 5 + 5 + 5 + 0.019999999552965164 + in + + + True + False + 12 + + + True + False + + + True + False + vertical + + + True + False + 5 + 5 + 5 + 5 + 5 + 5 + Soft Restriction + 0 + + + False + True + 0 + + + + + True + False + + + True + True + False + 5 + 5 + 5 + 5 + 5 + 5 + True + + + + + + False + True + 0 + + + + + True + True + 5 + 5 + 5 + 5 + 5 + 5 + adjustment4 + + + False + True + 1 + + + + + True + False + 5 + 5 + 5 + 5 + 5 + 5 + 0 + 0 + + Kb + Mb + Gb + Tb + + + + False + True + 2 + + + + + False + True + 1 + + + + + True + True + 0 + + + + + True + False + vertical + + + True + False + 5 + 5 + 5 + 5 + 5 + 5 + Severe Restriction + 0 + + + False + True + 0 + + + + + True + False + + + True + True + False + 5 + 5 + 5 + 5 + 5 + 5 + True + + + + + + False + True + 0 + + + + + True + True + 5 + 5 + 5 + 5 + 5 + 5 + adjustment6 + + + False + True + 1 + + + + + True + False + 5 + 5 + 5 + 5 + 5 + 5 + 0 + 0 + + Kb + Mb + Gb + Tb + + + + False + True + 2 + + + + + False + True + 1 + + + + + True + True + 1 + + + + + + + + + True + False + 5 + 5 + 5 + 5 + 5 + 5 + RAM limit + + + + + False + True + 0 + + + + + True + False + + + True + False + 5 + 5 + 5 + 5 + 5 + 5 + 0.019999999552965164 + in + + + True + False + 12 + + + True + False + + + True + True + False + 5 + 5 + 5 + 5 + 5 + 5 + True + + + + + + False + True + 0 + + + + + True + True + 5 + 5 + 5 + 5 + 5 + 5 + adjustment7 + + + False + True + 1 + + + + + True + False + 5 + 5 + 5 + 5 + 5 + 5 + 0 + 0 + + Kb + Mb + Gb + Tb + + + + False + True + 2 + + + + + + + + + True + False + 5 + 5 + 5 + 5 + 5 + 5 + Paging file limit + + + + + True + True + 0 + + + + + True + False + 5 + 5 + 5 + 5 + 5 + 5 + 0.019999999552965164 + in + + + True + False + 12 + + + True + False + + + True + True + False + 5 + 5 + 5 + 5 + 5 + 5 + True + + + + + + False + True + 0 + + + + + True + True + 5 + 5 + 5 + 5 + 5 + 5 + adjustment5 + + + False + True + 1 + + + + + True + False + 5 + 5 + 5 + 5 + 5 + 5 + % + + + False + True + 2 + + + + + + + + + True + False + 5 + 5 + 5 + 5 + 5 + 5 + CPU limit + + + + + True + True + 1 + + + + + False + True + 1 + + + + + True + False + 5 + 5 + 5 + 5 + 5 + 5 + 0.019999999552965164 + in + + + True + False + 12 + + + True + False + vertical + + + True + False + + + True + False + 5 + 5 + 5 + 5 + 5 + 5 + Device: + 0 + + + False + True + 0 + + + + + True + False + 5 + 5 + 5 + 5 + 5 + 5 + + + True + True + 1 + + + + + False + True + 0 + + + + + True + False + + + True + False + vertical + + + True + False + 5 + 5 + 5 + 5 + 5 + 5 + Read + 0 + + + False + True + 0 + + + + + True + False + + + True + True + False + 5 + 5 + 5 + 5 + 4 + 5 + True + + + + + + False + True + 0 + + + + + True + True + 5 + 5 + 5 + 5 + 5 + 5 + adjustment8 + + + False + True + 1 + + + + + True + False + 5 + 5 + 5 + 5 + 5 + 5 + 0 + 0 + + Kb + Mb + Gb + Tb + + + + False + True + 2 + + + + + False + True + 1 + + + + + True + True + 0 + + + + + True + False + vertical + + + True + False + 5 + 5 + 5 + 5 + 5 + 5 + Write + 0 + + + False + True + 0 + + + + + True + False + + + True + True + False + 5 + 5 + 5 + 5 + 5 + 5 + True + + + + + + False + True + 0 + + + + + True + True + 5 + 5 + 5 + 5 + 5 + 5 + adjustment9 + + + False + True + 1 + + + + + True + False + 5 + 5 + 5 + 5 + 5 + 5 + 0 + 0 + + Kb + Mb + Gb + Tb + + + + False + True + 2 + + + + + False + True + 1 + + + + + True + True + 1 + + + + + False + True + 1 + + + + + + + + + True + False + 5 + 5 + 5 + 5 + 5 + 5 + Input/Output limit of block devices + + + + + False + True + 2 + + + + + True + False + 5 + 5 + 5 + 5 + 5 + 5 + 0.019999999552965164 + in + + + True + False + 12 + + + True + True + 5 + 5 + 5 + 5 + 5 + 5 + + + + + + + True + False + Manual input (for advanced users) + + + + + False + True + 3 + + + + + False + True + 1 + + + + + True + False + + + True + False + + + False + True + 0 + + + + + True + True + True + 5 + 5 + 5 + 5 + 5 + 5 + + + True + False + + + True + False + gtk-stop + + + False + True + 0 + + + + + True + False + 5 + 5 + 5 + 5 + Cancel + + + False + True + 1 + + + + + + + False + True + end + 1 + + + + + True + True + True + 5 + 5 + 5 + 5 + 5 + 5 + + + True + False + + + True + False + gtk-save + + + False + True + 0 + + + + + True + False + 5 + 5 + 5 + 5 + Save + + + False + True + 1 + + + + + + + False + True + end + 1 + + + + + False + True + 2 + + + + + + + True + False + True + + + True + False + Settings quotas - Adding + + + + + + + + True + False + 32 + com.ublinux.ubl-settings-resourcequota + 5 + + + + + + + False + start + False + + + True + False + 5 + 5 + 5 + 5 + 5 + 5 + vertical + + + True + False + + + True + False + 5 + 5 + 5 + 5 + 5 + 5 + Quota object + + + False + True + 0 + + + + + True + False + 5 + 5 + 5 + 5 + 5 + 5 + + + False + True + 1 + + + + + True + False + 5 + 5 + 5 + 5 + 5 + 5 + + + False + True + 2 + + + + + False + True + 0 + + + + + True + False + vertical + + + True + False + 5 + 5 + 5 + 5 + 5 + 5 + 0.019999999552965164 + in + + + True + False + 12 + + + True + False + + + True + False + vertical + + + True + False + 5 + 5 + 5 + 5 + 5 + 5 + Soft Restriction + 0 + + + False + True + 0 + + + + + True + False + + + True + True + False + 5 + 5 + 5 + 5 + 5 + 5 + True + + + + + + False + True + 0 + + + + + True + True + 5 + 5 + 5 + 5 + 5 + 5 + adjustment4 + + + False + True + 1 + + + + + True + False + 5 + 5 + 5 + 5 + 5 + 5 + 0 + 0 + + Kb + Mb + Gb + Tb + + + + False + True + 2 + + + + + False + True + 1 + + + + + True + True + 0 + + + + + True + False + vertical + + + True + False + 5 + 5 + 5 + 5 + 5 + 5 + Severe Restriction + 0 + + + False + True + 0 + + + + + True + False + + + True + True + False + 5 + 5 + 5 + 5 + 5 + 5 + True + + + + + + False + True + 0 + + + + + True + True + 5 + 5 + 5 + 5 + 5 + 5 + adjustment6 + + + False + True + 1 + + + + + True + False + 5 + 5 + 5 + 5 + 5 + 5 + 0 + 0 + + Kb + Mb + Gb + Tb + + + + False + True + 2 + + + + + False + True + 1 + + + + + True + True + 1 + + + + + + + + + True + False + 5 + 5 + 5 + 5 + 5 + 5 + RAM limit + + + + + False + True + 0 + + + + + True + False + + + True + False + 5 + 5 + 5 + 5 + 5 + 5 + 0.019999999552965164 + in + + + True + False + 12 + + + True + False + + + True + True + False + 5 + 5 + 5 + 5 + 5 + 5 + True + + + + + + False + True + 0 + + + + + True + True + 5 + 5 + 5 + 5 + 5 + 5 + adjustment7 + + + False + True + 1 + + + + + True + False + 5 + 5 + 5 + 5 + 5 + 5 + 0 + 0 + + Kb + Mb + Gb + Tb + + + + False + True + 2 + + + + + + + + + True + False + 5 + 5 + 5 + 5 + 5 + 5 + Paging file limit + + + + + True + True + 0 + + + + + True + False + 5 + 5 + 5 + 5 + 5 + 5 + 0.019999999552965164 + in + + + True + False + 12 + + + True + False + + + True + True + False + 5 + 5 + 5 + 5 + 5 + 5 + True + + + + + + False + True + 0 + + + + + True + True + 5 + 5 + 5 + 5 + 5 + 5 + adjustment5 + + + False + True + 1 + + + + + True + False + 5 + 5 + 5 + 5 + 5 + 5 + % + + + False + True + 2 + + + + + + + + + True + False + 5 + 5 + 5 + 5 + 5 + 5 + CPU limit + + + + + True + True + 1 + + + + + False + True + 1 + + + + + True + False + 5 + 5 + 5 + 5 + 5 + 5 + 0.019999999552965164 + in + + + True + False + 12 + + + True + False + vertical + + + True + False + + + True + False + 5 + 5 + 5 + 5 + 5 + 5 + Device: + 0 + + + False + True + 0 + + + + + True + False + 5 + 5 + 5 + 5 + 5 + 5 + + + True + True + 1 + + + + + False + True + 0 + + + + + True + False + + + True + False + vertical + + + True + False + 5 + 5 + 5 + 5 + 5 + 5 + Read + 0 + + + False + True + 0 + + + + + True + False + + + True + True + False + 5 + 5 + 5 + 5 + 4 + 5 + True + + + + + + False + True + 0 + + + + + True + True + 5 + 5 + 5 + 5 + 5 + 5 + adjustment9 + + + False + True + 1 + + + + + True + False + 5 + 5 + 5 + 5 + 5 + 5 + 0 + 0 + + Kb + Mb + Gb + Tb + + + + False + True + 2 + + + + + False + True + 1 + + + + + True + True + 0 + + + + + True + False + vertical + + + True + False + 5 + 5 + 5 + 5 + 5 + 5 + Write + 0 + + + False + True + 0 + + + + + True + False + + + True + True + False + 5 + 5 + 5 + 5 + 5 + 5 + True + + + + + + False + True + 0 + + + + + True + True + 5 + 5 + 5 + 5 + 5 + 5 + adjustment8 + + + False + True + 1 + + + + + True + False + 5 + 5 + 5 + 5 + 5 + 5 + 0 + 0 + + Kb + Mb + Gb + Tb + + + + False + True + 2 + + + + + False + True + 1 + + + + + True + True + 1 + + + + + False + True + 1 + + + + + + + + + True + False + 5 + 5 + 5 + 5 + 5 + 5 + Input/Output limit of block devices + + + + + False + True + 2 + + + + + True + False + 5 + 5 + 5 + 5 + 5 + 5 + 0.019999999552965164 + in + + + True + False + 12 + + + True + True + 5 + 5 + 5 + 5 + 5 + 5 + + + + + + + True + False + Manual input (for advanced users) + + + + + False + True + 3 + + + + + False + True + 1 + + + + + True + False + + + True + False + + + False + True + 0 + + + + + True + True + True + 5 + 5 + 5 + 5 + 5 + 5 + + + True + False + + + True + False + gtk-stop + + + False + True + 0 + + + + + True + False + 5 + 5 + 5 + 5 + Cancel + + + False + True + 1 + + + + + + + False + True + end + 1 + + + + + True + True + True + 5 + 5 + 5 + 5 + 5 + 5 + + + True + False + + + True + False + gtk-save + + + False + True + 0 + + + + + True + False + 5 + 5 + 5 + 5 + Save + + + False + True + 1 + + + + + + + False + True + end + 1 + + + + + False + True + 2 + + + + + + + True + False + True + + + True + False + Settings quotas - Editing + + + + + + + + True + False + 32 + com.ublinux.ubl-settings-resourcequota + 5 + + + + + + + True + False + dialog-information-symbolic + + + True + False + dialog-question-symbolic + + + True + False + False + + + imagemenuitem + True + False + image2 + False + + + + + + imagemenuitem + True + False + image1 + False + + + + + + True + False + process-stop-symbolic + + + True + False + emblem-ok-symbolic + + + False + False + 450 + dialog-question-symbolic + + + True + False + 5 + 5 + 5 + 5 + 5 + 5 + vertical + 10 + + + True + False + + + True + False + start + 20 + 20 + dialog-question-symbolic + 6 + + + False + True + 0 + + + + + True + False + vertical + + + True + False + start + 10 + 5 + Would you like to read documentation in the Web? + True + 0 + + + + + + + False + True + 0 + + + + + True + False + start + start + 10 + 10 + You will be redirected to documentation website where documentation is +translated and supported by community. + True + 0 + + + + False + True + 1 + + + + + Always redirect to online documentation + True + True + False + end + True + + + + False + True + end + 2 + + + + + + True + True + 1 + + + + + + True + True + 0 + + + + + True + False + 30 + True + + + Cancel + True + True + True + image8 + + + + True + True + 0 + + + + + Read Online + True + True + True + image9 + + + + True + True + 1 + + + + + False + True + 1 + + + + + + + True + False + True + + + True + False + UBLinux Settings + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + True + False + False + + + True + False + + + + + + True + False + + + + + + True + False + False + + + True + False + + + + + + True + False + + + + + + True + False + True + + + + + + 640 + 500 + False + 700 + 500 + com.ublinux.ubl-settings-resourcequota + center + + + True + False + vertical + + + True + False + vertical + + + True + False + + + True + False + 5 + 5 + 5 + 5 + 5 + 5 + 25 + + + False + True + 0 + + + + + True + False + start + 5 + 5 + 5 + 5 + 6 + 6 + + + + + + + False + True + 1 + + + + + False + True + 0 + + + + + True + False + vertical + + + 81 + True + False + + + True + False + start + + + -1 + + + + + False + True + 0 + + + + + False + True + 1 + + + + + True + False + 5 + 5 + 5 + 5 + 5 + 5 + True + True + vertical + + + True + False + 5 + 5 + 5 + 5 + 5 + 5 + True + True + vertical + + + True + True + + + True + False + vertical + + + True + True + in + + + True + False + + + True + True + liststore + 0 + + + + + + Type quota + True + + + + 0 + + + + + + + Quota +object + True + + + + 1 + + + + + + + Soft RAM limit, +(volume) + True + + + + 2 + + + + + + + Hard RAM limit, +(volume) + True + + + + 3 + + + + + + + Swap file +limit +(volume) + True + + + + 4 + + + + + + + CPU limit +(%) + True + + + + 5 + + + + + + + I/O +limit +(read) + True + + + + 6 + + + + + + + I/O +limit +(write) + True + + + + 7 + + + + + + + + + + + True + True + 0 + + + + + True + False + + + True + True + True + 5 + 5 + 5 + 5 + 5 + 5 + + + True + False + + + True + False + com.ublinux.ubl-settings-resourcequota.funnel + + + False + True + 0 + + + + + True + False + 5 + 5 + 5 + 5 + Filters + + + False + True + 1 + + + + + + + False + True + 0 + + + + + + + + True + True + True + 5 + 5 + 5 + 5 + 5 + 5 + + + True + False + + + True + False + tab-new-symbolic + + + False + True + 0 + + + + + True + False + 5 + 5 + 5 + 5 + Add + + + False + True + 1 + + + + + + + False + True + end + 2 + + + + + True + True + True + 5 + 5 + 5 + 5 + 5 + 5 + + + True + False + + + True + False + error-correct-symbolic + + + False + True + 0 + + + + + True + False + 5 + 5 + 5 + 5 + Edit + + + False + True + 1 + + + + + + + False + True + end + 3 + + + + + True + True + True + 5 + 5 + 5 + 5 + 5 + 5 + + + True + False + + + True + False + software-remove-symbolic + + + False + True + 0 + + + + + True + False + 5 + 5 + 5 + 5 + Remove + + + False + True + 1 + + + + + + + False + True + end + 4 + + + + + True + True + True + 5 + 5 + 5 + 5 + 5 + 5 + + + True + False + + + True + False + dialog-information-symbolic + + + False + True + 0 + + + + + True + False + 5 + 5 + 5 + 5 + Information + + + False + True + 1 + + + + + + + False + True + end + 5 + + + + + False + True + 2 + + + + + + + True + False + List quotas + + + False + + + + + True + False + vertical + + + True + False + + + True + False + 5 + 5 + 5 + 5 + 5 + 5 + Update every + + + False + True + 0 + + + + + True + True + 5 + 5 + 5 + 5 + 5 + 5 + adjustment1 + + + False + True + 1 + + + + + True + False + 5 + 5 + 5 + 5 + 5 + 5 + seconds + + + False + True + 2 + + + + + True + True + True + 5 + 5 + 5 + 5 + 5 + 5 + + + True + False + reload + + + + + True + True + 3 + + + + + False + True + 0 + + + + + True + False + + + True + False + True + natural + adjustment3 + natural + UTF-8 + True + False + + + True + True + 0 + + + + + True + False + vertical + adjustment3 + + + False + True + 1 + + + + + True + True + 1 + + + + + 1 + + + + + True + False + Dispatcher + + + 1 + False + + + + + True + False + vertical + + + True + False + + + All groups including empty + True + True + False + 5 + 5 + 5 + 5 + 5 + 5 + True + + + False + True + 0 + + + + + Core streams + True + True + False + 5 + 5 + 5 + 5 + 5 + 5 + True + + + False + True + 1 + + + + + False + True + 0 + + + + + True + False + + + True + False + True + natural + adjustment2 + natural + UTF-8 + 1024 + True + False + + + True + True + 0 + + + + + True + False + vertical + adjustment2 + + + False + True + 1 + + + + + True + True + 1 + + + + + 2 + + + + + True + False + Processes + + + 2 + False + + + + + True + False + vertical + + + True + False + + + True + False + 5 + 5 + 5 + 5 + 5 + 5 + View properties for + + + False + True + 0 + + + + + True + False + 5 + 5 + 5 + 5 + 5 + 5 + 0 + 0 + + User + Group + Process + Slice + + + + True + True + 1 + + + + + True + False + 5 + 5 + 5 + 5 + 5 + 5 + + + True + True + 2 + + + + + False + True + 0 + + + + + True + False + + + True + False + True + natural + adjustment3 + natural + UTF-8 + True + False + + + True + True + 0 + + + + + True + False + vertical + adjustment3 + + + False + True + 1 + + + + + True + True + 1 + + + + + 3 + + + + + True + False + Information + + + 3 + False + + + + + True + True + 0 + + + + + False + True + 0 + + + + + False + True + 2 + + + + + True + True + 0 + + + + + + + True + False + True + + + True + False + 5 + 5 + 5 + 5 + 2 + ubl-settings-resourcequota + + + + + + + + True + False + 5 + 5 + 5 + 5 + 6 + 6 + 32 + com.ublinux.ubl-settings-resourcequota + + + + + True + False + + + True + True + False + True + menuSave + + + True + False + + + True + False + Save + + + False + True + 0 + + + + + True + False + pan-down-symbolic + + + False + True + 1 + + + + + + + False + True + 0 + + + + + True + True + True + False + True + True + menuAbout + none + + + + + + + False + True + 1 + + + + + end + 1 + + + + + True + False + + + True + True + False + True + menuLoad + + + True + False + + + True + False + Load + + + False + True + 0 + + + + + True + False + pan-down-symbolic + + + False + True + 1 + + + + + + + False + True + 0 + + + + + 2 + + + + + + + + vertical + + + + + + + + False + start + False + + + True + False + 5 + 5 + 5 + 5 + 5 + 5 + vertical + + + Type quota + True + True + False + start + True + + + False + True + 2 + + + + + Quota volume + True + True + False + start + True + + + False + True + 3 + + + + + Soft RAM limit, (volume) + True + True + False + start + True + + + False + True + 4 + + + + + True + False + end + 5 + 5 + True + + + gtk-cancel + True + True + True + center + True + + + False + True + 0 + + + + + gtk-save + True + True + True + center + True + + + False + True + 1 + + + + + False + True + end + 5 + + + + + Hard RAM limit, (volume) + True + True + False + start + True + + + False + True + 6 + + + + + Swap file limit (volume) + True + True + False + start + True + + + False + True + 7 + + + + + CPU limit (%) + True + True + False + start + True + + + False + True + 8 + + + + + I/O limit (write) + True + True + False + start + True + + + False + True + 8 + + + + + I/O limit (read) + True + True + False + start + True + + + False + True + 9 + + + + + + + True + False + True + + + True + False + Filters + + + + + + + + True + False + 32 + com.ublinux.ubl-settings-resourcequota + 5 + + + + + + diff --git a/source/ubl-settings-resourcequota.c b/source/ubl-settings-resourcequota.c index 5060cbf..ab69490 100644 --- a/source/ubl-settings-resourcequota.c +++ b/source/ubl-settings-resourcequota.c @@ -245,8 +245,10 @@ void main_update_information() { philos_array_string_remove_char(&fill_cmb_2, "\n", size); } if (menu_id >= 0) { + g_signal_handlers_disconnect_by_func(G_OBJECT(widgets->cbtMainInfoLevel2), main_cbx_2_event, NULL); gtk_combo_box_text_remove_all(GTK_COMBO_BOX_TEXT(widgets->cbtMainInfoLevel2)); philos_fill_combo_box_text(widgets->cbtMainInfoLevel2, fill_cmb_2, size); + g_signal_connect(G_OBJECT(widgets->cbtMainInfoLevel2),"changed",G_CALLBACK(main_cbx_2_event), NULL); // yon_terminal_integrated_launch(widgets->vteProcesses, cmd, NULL, NULL); } } @@ -476,18 +478,17 @@ void set_pow_size(char* str_find, int** array_size, char*** array_data , int ind } void main_cbx_2_event() { - int menu_id = gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->cbtMainInfo)); - char* cmd_text_param = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(widgets->cbtMainInfo)); + int menu_id = gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->cbtMainInfoLevel2)); + char* cmd_text_param = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(widgets->cbtMainInfoLevel2)); char* cmd = NULL; if (menu_id >= 0) { - puts("2222"); cmd = yon_char_unite("systemctl status ", cmd_text_param ," --no-pager", NULL); yon_terminal_integrated_launch(widgets->vteInformation, cmd, NULL, NULL); } - if (cmd_text_param != NULL) { + if (menu_id >= 0) { free(cmd_text_param); } - if (cmd != NULL) { + if (menu_id >= 0) { free(cmd); } @@ -657,7 +658,6 @@ void main_event(main_window *widgets) { g_signal_connect(G_OBJECT(widgets->btnMainShowAllEmpty), "toggled", G_CALLBACK(main_update_processes), NULL); g_signal_connect(G_OBJECT(widgets->btnMainShowCoreStream), "toggled", G_CALLBACK(main_update_processes), NULL); g_signal_connect(G_OBJECT(widgets->cbtMainInfo),"changed",G_CALLBACK(main_update_information), NULL); - g_signal_connect(G_OBJECT(widgets->cbtMainInfoLevel2),"popdown",G_CALLBACK(main_cbx_2_event), NULL); g_signal_connect(G_OBJECT(widgets->btnDelQuotas), "clicked", G_CALLBACK(tree_view_del_line), widgets); g_signal_connect(G_OBJECT(widgets->treeViewMain), "cursor-changed", G_CALLBACK(tree_view_select), widgets); g_signal_connect(G_OBJECT(widgets->LoadGlobalMenuItem), "activate", G_CALLBACK(load_global_cfg), widgets); diff --git a/source/ubl-settings-resourcequota.h b/source/ubl-settings-resourcequota.h index 331f5f1..ebfef2b 100755 --- a/source/ubl-settings-resourcequota.h +++ b/source/ubl-settings-resourcequota.h @@ -15,11 +15,9 @@ #include "view_edit.h" #include "my_device.h" - - #ifdef WEBKIT_FOUND - #include -#endif +#include +#endif #include "ubl-strings.h" #define WIKI_LINK "https://wiki.ublinux.ru/ru/Программное_обеспечение/Программы_и_утилиты/Все/ubl-settings-resourcequota" @@ -30,19 +28,21 @@ #define banner_path "/usr/share/ubl-settings-resourcequota/images/ubl-settings-resourcequota-banner.png" #define CssPath "/usr/share/ubl-settings-resourcequota/css/ubl-settings-resourcequota.css" -#define LocalePath "/usr/share/locale" +#define LocalePath "/usr/share/locale" #define LocaleName "ubl-settings-resourcequota" #define CMD_LOAD_GLOBAL "ubconfig --default --source global get security" #define CMD_LOAD_SYSTEM "ubconfig --default --source system get security" #define CMD_SAVE_GLOBAL "ubconfig --default --source global set security" #define CMD_SAVE_SYSTEM "ubconfig --default --source system set security" #define CMD_GET_SLICE_SERVICE "systemd-cgls --no-page" -typedef char* string; +#define CMD_GET_GROUP "cut -d: -f1 /etc/group" +typedef char *string; string version_application = ""; static char *local; -typedef struct { +typedef struct +{ int always_open_documentation; int win_pos_x; int win_pos_y; @@ -52,7 +52,7 @@ typedef struct { int socket_id; int load_socket_id; int save_socket_id; - + int lock_help; int lock_save_local; int lock_save_global; @@ -77,21 +77,22 @@ typedef struct { config_str i_o_limit_write; config_str disk; - int* type_quota_size; - int* quota_volume_size; - int* soft_raw_limit_size; - 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 *type_quota_size; + int *quota_volume_size; + int *soft_raw_limit_size; + 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 size_tree_view; - dictionary* load_global_cfg; - dictionary* load_system_cfg; - dictionary* save_cfg_gui; + dictionary *load_global_cfg; + dictionary *load_system_cfg; + dictionary *save_cfg_gui; } config; -typedef struct { +typedef struct +{ GtkWidget *Window; GtkTreeViewColumn *tvc0; @@ -148,8 +149,8 @@ typedef struct { GtkWidget *AboutMenuItem; } main_window; - -typedef struct { +typedef struct +{ GtkWidget *Window; GtkWidget *HatText; @@ -159,7 +160,7 @@ typedef struct { GtkWidget *CloseButton; GtkWidget *AcceptButton; - + } documentation_confirmation_window; main_window *setup_window(); @@ -185,16 +186,15 @@ void tree_view_del_line(); void main_fill_tree_view_after_remove(); void load_system_cfg(); void load_global_cfg(); -void template_cfg(char* cmd, dictionary* load_cfg); -void str_split_value(char* values, int index); -void set_pow_size(char* str_find, int** array_size, char*** array_data, int index); -void str_split_key(char* source_value, int index); +void template_cfg(char *cmd, dictionary *load_cfg); +void str_split_value(char *values, int index); +void set_pow_size(char *str_find, int **array_size, char ***array_data, int index); +void str_split_key(char *source_value, int index); void fill_tree_view(int start, int size, int flag_gui_add); void clear_array(); void init_cfg_array(int index); -void wrapper_template_save(char* check_flag); +void wrapper_template_save(char *check_flag); void wrapper_system_save(); void wrapper_global_save(); void wrapper_all_save(); -void template_format_str_save(dictionary* load_cfg, char* source_cmd); - +void template_format_str_save(dictionary *load_cfg, char *source_cmd); diff --git a/source/ubl-utils.c b/source/ubl-utils.c index 5650adc..4e03d75 100644 --- a/source/ubl-utils.c +++ b/source/ubl-utils.c @@ -1100,7 +1100,7 @@ void yon_terminal_integrated_launch(GtkWidget *terminal, char* command, void *en vte_terminal_set_size(VTE_TERMINAL(terminal),10,15); VtePty *pty = vte_pty_new_sync(VTE_PTY_DEFAULT,NULL,NULL); vte_terminal_set_pty(VTE_TERMINAL(terminal),pty); - char *install_command=yon_char_unite("tput cup 0 0 && tput ed; ",command,"\n",NULL); + char *install_command=yon_char_unite("tput cup 0 0 && tput ed; ",command, "; exit 0\n",NULL); if(endwork_function) g_signal_connect(G_OBJECT(terminal), "child-exited", G_CALLBACK(endwork_function), endwork_function_argument); vte_terminal_spawn_async(VTE_TERMINAL(terminal), @@ -1126,7 +1126,7 @@ void yon_terminal_integrated_launch(GtkWidget *terminal, char* command, void *en NULL, NULL, NULL); - vte_terminal_set_scrollback_lines(VTE_TERMINAL(terminal), 100); + vte_terminal_set_scrollback_lines(VTE_TERMINAL(terminal), -1); vte_terminal_set_scroll_on_output(VTE_TERMINAL(terminal), TRUE); vte_terminal_set_scroll_on_keystroke(VTE_TERMINAL(terminal), TRUE); gtk_widget_show_all(terminal); -- 2.35.1 From 32526ca7cb43269277275950e08a83625e888fd7 Mon Sep 17 00:00:00 2001 From: Igor Belitskiy Date: Tue, 6 Jun 2023 10:15:03 +0600 Subject: [PATCH 11/91] fix --- #ubl-settings-resourcequota.glade# | 4118 ---------------------------- 1 file changed, 4118 deletions(-) delete mode 100644 #ubl-settings-resourcequota.glade# diff --git a/#ubl-settings-resourcequota.glade# b/#ubl-settings-resourcequota.glade# deleted file mode 100644 index 1107ca6..0000000 --- a/#ubl-settings-resourcequota.glade# +++ /dev/null @@ -1,4118 +0,0 @@ - - - - - - - False - False - True - center - com.ublinux.ubl-settings-resourcequota - dialog - True - ubl-settings-resourcequota - 1.0 - Copyright © 2022 - 2023, UBSoft LLC - CPU and RAM quotas - https://wiki.ublinux.ru/ru/Программное_обеспечение/Программы_и_утилиты/Все/ubl-settings-resourcequota - Project Home Page - Это приложение распространяется без каких-либо гарантий. -Подробнее в <a href="https://www.gnu.org/licenses/old-licenses/gpl-2.0.html">GNU General Public License, версии 2 или позднее</a>. - UBGroup - UBGroup - com.ublinux.ubl-settings-resourcequota - True - gpl-2-0 - - - True - False - vertical - 2 - - - False - end - - - False - False - 1 - - - - - - - - - - True - False - True - - - True - False - 5 - 5 - 5 - 5 - 2 - ubl-settings-resourcequota - - - - - - - - - - True - False - - - 90 - True - False - 5 - 5 - 5 - 5 - 6 - 6 - 69 - com.ublinux.ubl-settings-resourcequota - - - False - True - 0 - - - - - True - False - - - True - False - - - True - False - vertical - - - 255 - True - False - end - CPU and RAM quotas - 0 - - - - - - - - True - True - 0 - - - - - 255 - True - False - start - Configuring CPU and RAM quota settings for groups and users of the system - True - 0 - - - - - - - - True - True - 1 - - - - - False - True - 0 - - - - - True - True - 0 - - - - - True - True - 1 - - - - - 1 - 100000 - 1 - 1 - 10 - - - 10000 - 1 - 10 - - - 10000 - 1 - 10 - - - 1000023 - 1 - 10 - - - 10000 - 1 - 10 - - - 100023 - 1 - 10 - - - 100023 - 1 - 10 - - - 10000 - 1 - 10 - - - 10000 - 1 - 10 - - - False - start - False - - - True - False - 5 - 5 - 5 - 5 - 5 - 5 - vertical - - - True - False - - - True - False - 5 - 5 - 5 - 5 - 5 - 5 - Quota object - - - False - True - 0 - - - - - 100 - True - False - 5 - 5 - 5 - 5 - 5 - 5 - 0 - 0 - - User - Group - Process - Slice - - - - True - True - 1 - - - - - True - False - 5 - 5 - 5 - 5 - 5 - 5 - - - False - True - 2 - - - - - False - True - 0 - - - - - True - False - vertical - - - True - False - 5 - 5 - 5 - 5 - 5 - 5 - 0.019999999552965164 - in - - - True - False - 12 - - - True - False - - - True - False - vertical - - - True - False - 5 - 5 - 5 - 5 - 5 - 5 - Soft Restriction - 0 - - - False - True - 0 - - - - - True - False - - - True - True - False - 5 - 5 - 5 - 5 - 5 - 5 - True - - - - - - False - True - 0 - - - - - True - True - 5 - 5 - 5 - 5 - 5 - 5 - adjustment4 - - - False - True - 1 - - - - - True - False - 5 - 5 - 5 - 5 - 5 - 5 - 0 - 0 - - Kb - Mb - Gb - Tb - - - - False - True - 2 - - - - - False - True - 1 - - - - - True - True - 0 - - - - - True - False - vertical - - - True - False - 5 - 5 - 5 - 5 - 5 - 5 - Severe Restriction - 0 - - - False - True - 0 - - - - - True - False - - - True - True - False - 5 - 5 - 5 - 5 - 5 - 5 - True - - - - - - False - True - 0 - - - - - True - True - 5 - 5 - 5 - 5 - 5 - 5 - adjustment6 - - - False - True - 1 - - - - - True - False - 5 - 5 - 5 - 5 - 5 - 5 - 0 - 0 - - Kb - Mb - Gb - Tb - - - - False - True - 2 - - - - - False - True - 1 - - - - - True - True - 1 - - - - - - - - - True - False - 5 - 5 - 5 - 5 - 5 - 5 - RAM limit - - - - - False - True - 0 - - - - - True - False - - - True - False - 5 - 5 - 5 - 5 - 5 - 5 - 0.019999999552965164 - in - - - True - False - 12 - - - True - False - - - True - True - False - 5 - 5 - 5 - 5 - 5 - 5 - True - - - - - - False - True - 0 - - - - - True - True - 5 - 5 - 5 - 5 - 5 - 5 - adjustment7 - - - False - True - 1 - - - - - True - False - 5 - 5 - 5 - 5 - 5 - 5 - 0 - 0 - - Kb - Mb - Gb - Tb - - - - False - True - 2 - - - - - - - - - True - False - 5 - 5 - 5 - 5 - 5 - 5 - Paging file limit - - - - - True - True - 0 - - - - - True - False - 5 - 5 - 5 - 5 - 5 - 5 - 0.019999999552965164 - in - - - True - False - 12 - - - True - False - - - True - True - False - 5 - 5 - 5 - 5 - 5 - 5 - True - - - - - - False - True - 0 - - - - - True - True - 5 - 5 - 5 - 5 - 5 - 5 - adjustment5 - - - False - True - 1 - - - - - True - False - 5 - 5 - 5 - 5 - 5 - 5 - % - - - False - True - 2 - - - - - - - - - True - False - 5 - 5 - 5 - 5 - 5 - 5 - CPU limit - - - - - True - True - 1 - - - - - False - True - 1 - - - - - True - False - 5 - 5 - 5 - 5 - 5 - 5 - 0.019999999552965164 - in - - - True - False - 12 - - - True - False - vertical - - - True - False - - - True - False - 5 - 5 - 5 - 5 - 5 - 5 - Device: - 0 - - - False - True - 0 - - - - - True - False - 5 - 5 - 5 - 5 - 5 - 5 - - - True - True - 1 - - - - - False - True - 0 - - - - - True - False - - - True - False - vertical - - - True - False - 5 - 5 - 5 - 5 - 5 - 5 - Read - 0 - - - False - True - 0 - - - - - True - False - - - True - True - False - 5 - 5 - 5 - 5 - 4 - 5 - True - - - - - - False - True - 0 - - - - - True - True - 5 - 5 - 5 - 5 - 5 - 5 - adjustment8 - - - False - True - 1 - - - - - True - False - 5 - 5 - 5 - 5 - 5 - 5 - 0 - 0 - - Kb - Mb - Gb - Tb - - - - False - True - 2 - - - - - False - True - 1 - - - - - True - True - 0 - - - - - True - False - vertical - - - True - False - 5 - 5 - 5 - 5 - 5 - 5 - Write - 0 - - - False - True - 0 - - - - - True - False - - - True - True - False - 5 - 5 - 5 - 5 - 5 - 5 - True - - - - - - False - True - 0 - - - - - True - True - 5 - 5 - 5 - 5 - 5 - 5 - adjustment9 - - - False - True - 1 - - - - - True - False - 5 - 5 - 5 - 5 - 5 - 5 - 0 - 0 - - Kb - Mb - Gb - Tb - - - - False - True - 2 - - - - - False - True - 1 - - - - - True - True - 1 - - - - - False - True - 1 - - - - - - - - - True - False - 5 - 5 - 5 - 5 - 5 - 5 - Input/Output limit of block devices - - - - - False - True - 2 - - - - - True - False - 5 - 5 - 5 - 5 - 5 - 5 - 0.019999999552965164 - in - - - True - False - 12 - - - True - True - 5 - 5 - 5 - 5 - 5 - 5 - - - - - - - True - False - Manual input (for advanced users) - - - - - False - True - 3 - - - - - False - True - 1 - - - - - True - False - - - True - False - - - False - True - 0 - - - - - True - True - True - 5 - 5 - 5 - 5 - 5 - 5 - - - True - False - - - True - False - gtk-stop - - - False - True - 0 - - - - - True - False - 5 - 5 - 5 - 5 - Cancel - - - False - True - 1 - - - - - - - False - True - end - 1 - - - - - True - True - True - 5 - 5 - 5 - 5 - 5 - 5 - - - True - False - - - True - False - gtk-save - - - False - True - 0 - - - - - True - False - 5 - 5 - 5 - 5 - Save - - - False - True - 1 - - - - - - - False - True - end - 1 - - - - - False - True - 2 - - - - - - - True - False - True - - - True - False - Settings quotas - Adding - - - - - - - - True - False - 32 - com.ublinux.ubl-settings-resourcequota - 5 - - - - - - - False - start - False - - - True - False - 5 - 5 - 5 - 5 - 5 - 5 - vertical - - - True - False - - - True - False - 5 - 5 - 5 - 5 - 5 - 5 - Quota object - - - False - True - 0 - - - - - True - False - 5 - 5 - 5 - 5 - 5 - 5 - - - False - True - 1 - - - - - True - False - 5 - 5 - 5 - 5 - 5 - 5 - - - False - True - 2 - - - - - False - True - 0 - - - - - True - False - vertical - - - True - False - 5 - 5 - 5 - 5 - 5 - 5 - 0.019999999552965164 - in - - - True - False - 12 - - - True - False - - - True - False - vertical - - - True - False - 5 - 5 - 5 - 5 - 5 - 5 - Soft Restriction - 0 - - - False - True - 0 - - - - - True - False - - - True - True - False - 5 - 5 - 5 - 5 - 5 - 5 - True - - - - - - False - True - 0 - - - - - True - True - 5 - 5 - 5 - 5 - 5 - 5 - adjustment4 - - - False - True - 1 - - - - - True - False - 5 - 5 - 5 - 5 - 5 - 5 - 0 - 0 - - Kb - Mb - Gb - Tb - - - - False - True - 2 - - - - - False - True - 1 - - - - - True - True - 0 - - - - - True - False - vertical - - - True - False - 5 - 5 - 5 - 5 - 5 - 5 - Severe Restriction - 0 - - - False - True - 0 - - - - - True - False - - - True - True - False - 5 - 5 - 5 - 5 - 5 - 5 - True - - - - - - False - True - 0 - - - - - True - True - 5 - 5 - 5 - 5 - 5 - 5 - adjustment6 - - - False - True - 1 - - - - - True - False - 5 - 5 - 5 - 5 - 5 - 5 - 0 - 0 - - Kb - Mb - Gb - Tb - - - - False - True - 2 - - - - - False - True - 1 - - - - - True - True - 1 - - - - - - - - - True - False - 5 - 5 - 5 - 5 - 5 - 5 - RAM limit - - - - - False - True - 0 - - - - - True - False - - - True - False - 5 - 5 - 5 - 5 - 5 - 5 - 0.019999999552965164 - in - - - True - False - 12 - - - True - False - - - True - True - False - 5 - 5 - 5 - 5 - 5 - 5 - True - - - - - - False - True - 0 - - - - - True - True - 5 - 5 - 5 - 5 - 5 - 5 - adjustment7 - - - False - True - 1 - - - - - True - False - 5 - 5 - 5 - 5 - 5 - 5 - 0 - 0 - - Kb - Mb - Gb - Tb - - - - False - True - 2 - - - - - - - - - True - False - 5 - 5 - 5 - 5 - 5 - 5 - Paging file limit - - - - - True - True - 0 - - - - - True - False - 5 - 5 - 5 - 5 - 5 - 5 - 0.019999999552965164 - in - - - True - False - 12 - - - True - False - - - True - True - False - 5 - 5 - 5 - 5 - 5 - 5 - True - - - - - - False - True - 0 - - - - - True - True - 5 - 5 - 5 - 5 - 5 - 5 - adjustment5 - - - False - True - 1 - - - - - True - False - 5 - 5 - 5 - 5 - 5 - 5 - % - - - False - True - 2 - - - - - - - - - True - False - 5 - 5 - 5 - 5 - 5 - 5 - CPU limit - - - - - True - True - 1 - - - - - False - True - 1 - - - - - True - False - 5 - 5 - 5 - 5 - 5 - 5 - 0.019999999552965164 - in - - - True - False - 12 - - - True - False - vertical - - - True - False - - - True - False - 5 - 5 - 5 - 5 - 5 - 5 - Device: - 0 - - - False - True - 0 - - - - - True - False - 5 - 5 - 5 - 5 - 5 - 5 - - - True - True - 1 - - - - - False - True - 0 - - - - - True - False - - - True - False - vertical - - - True - False - 5 - 5 - 5 - 5 - 5 - 5 - Read - 0 - - - False - True - 0 - - - - - True - False - - - True - True - False - 5 - 5 - 5 - 5 - 4 - 5 - True - - - - - - False - True - 0 - - - - - True - True - 5 - 5 - 5 - 5 - 5 - 5 - adjustment9 - - - False - True - 1 - - - - - True - False - 5 - 5 - 5 - 5 - 5 - 5 - 0 - 0 - - Kb - Mb - Gb - Tb - - - - False - True - 2 - - - - - False - True - 1 - - - - - True - True - 0 - - - - - True - False - vertical - - - True - False - 5 - 5 - 5 - 5 - 5 - 5 - Write - 0 - - - False - True - 0 - - - - - True - False - - - True - True - False - 5 - 5 - 5 - 5 - 5 - 5 - True - - - - - - False - True - 0 - - - - - True - True - 5 - 5 - 5 - 5 - 5 - 5 - adjustment8 - - - False - True - 1 - - - - - True - False - 5 - 5 - 5 - 5 - 5 - 5 - 0 - 0 - - Kb - Mb - Gb - Tb - - - - False - True - 2 - - - - - False - True - 1 - - - - - True - True - 1 - - - - - False - True - 1 - - - - - - - - - True - False - 5 - 5 - 5 - 5 - 5 - 5 - Input/Output limit of block devices - - - - - False - True - 2 - - - - - True - False - 5 - 5 - 5 - 5 - 5 - 5 - 0.019999999552965164 - in - - - True - False - 12 - - - True - True - 5 - 5 - 5 - 5 - 5 - 5 - - - - - - - True - False - Manual input (for advanced users) - - - - - False - True - 3 - - - - - False - True - 1 - - - - - True - False - - - True - False - - - False - True - 0 - - - - - True - True - True - 5 - 5 - 5 - 5 - 5 - 5 - - - True - False - - - True - False - gtk-stop - - - False - True - 0 - - - - - True - False - 5 - 5 - 5 - 5 - Cancel - - - False - True - 1 - - - - - - - False - True - end - 1 - - - - - True - True - True - 5 - 5 - 5 - 5 - 5 - 5 - - - True - False - - - True - False - gtk-save - - - False - True - 0 - - - - - True - False - 5 - 5 - 5 - 5 - Save - - - False - True - 1 - - - - - - - False - True - end - 1 - - - - - False - True - 2 - - - - - - - True - False - True - - - True - False - Settings quotas - Editing - - - - - - - - True - False - 32 - com.ublinux.ubl-settings-resourcequota - 5 - - - - - - - True - False - dialog-information-symbolic - - - True - False - dialog-question-symbolic - - - True - False - False - - - imagemenuitem - True - False - image2 - False - - - - - - imagemenuitem - True - False - image1 - False - - - - - - True - False - process-stop-symbolic - - - True - False - emblem-ok-symbolic - - - False - False - 450 - dialog-question-symbolic - - - True - False - 5 - 5 - 5 - 5 - 5 - 5 - vertical - 10 - - - True - False - - - True - False - start - 20 - 20 - dialog-question-symbolic - 6 - - - False - True - 0 - - - - - True - False - vertical - - - True - False - start - 10 - 5 - Would you like to read documentation in the Web? - True - 0 - - - - - - - False - True - 0 - - - - - True - False - start - start - 10 - 10 - You will be redirected to documentation website where documentation is -translated and supported by community. - True - 0 - - - - False - True - 1 - - - - - Always redirect to online documentation - True - True - False - end - True - - - - False - True - end - 2 - - - - - - True - True - 1 - - - - - - True - True - 0 - - - - - True - False - 30 - True - - - Cancel - True - True - True - image8 - - - - True - True - 0 - - - - - Read Online - True - True - True - image9 - - - - True - True - 1 - - - - - False - True - 1 - - - - - - - True - False - True - - - True - False - UBLinux Settings - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - True - False - False - - - True - False - - - - - - True - False - - - - - - True - False - False - - - True - False - - - - - - True - False - - - - - - True - False - True - - - - - - 640 - 500 - False - 700 - 500 - com.ublinux.ubl-settings-resourcequota - center - - - True - False - vertical - - - True - False - vertical - - - True - False - - - True - False - 5 - 5 - 5 - 5 - 5 - 5 - 25 - - - False - True - 0 - - - - - True - False - start - 5 - 5 - 5 - 5 - 6 - 6 - - - - - - - False - True - 1 - - - - - False - True - 0 - - - - - True - False - vertical - - - 81 - True - False - - - True - False - start - - - -1 - - - - - False - True - 0 - - - - - False - True - 1 - - - - - True - False - 5 - 5 - 5 - 5 - 5 - 5 - True - True - vertical - - - True - False - 5 - 5 - 5 - 5 - 5 - 5 - True - True - vertical - - - True - True - - - True - False - vertical - - - True - True - in - - - True - False - - - True - True - liststore - 0 - - - - - - Type quota - True - - - - 0 - - - - - - - Quota -object - True - - - - 1 - - - - - - - Soft RAM limit, -(volume) - True - - - - 2 - - - - - - - Hard RAM limit, -(volume) - True - - - - 3 - - - - - - - Swap file -limit -(volume) - True - - - - 4 - - - - - - - CPU limit -(%) - True - - - - 5 - - - - - - - I/O -limit -(read) - True - - - - 6 - - - - - - - I/O -limit -(write) - True - - - - 7 - - - - - - - - - - - True - True - 0 - - - - - True - False - - - True - True - True - 5 - 5 - 5 - 5 - 5 - 5 - - - True - False - - - True - False - com.ublinux.ubl-settings-resourcequota.funnel - - - False - True - 0 - - - - - True - False - 5 - 5 - 5 - 5 - Filters - - - False - True - 1 - - - - - - - False - True - 0 - - - - - - - - True - True - True - 5 - 5 - 5 - 5 - 5 - 5 - - - True - False - - - True - False - tab-new-symbolic - - - False - True - 0 - - - - - True - False - 5 - 5 - 5 - 5 - Add - - - False - True - 1 - - - - - - - False - True - end - 2 - - - - - True - True - True - 5 - 5 - 5 - 5 - 5 - 5 - - - True - False - - - True - False - error-correct-symbolic - - - False - True - 0 - - - - - True - False - 5 - 5 - 5 - 5 - Edit - - - False - True - 1 - - - - - - - False - True - end - 3 - - - - - True - True - True - 5 - 5 - 5 - 5 - 5 - 5 - - - True - False - - - True - False - software-remove-symbolic - - - False - True - 0 - - - - - True - False - 5 - 5 - 5 - 5 - Remove - - - False - True - 1 - - - - - - - False - True - end - 4 - - - - - True - True - True - 5 - 5 - 5 - 5 - 5 - 5 - - - True - False - - - True - False - dialog-information-symbolic - - - False - True - 0 - - - - - True - False - 5 - 5 - 5 - 5 - Information - - - False - True - 1 - - - - - - - False - True - end - 5 - - - - - False - True - 2 - - - - - - - True - False - List quotas - - - False - - - - - True - False - vertical - - - True - False - - - True - False - 5 - 5 - 5 - 5 - 5 - 5 - Update every - - - False - True - 0 - - - - - True - True - 5 - 5 - 5 - 5 - 5 - 5 - adjustment1 - - - False - True - 1 - - - - - True - False - 5 - 5 - 5 - 5 - 5 - 5 - seconds - - - False - True - 2 - - - - - True - True - True - 5 - 5 - 5 - 5 - 5 - 5 - - - True - False - reload - - - - - True - True - 3 - - - - - False - True - 0 - - - - - True - False - - - True - False - True - natural - adjustment3 - natural - UTF-8 - True - False - - - True - True - 0 - - - - - True - False - vertical - adjustment3 - - - False - True - 1 - - - - - True - True - 1 - - - - - 1 - - - - - True - False - Dispatcher - - - 1 - False - - - - - True - False - vertical - - - True - False - - - All groups including empty - True - True - False - 5 - 5 - 5 - 5 - 5 - 5 - True - - - False - True - 0 - - - - - Core streams - True - True - False - 5 - 5 - 5 - 5 - 5 - 5 - True - - - False - True - 1 - - - - - False - True - 0 - - - - - True - False - - - True - False - True - natural - adjustment2 - natural - UTF-8 - 1024 - True - False - - - True - True - 0 - - - - - True - False - vertical - adjustment2 - - - False - True - 1 - - - - - True - True - 1 - - - - - 2 - - - - - True - False - Processes - - - 2 - False - - - - - True - False - vertical - - - True - False - - - True - False - 5 - 5 - 5 - 5 - 5 - 5 - View properties for - - - False - True - 0 - - - - - True - False - 5 - 5 - 5 - 5 - 5 - 5 - 0 - 0 - - User - Group - Process - Slice - - - - True - True - 1 - - - - - True - False - 5 - 5 - 5 - 5 - 5 - 5 - - - True - True - 2 - - - - - False - True - 0 - - - - - True - False - - - True - False - True - natural - adjustment3 - natural - UTF-8 - True - False - - - True - True - 0 - - - - - True - False - vertical - adjustment3 - - - False - True - 1 - - - - - True - True - 1 - - - - - 3 - - - - - True - False - Information - - - 3 - False - - - - - True - True - 0 - - - - - False - True - 0 - - - - - False - True - 2 - - - - - True - True - 0 - - - - - - - True - False - True - - - True - False - 5 - 5 - 5 - 5 - 2 - ubl-settings-resourcequota - - - - - - - - True - False - 5 - 5 - 5 - 5 - 6 - 6 - 32 - com.ublinux.ubl-settings-resourcequota - - - - - True - False - - - True - True - False - True - menuSave - - - True - False - - - True - False - Save - - - False - True - 0 - - - - - True - False - pan-down-symbolic - - - False - True - 1 - - - - - - - False - True - 0 - - - - - True - True - True - False - True - True - menuAbout - none - - - - - - - False - True - 1 - - - - - end - 1 - - - - - True - False - - - True - True - False - True - menuLoad - - - True - False - - - True - False - Load - - - False - True - 0 - - - - - True - False - pan-down-symbolic - - - False - True - 1 - - - - - - - False - True - 0 - - - - - 2 - - - - - - - - vertical - - - - - - - - False - start - False - - - True - False - 5 - 5 - 5 - 5 - 5 - 5 - vertical - - - Type quota - True - True - False - start - True - - - False - True - 2 - - - - - Quota volume - True - True - False - start - True - - - False - True - 3 - - - - - Soft RAM limit, (volume) - True - True - False - start - True - - - False - True - 4 - - - - - True - False - end - 5 - 5 - True - - - gtk-cancel - True - True - True - center - True - - - False - True - 0 - - - - - gtk-save - True - True - True - center - True - - - False - True - 1 - - - - - False - True - end - 5 - - - - - Hard RAM limit, (volume) - True - True - False - start - True - - - False - True - 6 - - - - - Swap file limit (volume) - True - True - False - start - True - - - False - True - 7 - - - - - CPU limit (%) - True - True - False - start - True - - - False - True - 8 - - - - - I/O limit (write) - True - True - False - start - True - - - False - True - 8 - - - - - I/O limit (read) - True - True - False - start - True - - - False - True - 9 - - - - - - - True - False - True - - - True - False - Filters - - - - - - - - True - False - 32 - com.ublinux.ubl-settings-resourcequota - 5 - - - - - - -- 2.35.1 From 1e9a97f099f8e99a9a6f6ecabc6d8b86b34443ba Mon Sep 17 00:00:00 2001 From: Igor Belitskiy Date: Tue, 6 Jun 2023 10:24:05 +0600 Subject: [PATCH 12/91] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB=20=D1=83=D0=B4=D0=B0=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5?= =?UTF-8?q?=20=D0=BA=D0=B2=D0=BE=D1=82=20=D0=B8=D0=B7=20=D1=82=D0=B0=D0=B1?= =?UTF-8?q?=D0=BB=D0=B8=D1=86=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/ubl-settings-resourcequota.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/ubl-settings-resourcequota.c b/source/ubl-settings-resourcequota.c index ab69490..af561ec 100644 --- a/source/ubl-settings-resourcequota.c +++ b/source/ubl-settings-resourcequota.c @@ -730,8 +730,6 @@ void tree_view_del_line() { g_object_ref(main_config.list); gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->treeViewMain), NULL); gtk_list_store_clear(main_config.list); - main_fill_tree_view_after_remove(); - gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->treeViewMain), model); main_config.type_quota = yon_char_parsed_shrink(main_config.type_quota, &main_config.size_tree_view,index); main_config.size_tree_view++; main_config.quota_volume = yon_char_parsed_shrink(main_config.quota_volume, &main_config.size_tree_view,index); @@ -764,6 +762,8 @@ void tree_view_del_line() { 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); } } void wrapper_all_save() { -- 2.35.1 From 0cb856e75fb8ab00525b311bbbb58dc8942d74cf Mon Sep 17 00:00:00 2001 From: Igor Belitskiy Date: Tue, 6 Jun 2023 10:48:45 +0600 Subject: [PATCH 13/91] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=20=D0=B2=D1=8B=D0=B2=D0=BE=D0=B4=20treeView?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/ubl-settings-resourcequota.c | 1 + 1 file changed, 1 insertion(+) diff --git a/source/ubl-settings-resourcequota.c b/source/ubl-settings-resourcequota.c index af561ec..ecd845b 100644 --- a/source/ubl-settings-resourcequota.c +++ b/source/ubl-settings-resourcequota.c @@ -290,6 +290,7 @@ void template_cfg(char* cmd, dictionary* load_cfg) { clear_array(); int size = 0; char** cfg = yon_config_load(cmd, &size); + philos_array_string_remove_char(&cfg, "\n", size); for (int index = 0; index < size; index++) { char* str_key_value = yon_char_new(cfg[index]); char* str_key = yon_char_divide_search(str_key_value, "=",-1); -- 2.35.1 From bb795ae24dfdf0fc549b76013b9ef5ceedac5430 Mon Sep 17 00:00:00 2001 From: Igor Belitskiy Date: Tue, 6 Jun 2023 11:40:27 +0600 Subject: [PATCH 14/91] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=B0=20=D0=BB=D0=BE=D0=B3=D0=B8=D0=BA=D0=B0?= =?UTF-8?q?=20=D0=B4=D0=BE=D1=87=D0=B5=D1=80=D0=BD=D0=B8=D1=85=20=D0=BE?= =?UTF-8?q?=D0=BA=D0=BE=D0=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/ubl-settings-resourcequota.c | 6 +++--- source/ubl-utils.c | 2 +- source/view_add.c | 21 +++++++++++++++++---- source/view_add.h | 1 + source/view_edit.c | 25 +++++++++++++++++++------ source/view_edit.h | 1 + 6 files changed, 42 insertions(+), 14 deletions(-) diff --git a/source/ubl-settings-resourcequota.c b/source/ubl-settings-resourcequota.c index ecd845b..54fbd83 100644 --- a/source/ubl-settings-resourcequota.c +++ b/source/ubl-settings-resourcequota.c @@ -809,7 +809,7 @@ char* save_format_value(int index) { split_simvol[1] = '\0'; } if (strstr(main_config.cpu_limit[index], "-") == NULL) { - value = yon_char_unite(value ,split_simvol, philos_format_cfg_str_size_memory("CPUQuota", main_config.cpu_limit[index],main_config.cpu_limit_size[index]), NULL); + value = yon_char_unite(value ,split_simvol,"CPUQuota=", main_config.cpu_limit[index], NULL); split_simvol[0] = ','; split_simvol[1] = '\0'; } @@ -872,18 +872,18 @@ void template_format_str_save(dictionary* load_cfg, char* source_cmd) { char* value = NULL; key = save_format_key(index); value = save_format_value(index); + puts(value); main_config.save_cfg_gui = yon_dictionary_create_with_data_connected(main_config.save_cfg_gui, key, yon_char_new(value)); check_save(load_cfg); if (key != NULL && value != NULL) { cmd = yon_char_unite(cmd, " " , key, "=" , value, " ", NULL); flag_save = 1; } - puts(key); + // puts(key); free(key); free(value); } if (flag_save) { - puts(cmd); yon_config_save(cmd); } free(cmd); diff --git a/source/ubl-utils.c b/source/ubl-utils.c index 4e03d75..dc48c14 100644 --- a/source/ubl-utils.c +++ b/source/ubl-utils.c @@ -628,7 +628,7 @@ char* philos_format_cfg_str_size_memory(char* str_key, char* str_source_value, i return yon_char_unite(str_key, "=" , str_value, "T" ,NULL); } else if (pow_size_memory== -1) { - return yon_char_unite(str_key, "=" , str_value, "%%" ,NULL); + return yon_char_unite(str_key, "=" , str_value, "%" ,NULL); } else { return yon_char_unite(str_key, "=" , str_value, "error" ,NULL); diff --git a/source/view_add.c b/source/view_add.c index 8294ca1..0ab20b8 100644 --- a/source/view_add.c +++ b/source/view_add.c @@ -53,8 +53,8 @@ void add_init_windows() { add_set_active_widgets(add_widgets->chkSevereRestrictionAdd, add_widgets->spinSevereRestrictionAdd, add_widgets->cmbSevereRestrictionAdd); add_set_active_widgets(add_widgets->chkPaddingFLAdd, add_widgets->spinPaddingFLAdd, add_widgets->cmbPaddingFLAdd); add_set_active_widgets(add_widgets->chkCPULimitAdd, add_widgets->spinCPULimitAdd, add_widgets->lblCPULimitAdd); - add_set_active_widgets(add_widgets->chbAddWrite, add_widgets->spinAddWrite, add_widgets->cbtAddWrite); - add_set_active_widgets(add_widgets->chbAddRead, add_widgets->spinAddRead, add_widgets->cbtAddRead); + add_set_active_widgets_device_io(add_widgets->chbAddWrite, add_widgets->spinAddWrite, add_widgets->cbtAddWrite); + add_set_active_widgets_device_io(add_widgets->chbAddRead, add_widgets->spinAddRead, add_widgets->cbtAddRead); add_generate_cmd(); } @@ -95,12 +95,25 @@ void add_destroy(GtkWidget *self) { add_widgets = NULL; } +void add_set_active_widgets_device_io(GtkWidget *self, GtkWidget *entry, GtkWidget *label) { + int menu_id = gtk_combo_box_get_active(GTK_COMBO_BOX(add_widgets->cbtAddDevice)); + if (menu_id != -1) { + gboolean active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(self)); + gtk_widget_set_sensitive(entry, active); + gtk_widget_set_sensitive(label, active); + } + else { + gtk_widget_set_sensitive(entry, 0); + gtk_widget_set_sensitive(label, 0); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(self), 0); + } + +} void add_set_active_widgets(GtkWidget *self, GtkWidget *entry, GtkWidget *label) { gboolean active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(self)); gtk_widget_set_sensitive(entry, active); gtk_widget_set_sensitive(label, active); } - void add_localization(add_window *widgets) { } @@ -272,7 +285,7 @@ void add_generate_cmd() { str_cmd = yon_char_unite(str_cmd, split_simvol, "CPUQuota=", yon_char_from_int(size_bite), - "%%", NULL); + "%", NULL); split_simvol[0] = ','; split_simvol[1] = '\0'; } diff --git a/source/view_add.h b/source/view_add.h index a55301b..527a817 100644 --- a/source/view_add.h +++ b/source/view_add.h @@ -79,6 +79,7 @@ int add_get_limit_cpu_size(); int add_get_limit_swap_size(); int add_get_quota_object_size(); +void add_set_active_widgets_device_io(GtkWidget *self, GtkWidget *entry, GtkWidget *label); void add_get_cmd_group(char* cmd_get_group); char* add_get_select_device_to_level_2(); void add_generate_cmd(); diff --git a/source/view_edit.c b/source/view_edit.c index 5d0b248..475e216 100644 --- a/source/view_edit.c +++ b/source/view_edit.c @@ -100,8 +100,8 @@ void edit_init_windows() { edit_set_active_widgets(edit_widgets->chkSevereRestrictionEdit, edit_widgets->spinSevereRestrictionEdit, edit_widgets->cmbSevereRestrictionEdit); edit_set_active_widgets(edit_widgets->chkPaddingFLEdit, edit_widgets->spinPaddingFLEdit, edit_widgets->cmbPaddingFLEdit); edit_set_active_widgets(edit_widgets->chkCPULimitEdit, edit_widgets->spinCPULimitEdit, edit_widgets->lblCPULimitEdit); - edit_set_active_widgets(edit_widgets->chbEditWrite, edit_widgets->spinEditWrite, edit_widgets->cbtEditWrite); - edit_set_active_widgets(edit_widgets->chbEditRead, edit_widgets->spinEditRead, edit_widgets->cbtEditRead); + edit_set_active_widgets_device_io(edit_widgets->chbEditWrite, edit_widgets->spinEditWrite, edit_widgets->cbtEditWrite); + edit_set_active_widgets_device_io(edit_widgets->chbEditRead, edit_widgets->spinEditRead, edit_widgets->cbtEditRead); } void edit_set_active_widgets(GtkWidget *self, GtkWidget *entry, GtkWidget *label) { @@ -110,6 +110,20 @@ void edit_set_active_widgets(GtkWidget *self, GtkWidget *entry, GtkWidget *label gtk_widget_set_sensitive(label, active); } +void edit_set_active_widgets_device_io(GtkWidget *self, GtkWidget *entry, GtkWidget *label) { + int menu_id = gtk_combo_box_get_active(GTK_COMBO_BOX(edit_widgets->cbtEditDevice)); + if (menu_id != -1) { + gboolean active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(self)); + gtk_widget_set_sensitive(entry, active); + gtk_widget_set_sensitive(label, active); + } + else { + gtk_widget_set_sensitive(entry, 0); + gtk_widget_set_sensitive(label, 0); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(self), 0); + } + +} char* edit_get_select_device() { char* text = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(edit_widgets->cbtEditDevice)); if (text != NULL) { @@ -160,7 +174,7 @@ char* edit_get_hard() { char* edit_get_limit_cpu() { if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(edit_widgets->chkCPULimitEdit))) { int size_bite = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(edit_widgets->spinCPULimitEdit)); - return yon_char_from_int(size_bite); + return yon_char_unite(yon_char_from_int(size_bite), "%" ,NULL); } else { char* str = (char*)malloc(sizeof(char*)*2); @@ -217,8 +231,7 @@ void edit_temp_set(char* str_value, int pow_mem, GtkWidget* cheek, GtkWidget* sp gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(cheek), 1); if (combo_box_text != NULL) { // Todo: add code - gtk_combo_box_set_active(GTK_COMBO_BOX(combo_box_text), pow_mem); - + gtk_combo_box_set_active(GTK_COMBO_BOX(combo_box_text), pow_mem); } } else { @@ -261,7 +274,7 @@ void edit_generate_cmd() { str_cmd = yon_char_unite(str_cmd, split_simvol, "CPUQuota=", yon_char_from_int(size_bite), - "%%", NULL); + "%", NULL); split_simvol[0] = ','; split_simvol[1] = '\0'; } diff --git a/source/view_edit.h b/source/view_edit.h index 32fd5f9..155f5e6 100644 --- a/source/view_edit.h +++ b/source/view_edit.h @@ -80,4 +80,5 @@ int edit_get_soft_size(); int edit_get_hard_size(); int edit_get_limit_cpu_size(); int edit_get_limit_swap_size(); +void edit_set_active_widgets_device_io(GtkWidget *self, GtkWidget *entry, GtkWidget *label); #endif \ No newline at end of file -- 2.35.1 From d563e3f93ba73a92e7d72b83266b9344a3437258 Mon Sep 17 00:00:00 2001 From: Igor Belitskiy Date: Tue, 6 Jun 2023 14:16:42 +0600 Subject: [PATCH 15/91] =?UTF-8?q?=D0=A1=D0=B4=D0=B5=D0=BB=D0=B0=D0=BD?= =?UTF-8?q?=D0=B0=20=D0=B7=D0=B0=D1=89=D0=B8=D1=82=D0=B0=20=D0=BE=D1=82=20?= =?UTF-8?q?=D0=B7=D0=B0=D0=BF=D0=B8=D1=81=D0=B8=20=D0=BF=D1=83=D1=81=D1=82?= =?UTF-8?q?=D1=8B=D1=85=20=D0=B7=D0=BD=D0=B0=D1=87=D0=B5=D0=BD=D0=B8=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/view_add.c | 25 ++++++++++++++++--------- source/view_add.h | 1 + 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/source/view_add.c b/source/view_add.c index 0ab20b8..ed2dbbb 100644 --- a/source/view_add.c +++ b/source/view_add.c @@ -38,7 +38,7 @@ add_window *add_setup_window(char* glade_path) { add_widgets->spinAddWrite = yon_gtk_builder_get_widget(builder,"spinAddWrite"); add_widgets->chbAddWrite = yon_gtk_builder_get_widget(builder,"chbAddWrite"); add_widgets->cbtAddWrite = yon_gtk_builder_get_widget(builder,"cbtAddWrite"); - + add_widgets->boxBlockGui = yon_gtk_builder_get_widget(builder,"boxBlockGui"); device_fill_disk(add_widgets->cbtAddDevice); add_event(add_widgets); add_init_windows(); @@ -49,13 +49,19 @@ add_window *add_setup_window(char* glade_path) { } void add_init_windows() { - add_set_active_widgets(add_widgets->chkSoftRestrictionAdd, add_widgets->spiSevereRestrictionAdd, add_widgets->cmSevereRestrictionAdd); - add_set_active_widgets(add_widgets->chkSevereRestrictionAdd, add_widgets->spinSevereRestrictionAdd, add_widgets->cmbSevereRestrictionAdd); - add_set_active_widgets(add_widgets->chkPaddingFLAdd, add_widgets->spinPaddingFLAdd, add_widgets->cmbPaddingFLAdd); - add_set_active_widgets(add_widgets->chkCPULimitAdd, add_widgets->spinCPULimitAdd, add_widgets->lblCPULimitAdd); - add_set_active_widgets_device_io(add_widgets->chbAddWrite, add_widgets->spinAddWrite, add_widgets->cbtAddWrite); - add_set_active_widgets_device_io(add_widgets->chbAddRead, add_widgets->spinAddRead, add_widgets->cbtAddRead); - add_generate_cmd(); + if (gtk_combo_box_get_active(GTK_COMBO_BOX(add_widgets->cbxAddQuotaLevel2)) != -1) { + gtk_widget_set_sensitive(add_widgets->boxBlockGui, 1); + add_set_active_widgets(add_widgets->chkSoftRestrictionAdd, add_widgets->spiSevereRestrictionAdd, add_widgets->cmSevereRestrictionAdd); + add_set_active_widgets(add_widgets->chkSevereRestrictionAdd, add_widgets->spinSevereRestrictionAdd, add_widgets->cmbSevereRestrictionAdd); + add_set_active_widgets(add_widgets->chkPaddingFLAdd, add_widgets->spinPaddingFLAdd, add_widgets->cmbPaddingFLAdd); + add_set_active_widgets(add_widgets->chkCPULimitAdd, add_widgets->spinCPULimitAdd, add_widgets->lblCPULimitAdd); + add_set_active_widgets_device_io(add_widgets->chbAddWrite, add_widgets->spinAddWrite, add_widgets->cbtAddWrite); + add_set_active_widgets_device_io(add_widgets->chbAddRead, add_widgets->spinAddRead, add_widgets->cbtAddRead); + add_generate_cmd(); + } + else { + gtk_widget_set_sensitive(add_widgets->boxBlockGui, 0); + } } void add_event(add_window *widgets) { @@ -68,7 +74,8 @@ void add_event(add_window *widgets) { g_signal_connect(G_OBJECT(widgets->chbAddRead), "toggled", G_CALLBACK(add_init_windows), NULL); g_signal_connect(G_OBJECT(widgets->chbAddWrite), "toggled", G_CALLBACK(add_init_windows), NULL); g_signal_connect(G_OBJECT(widgets->cbxAddQuotaObj),"changed",G_CALLBACK(add_update_combo_box), NULL); - + g_signal_connect(G_OBJECT(widgets->cbxAddQuotaLevel2),"changed",G_CALLBACK(add_init_windows), NULL); + g_signal_connect(G_OBJECT(widgets->spiSevereRestrictionAdd),"value-changed",G_CALLBACK(add_generate_cmd), NULL); g_signal_connect(G_OBJECT(widgets->spinSevereRestrictionAdd),"value-changed",G_CALLBACK(add_generate_cmd), NULL); g_signal_connect(G_OBJECT(widgets->spinPaddingFLAdd),"value-changed",G_CALLBACK(add_generate_cmd), NULL); diff --git a/source/view_add.h b/source/view_add.h index 527a817..5ffbaa2 100644 --- a/source/view_add.h +++ b/source/view_add.h @@ -50,6 +50,7 @@ typedef struct { GtkWidget* cbtAddDevice; GtkWidget* cbxAddQuotaObj; GtkWidget* cbxAddQuotaLevel2; + GtkWidget* boxBlockGui; } add_window; // Функции add_window *add_setup_window(char* glade_path); -- 2.35.1 From b09c95fa418f1eb0f864c2f331f99fcedcedd36e Mon Sep 17 00:00:00 2001 From: Igor Belitskiy Date: Tue, 6 Jun 2023 17:03:33 +0600 Subject: [PATCH 16/91] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=B0=20=D1=81=D0=BE=D1=85=D1=80=D0=B0=D0=BD?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=B8=20=D0=B7=D0=B0=D0=B3=D1=80?= =?UTF-8?q?=D1=83=D0=B7=D0=BA=D0=B0=20=D0=BA=D0=BE=D0=BD=D1=84=D0=B8=D0=B3?= =?UTF-8?q?=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/ubl-settings-resourcequota.c | 96 ++++++++++++++++++++++++----- source/ubl-settings-resourcequota.h | 20 +++++- source/ubl-strings.h | 3 +- source/view_edit.c | 3 +- ubl-settings-resourcequota.glade | 2 +- 5 files changed, 103 insertions(+), 21 deletions(-) diff --git a/source/ubl-settings-resourcequota.c b/source/ubl-settings-resourcequota.c index 54fbd83..22b1dfd 100644 --- a/source/ubl-settings-resourcequota.c +++ b/source/ubl-settings-resourcequota.c @@ -113,6 +113,8 @@ void config_init(){ main_config.lock_save_global=0; main_config.lock_save_local=0; main_config.size_tree_view = 0; + main_config.flag_load = 0; + main_config.size_array_del_line = 0; } main_window *setup_window(){ @@ -254,11 +256,13 @@ void main_update_information() { } void load_system_cfg() { + main_config.flag_load = 0; template_cfg(CMD_LOAD_SYSTEM, main_config.load_system_cfg); yon_ubl_status_box_render(LOCAL_LOAD_SUCCESS, BACKGROUND_IMAGE_SUCCESS_TYPE); } void load_global_cfg() { + main_config.flag_load = 1; template_cfg(CMD_LOAD_GLOBAL, main_config.load_global_cfg); yon_ubl_status_box_render(GLOBAL_LOAD_SUCCESS,BACKGROUND_IMAGE_SUCCESS_TYPE); } @@ -273,6 +277,8 @@ void clear_array() { 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.array_del_line, main_config.size_array_del_line); + main_config.size_array_del_line = 0; philos_free_int_array(&main_config.type_quota_size, main_config.size_tree_view); philos_free_int_array(&main_config.quota_volume_size, main_config.size_tree_view); @@ -731,6 +737,11 @@ void tree_view_del_line() { g_object_ref(main_config.list); gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->treeViewMain), NULL); gtk_list_store_clear(main_config.list); + char* key_del = save_format_key(main_config.size_tree_view-1); + if (key_del != NULL) { + main_config.array_del_line = yon_char_parsed_append(main_config.array_del_line, &main_config.size_array_del_line, key_del); + free(key_del); + } main_config.type_quota = yon_char_parsed_shrink(main_config.type_quota, &main_config.size_tree_view,index); main_config.size_tree_view++; main_config.quota_volume = yon_char_parsed_shrink(main_config.quota_volume, &main_config.size_tree_view,index); @@ -768,15 +779,23 @@ void tree_view_del_line() { } } void wrapper_all_save() { - // template_format_str_save(main_config.load_global_cfg, CMD_LOAD_GLOBAL); + if (main_config.flag_load == 0) { + template_format_str_save(main_config.load_system_cfg, CMD_ALL_SAVE, CMD_ALL_REMOVE); + } + else { + template_format_str_save(main_config.load_global_cfg, CMD_ALL_SAVE, CMD_ALL_REMOVE); + } + yon_ubl_status_box_render(GLOBAL_LOCAL_SAVE_SUCCESS,BACKGROUND_IMAGE_SUCCESS_TYPE); } void wrapper_global_save() { - template_format_str_save(main_config.load_global_cfg, CMD_SAVE_GLOBAL); + template_format_str_save(main_config.load_global_cfg, CMD_SAVE_GLOBAL, CMD_REMOVE_GLOBAL); + yon_ubl_status_box_render(GLOBAL_LOAD_SUCCESS,BACKGROUND_IMAGE_SUCCESS_TYPE); } void wrapper_system_save() { - template_format_str_save(main_config.load_system_cfg, CMD_SAVE_SYSTEM); + template_format_str_save(main_config.load_system_cfg, CMD_SAVE_SYSTEM, CMD_REMOVE_SYSTEM); + yon_ubl_status_box_render(LOCAL_SAVE_SUCCESS,BACKGROUND_IMAGE_SUCCESS_TYPE); } @@ -794,6 +813,8 @@ char* save_format_value(int index) { split_simvol[0] = 0; split_simvol[1] = 0; if (strstr(main_config.soft_raw_limit[index], "-") == NULL) { + puts(main_config.soft_raw_limit[index]); + printf("%d\n", main_config.soft_raw_limit_size[index]); value = yon_char_unite(philos_format_cfg_str_size_memory("MemoryHigh", main_config.soft_raw_limit[index],main_config.soft_raw_limit_size[index]),NULL); split_simvol[0] = ','; split_simvol[1] = '\0'; @@ -824,6 +845,7 @@ char* save_format_value(int index) { return value; } + int check_save(dictionary* load_cfg) { dictionary* ptr_dict_gui = NULL; dictionary* ptr_dict_load = NULL; @@ -840,6 +862,7 @@ int check_save(dictionary* load_cfg) { } for_dictionaries(ptr_dict_gui, main_config.save_cfg_gui) { for_dictionaries(ptr_dict_load, load_cfg) { + key_gui = ptr_dict_gui->key; value_gui = (char*)ptr_dict_gui->data; key_load = ptr_dict_load->key; @@ -859,12 +882,32 @@ int check_save(dictionary* load_cfg) { return 1; } } + return 0; +} +int template_format_str_save(dictionary* load_cfg, char* source_set_cmd, char* source_remove_cmd) { + char* cmd_remove = template_format_str_remove_save(source_remove_cmd); + char* cmd_set = template_format_str_set_save(load_cfg, source_set_cmd); + if (cmd_set != NULL && cmd_remove != NULL) { + yon_config_save(yon_char_unite(cmd_set, "; " , cmd_remove, NULL)); + } + else if (cmd_remove != NULL) { + yon_config_save(cmd_remove); + puts(cmd_remove); + } + else if (cmd_set != NULL) { + yon_config_save(cmd_set); + puts(cmd_remove); + } + else { + return 0; + } + return 1; + } - -void template_format_str_save(dictionary* load_cfg, char* source_cmd) { +char* template_format_str_set_save(dictionary* load_cfg, char* source_set_cmd) { yon_dictionary_free_all(main_config.save_cfg_gui, NULL); - char* cmd = yon_char_new(source_cmd); + char* cmd = yon_char_new(source_set_cmd); main_config.save_cfg_gui = yon_dictionary_create_empty(); int flag_save = 0; for (size_t index = 0; index < main_config.size_tree_view; index++) { @@ -872,23 +915,45 @@ void template_format_str_save(dictionary* load_cfg, char* source_cmd) { char* value = NULL; key = save_format_key(index); value = save_format_value(index); - puts(value); main_config.save_cfg_gui = yon_dictionary_create_with_data_connected(main_config.save_cfg_gui, key, yon_char_new(value)); - check_save(load_cfg); if (key != NULL && value != NULL) { - cmd = yon_char_unite(cmd, " " , key, "=" , value, " ", NULL); - flag_save = 1; + if (check_save(load_cfg) == 1) { + cmd = yon_char_unite(cmd, " " , key, "=" , value, " ", NULL); + flag_save = 1; + } + } + if (key != NULL) { + free(key); + } + if (value != NULL) { + free(value); } - // puts(key); - free(key); - free(value); } if (flag_save) { - yon_config_save(cmd); + return cmd; } free(cmd); + return NULL; + } +char* template_format_str_remove_save(char* source_remove_cmd) { + char* cmd = yon_char_new(source_remove_cmd); + int flag_save = 0; + for (size_t index = 0; index < main_config.size_array_del_line; index++) { + char* key = main_config.array_del_line[index]; + if (key != NULL) { + cmd = yon_char_unite(cmd, " " , key, " ", NULL); + flag_save = 1; + free(key); + } + } + if (flag_save) { + return cmd; + } + free(cmd); + return NULL; +} void main_fill_tree_view_after_remove() { for (int index= 0; index < main_config.size_tree_view; index++) { @@ -1005,7 +1070,6 @@ int main(int argc, char *argv[]){ event_all(widgets); main_event(widgets); - yon_ubl_header_setup(widgets->HeadOverlay,widgets->HeadBox,widgets->HeadImage,banner_path); if (yon_ubl_status_box_setup(widgets->StatusIcon,widgets->StatusBox,widgets->StatusLabel)) @@ -1017,6 +1081,8 @@ 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_system_cfg(); gtk_main(); } diff --git a/source/ubl-settings-resourcequota.h b/source/ubl-settings-resourcequota.h index ebfef2b..3fecee3 100755 --- a/source/ubl-settings-resourcequota.h +++ b/source/ubl-settings-resourcequota.h @@ -30,11 +30,17 @@ #define LocalePath "/usr/share/locale" #define LocaleName "ubl-settings-resourcequota" -#define CMD_LOAD_GLOBAL "ubconfig --default --source global get security" -#define CMD_LOAD_SYSTEM "ubconfig --default --source system get security" + +#define CMD_LOAD_GLOBAL "ubconfig --default --source global get security CGROUP_QUOTA[*]" +#define CMD_LOAD_SYSTEM "ubconfig --default --source system get security CGROUP_QUOTA[*]" #define CMD_SAVE_GLOBAL "ubconfig --default --source global set security" #define CMD_SAVE_SYSTEM "ubconfig --default --source system set security" +#define CMD_ALL_SAVE "ubconfig set security " +#define CMD_ALL_REMOVE "ubconfig remove security " +#define CMD_REMOVE_GLOBAL "ubconfig --target global --noexecute remove security " +#define CMD_REMOVE_SYSTEM "ubconfig --target system remove security " #define CMD_GET_SLICE_SERVICE "systemd-cgls --no-page" + #define CMD_GET_GROUP "cut -d: -f1 /etc/group" typedef char *string; string version_application = ""; @@ -76,6 +82,8 @@ typedef struct config_str i_o_limit_read; config_str i_o_limit_write; config_str disk; + config_str array_del_line; + int size_array_del_line; int *type_quota_size; int *quota_volume_size; @@ -89,6 +97,9 @@ typedef struct dictionary *load_global_cfg; dictionary *load_system_cfg; dictionary *save_cfg_gui; + // flag_load | 0 system + // flag_load | 1 global + int flag_load; } config; typedef struct @@ -197,4 +208,7 @@ void wrapper_template_save(char *check_flag); void wrapper_system_save(); void wrapper_global_save(); void wrapper_all_save(); -void template_format_str_save(dictionary *load_cfg, char *source_cmd); +int template_format_str_save(dictionary *load_cfg, char *source_cmd, char* source_remove_cmd); +char* template_format_str_remove_save(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 diff --git a/source/ubl-strings.h b/source/ubl-strings.h index b5cca97..6a1079c 100644 --- a/source/ubl-strings.h +++ b/source/ubl-strings.h @@ -41,4 +41,5 @@ #define LOCAL_SAVE_SUCCESS _("Local configuration saving succseeded.") #define STR_DEL_TABLE _("Quota deleted") #define STR_NO_SELECT_TABLE _("Quota deleted") -#define STR_QUOTAS_ADD _("Quota deleted") \ No newline at end of file +#define STR_QUOTAS_ADD _("Quota deleted") +#define ALL_SAVE_SUCCESS _("Save configuration") \ No newline at end of file diff --git a/source/view_edit.c b/source/view_edit.c index 475e216..adf23d1 100644 --- a/source/view_edit.c +++ b/source/view_edit.c @@ -38,6 +38,7 @@ edit_window *edit_setup_window(char* glade_path){ device_fill_disk(edit_widgets->cbtEditDevice); // edit_event(edit_widgets); edit_localization(edit_widgets); + edit_init_windows(); } return edit_widgets; } @@ -95,13 +96,13 @@ void edit_show(GtkWidget *self, char* glade_path) { } void edit_init_windows() { - edit_generate_cmd(); edit_set_active_widgets(edit_widgets->chkSoftRestrictionEdit, edit_widgets->spiSevereRestrictionEdit, edit_widgets->cmSevereRestrictionEdit); edit_set_active_widgets(edit_widgets->chkSevereRestrictionEdit, edit_widgets->spinSevereRestrictionEdit, edit_widgets->cmbSevereRestrictionEdit); edit_set_active_widgets(edit_widgets->chkPaddingFLEdit, edit_widgets->spinPaddingFLEdit, edit_widgets->cmbPaddingFLEdit); edit_set_active_widgets(edit_widgets->chkCPULimitEdit, edit_widgets->spinCPULimitEdit, edit_widgets->lblCPULimitEdit); edit_set_active_widgets_device_io(edit_widgets->chbEditWrite, edit_widgets->spinEditWrite, edit_widgets->cbtEditWrite); edit_set_active_widgets_device_io(edit_widgets->chbEditRead, edit_widgets->spinEditRead, edit_widgets->cbtEditRead); + edit_generate_cmd(); } void edit_set_active_widgets(GtkWidget *self, GtkWidget *entry, GtkWidget *label) { diff --git a/ubl-settings-resourcequota.glade b/ubl-settings-resourcequota.glade index 1107ca6..b50039b 100644 --- a/ubl-settings-resourcequota.glade +++ b/ubl-settings-resourcequota.glade @@ -307,7 +307,7 @@ - + True False vertical -- 2.35.1 From 78674ed79b3b351fb961f2d5ba6728a18b043569 Mon Sep 17 00:00:00 2001 From: Igor Belitskiy Date: Wed, 7 Jun 2023 09:24:46 +0600 Subject: [PATCH 17/91] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8?= =?UTF-8?q?=D0=BB=20=D0=B2=D1=8B=D0=B2=D0=BE=D0=B4=20=D1=81=D0=BE=D0=BE?= =?UTF-8?q?=D0=B1=D1=89=D0=B5=D0=BD=D0=B8=D1=8F=20"=D0=9D=D0=B5=D1=87?= =?UTF-8?q?=D0=B5=D0=B3=D0=BE=20=D1=81=D0=BE=D1=85=D1=80=D0=B0=D0=BD=D1=8F?= =?UTF-8?q?=D1=82=D1=8C"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/ubl-settings-resourcequota.c | 52 +++++++++++++++++++++-------- source/ubl-strings.h | 3 +- ubl-settings-resourcequota.glade | 1 + 3 files changed, 41 insertions(+), 15 deletions(-) diff --git a/source/ubl-settings-resourcequota.c b/source/ubl-settings-resourcequota.c index 22b1dfd..5032915 100644 --- a/source/ubl-settings-resourcequota.c +++ b/source/ubl-settings-resourcequota.c @@ -739,7 +739,7 @@ void tree_view_del_line() { gtk_list_store_clear(main_config.list); char* key_del = save_format_key(main_config.size_tree_view-1); if (key_del != NULL) { - main_config.array_del_line = yon_char_parsed_append(main_config.array_del_line, &main_config.size_array_del_line, key_del); + main_config.array_del_line = yon_char_parsed_append(main_config.array_del_line, &main_config.size_array_del_line, yon_char_new(key_del)); free(key_del); } main_config.type_quota = yon_char_parsed_shrink(main_config.type_quota, &main_config.size_tree_view,index); @@ -779,23 +779,40 @@ void tree_view_del_line() { } } void wrapper_all_save() { + int flag_mess_save = 0; if (main_config.flag_load == 0) { - template_format_str_save(main_config.load_system_cfg, CMD_ALL_SAVE, CMD_ALL_REMOVE); + flag_mess_save = template_format_str_save(main_config.load_system_cfg, CMD_ALL_SAVE, CMD_ALL_REMOVE); } else { - template_format_str_save(main_config.load_global_cfg, CMD_ALL_SAVE, CMD_ALL_REMOVE); + flag_mess_save = template_format_str_save(main_config.load_global_cfg, CMD_ALL_SAVE, CMD_ALL_REMOVE); } - yon_ubl_status_box_render(GLOBAL_LOCAL_SAVE_SUCCESS,BACKGROUND_IMAGE_SUCCESS_TYPE); + if (flag_mess_save) { + yon_ubl_status_box_render(GLOBAL_LOCAL_SAVE_SUCCESS,BACKGROUND_IMAGE_SUCCESS_TYPE); + } + else { + yon_ubl_status_box_render(MESS_NOTHING_SAVE, BACKGROUND_IMAGE_SUCCESS_TYPE); + } + } void wrapper_global_save() { - template_format_str_save(main_config.load_global_cfg, CMD_SAVE_GLOBAL, CMD_REMOVE_GLOBAL); - yon_ubl_status_box_render(GLOBAL_LOAD_SUCCESS,BACKGROUND_IMAGE_SUCCESS_TYPE); + if (template_format_str_save(main_config.load_global_cfg, CMD_SAVE_GLOBAL, CMD_REMOVE_GLOBAL)) { + yon_ubl_status_box_render(GLOBAL_LOAD_SUCCESS,BACKGROUND_IMAGE_SUCCESS_TYPE); + } + else { + yon_ubl_status_box_render(MESS_NOTHING_SAVE, BACKGROUND_IMAGE_SUCCESS_TYPE); + } + } void wrapper_system_save() { - template_format_str_save(main_config.load_system_cfg, CMD_SAVE_SYSTEM, CMD_REMOVE_SYSTEM); - yon_ubl_status_box_render(LOCAL_SAVE_SUCCESS,BACKGROUND_IMAGE_SUCCESS_TYPE); + if (template_format_str_save(main_config.load_system_cfg, CMD_SAVE_SYSTEM, CMD_REMOVE_SYSTEM)) { + yon_ubl_status_box_render(LOCAL_SAVE_SUCCESS,BACKGROUND_IMAGE_SUCCESS_TYPE); + } + else { + yon_ubl_status_box_render(MESS_NOTHING_SAVE, BACKGROUND_IMAGE_SUCCESS_TYPE); + } + } @@ -813,8 +830,6 @@ char* save_format_value(int index) { split_simvol[0] = 0; split_simvol[1] = 0; if (strstr(main_config.soft_raw_limit[index], "-") == NULL) { - puts(main_config.soft_raw_limit[index]); - printf("%d\n", main_config.soft_raw_limit_size[index]); value = yon_char_unite(philos_format_cfg_str_size_memory("MemoryHigh", main_config.soft_raw_limit[index],main_config.soft_raw_limit_size[index]),NULL); split_simvol[0] = ','; split_simvol[1] = '\0'; @@ -862,7 +877,6 @@ int check_save(dictionary* load_cfg) { } for_dictionaries(ptr_dict_gui, main_config.save_cfg_gui) { for_dictionaries(ptr_dict_load, load_cfg) { - key_gui = ptr_dict_gui->key; value_gui = (char*)ptr_dict_gui->data; key_load = ptr_dict_load->key; @@ -892,16 +906,19 @@ int template_format_str_save(dictionary* load_cfg, char* source_set_cmd, char* s } else if (cmd_remove != NULL) { yon_config_save(cmd_remove); - puts(cmd_remove); } else if (cmd_set != NULL) { yon_config_save(cmd_set); - puts(cmd_remove); } else { return 0; } - + if (cmd_remove != NULL) { + free(cmd_remove); + } + if (cmd_set != NULL) { + free(cmd_set); + } return 1; } @@ -909,6 +926,9 @@ char* template_format_str_set_save(dictionary* load_cfg, char* source_set_cmd) { yon_dictionary_free_all(main_config.save_cfg_gui, NULL); char* cmd = yon_char_new(source_set_cmd); main_config.save_cfg_gui = yon_dictionary_create_empty(); + if (check_save(load_cfg)) { + return NULL; + } int flag_save = 0; for (size_t index = 0; index < main_config.size_tree_view; index++) { char* key = NULL; @@ -940,9 +960,13 @@ char* template_format_str_set_save(dictionary* load_cfg, char* source_set_cmd) { char* template_format_str_remove_save(char* source_remove_cmd) { char* cmd = yon_char_new(source_remove_cmd); int flag_save = 0; + if (main_config.size_array_del_line == 0) { + return NULL; + } for (size_t index = 0; index < main_config.size_array_del_line; index++) { char* key = main_config.array_del_line[index]; if (key != NULL) { + puts(key); cmd = yon_char_unite(cmd, " " , key, " ", NULL); flag_save = 1; free(key); diff --git a/source/ubl-strings.h b/source/ubl-strings.h index 6a1079c..872506e 100644 --- a/source/ubl-strings.h +++ b/source/ubl-strings.h @@ -42,4 +42,5 @@ #define STR_DEL_TABLE _("Quota deleted") #define STR_NO_SELECT_TABLE _("Quota deleted") #define STR_QUOTAS_ADD _("Quota deleted") -#define ALL_SAVE_SUCCESS _("Save configuration") \ No newline at end of file +#define ALL_SAVE_SUCCESS _("Save configuration") +#define MESS_NOTHING_SAVE _("Nothing to save!") \ No newline at end of file diff --git a/ubl-settings-resourcequota.glade b/ubl-settings-resourcequota.glade index b50039b..42674c7 100644 --- a/ubl-settings-resourcequota.glade +++ b/ubl-settings-resourcequota.glade @@ -2736,6 +2736,7 @@ translated and supported by community. 640 500 False + center 700 500 com.ublinux.ubl-settings-resourcequota -- 2.35.1 From 95920b81a1a64b63b5a702abee9d5451bf5b2252 Mon Sep 17 00:00:00 2001 From: Igor Belitskiy Date: Wed, 7 Jun 2023 16:20:49 +0600 Subject: [PATCH 18/91] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=B0=20=D1=83=D1=82=D0=B5=D1=87=D0=BA=D0=B0?= =?UTF-8?q?=20=D0=BF=D0=B0=D0=BC=D1=8F=D1=82=D0=B8=20=D0=BF=D1=80=D0=B8=20?= =?UTF-8?q?=D1=81=D0=BE=D1=85=D1=80=D0=B0=D0=BD=D0=B5=D0=BD=D0=B8=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/ubl-settings-resourcequota.c | 39 ++++++++++++++++------------- source/ubl-settings-resourcequota.h | 2 +- source/ubl-utils.c | 6 ++--- source/view_add.c | 7 ++++++ source/view_edit.c | 9 ++++++- ubl-settings-resourcequota.pot | 3 +++ ubl-settings-resourcequota_ru.po | 3 +++ 7 files changed, 46 insertions(+), 23 deletions(-) diff --git a/source/ubl-settings-resourcequota.c b/source/ubl-settings-resourcequota.c index 5032915..f4f5b53 100644 --- a/source/ubl-settings-resourcequota.c +++ b/source/ubl-settings-resourcequota.c @@ -277,6 +277,7 @@ void clear_array() { 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.array_del_line, main_config.size_array_del_line); main_config.size_array_del_line = 0; @@ -425,6 +426,7 @@ void str_split_value(char* values, int index) { 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); @@ -456,8 +458,11 @@ void set_pow_size(char* str_find, int** array_size, char*** array_data , int ind index--; } else if (strstr(str_find,"T") != NULL) { + puts(str_find); *array_size = philos_int_append(*array_size, &index, 3); + printf("%d\n\n", (*array_size)[index-1]); str_find = yon_char_divide(str_find, length-1); + str_find = yon_char_unite(str_find," ", STR_TB, NULL); index--; } @@ -710,6 +715,7 @@ void wrapper_edit_show() { 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_event(get_widget_edit()); + edit_init_windows(); edit_set_limit_swap(main_config.swap[index], main_config.swap_size[index]); // edit_set_select_device(main_config.cpu_limit[index]); g_signal_connect(G_OBJECT(get_widget_edit()->btnSaveEditSave), "clicked", G_CALLBACK(main_edit_btn_save), NULL); @@ -737,7 +743,7 @@ void tree_view_del_line() { g_object_ref(main_config.list); gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->treeViewMain), NULL); gtk_list_store_clear(main_config.list); - char* key_del = save_format_key(main_config.size_tree_view-1); + char* key_del = save_format_key(index); if (key_del != NULL) { main_config.array_del_line = yon_char_parsed_append(main_config.array_del_line, &main_config.size_array_del_line, yon_char_new(key_del)); free(key_del); @@ -776,6 +782,7 @@ void tree_view_del_line() { 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); } } void wrapper_all_save() { @@ -873,7 +880,7 @@ int check_save(dictionary* load_cfg) { size_t size_cfg_gui = yon_dict_len(main_config.save_cfg_gui); size_t size_cfg_load = yon_dict_len(load_cfg); if (size_cfg_gui!=size_cfg_load) { - return 1; + return 0; } for_dictionaries(ptr_dict_gui, main_config.save_cfg_gui) { for_dictionaries(ptr_dict_load, load_cfg) { @@ -893,13 +900,13 @@ int check_save(dictionary* load_cfg) { } } if (flag_check_key == 0 || flag_check_value == 0) { - return 1; + return 0; } } return 0; } int template_format_str_save(dictionary* load_cfg, char* source_set_cmd, char* source_remove_cmd) { - char* cmd_remove = template_format_str_remove_save(source_remove_cmd); + char* cmd_remove = template_format_str_remove_save(load_cfg, source_remove_cmd); char* cmd_set = template_format_str_set_save(load_cfg, source_set_cmd); if (cmd_set != NULL && cmd_remove != NULL) { yon_config_save(yon_char_unite(cmd_set, "; " , cmd_remove, NULL)); @@ -926,30 +933,26 @@ char* template_format_str_set_save(dictionary* load_cfg, char* source_set_cmd) { yon_dictionary_free_all(main_config.save_cfg_gui, NULL); char* cmd = yon_char_new(source_set_cmd); main_config.save_cfg_gui = yon_dictionary_create_empty(); - if (check_save(load_cfg)) { - return NULL; - } int flag_save = 0; for (size_t index = 0; index < main_config.size_tree_view; index++) { char* key = NULL; char* value = NULL; - key = save_format_key(index); - value = save_format_value(index); + key = yon_char_new(save_format_key(index)); + value = yon_char_new(save_format_value(index)); main_config.save_cfg_gui = yon_dictionary_create_with_data_connected(main_config.save_cfg_gui, key, yon_char_new(value)); if (key != NULL && value != NULL) { - if (check_save(load_cfg) == 1) { - cmd = yon_char_unite(cmd, " " , key, "=" , value, " ", NULL); - flag_save = 1; - } + cmd = yon_char_unite(cmd, " " , key, "=" , value, NULL); + flag_save = 1; } if (key != NULL) { free(key); } - if (value != NULL) { + else if (value != NULL) { free(value); } } - if (flag_save) { + + if (flag_save && check_save(load_cfg)== 0) { return cmd; } free(cmd); @@ -957,7 +960,7 @@ char* template_format_str_set_save(dictionary* load_cfg, char* source_set_cmd) { } -char* template_format_str_remove_save(char* source_remove_cmd) { +char* template_format_str_remove_save(dictionary* load_cfg, char* source_remove_cmd) { char* cmd = yon_char_new(source_remove_cmd); int flag_save = 0; if (main_config.size_array_del_line == 0) { @@ -966,13 +969,13 @@ char* template_format_str_remove_save(char* source_remove_cmd) { for (size_t index = 0; index < main_config.size_array_del_line; index++) { char* key = main_config.array_del_line[index]; if (key != NULL) { - puts(key); cmd = yon_char_unite(cmd, " " , key, " ", NULL); flag_save = 1; - free(key); } } if (flag_save) { + philos_free_string_array(&main_config.array_del_line, main_config.size_array_del_line); + main_config.size_array_del_line = 0; return cmd; } free(cmd); diff --git a/source/ubl-settings-resourcequota.h b/source/ubl-settings-resourcequota.h index 3fecee3..4cb3ddc 100755 --- a/source/ubl-settings-resourcequota.h +++ b/source/ubl-settings-resourcequota.h @@ -209,6 +209,6 @@ void wrapper_system_save(); void wrapper_global_save(); 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(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 diff --git a/source/ubl-utils.c b/source/ubl-utils.c index dc48c14..040c58c 100644 --- a/source/ubl-utils.c +++ b/source/ubl-utils.c @@ -631,7 +631,7 @@ char* philos_format_cfg_str_size_memory(char* str_key, char* str_source_value, i return yon_char_unite(str_key, "=" , str_value, "%" ,NULL); } else { - return yon_char_unite(str_key, "=" , str_value, "error" ,NULL); + return yon_char_unite(str_key, "=" , str_value, "-" ,NULL); } } @@ -1045,7 +1045,7 @@ int* philos_int_append(int* array, int* size, int value) { int* remove_element_int_array(int* array, int* size, int item_to_delete) { int *new_int_parsed=NULL; - new_int_parsed=malloc(sizeof(int*)*((*size)-1)); + new_int_parsed=malloc(sizeof(int)*((*size)-1)); int flag = 0; for (int i=0;i < (*size);i++){ if (i==item_to_delete) { @@ -1055,7 +1055,7 @@ int* remove_element_int_array(int* array, int* size, int item_to_delete) { memcpy(&(new_int_parsed[i]),&(array[i]),sizeof(int)); } else if (flag == 1 && i!=item_to_delete) { - memcpy(&(new_int_parsed[i]),&(array[i-1]),sizeof(int)); + memcpy(&(new_int_parsed[i-1]),&(array[i]),sizeof(int)); } } (*size)=(*size)-1; diff --git a/source/view_add.c b/source/view_add.c index ed2dbbb..41c9f69 100644 --- a/source/view_add.c +++ b/source/view_add.c @@ -108,11 +108,15 @@ void add_set_active_widgets_device_io(GtkWidget *self, GtkWidget *entry, GtkWidg gboolean active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(self)); gtk_widget_set_sensitive(entry, active); gtk_widget_set_sensitive(label, active); + if (active == 0) { + gtk_spin_button_set_digits(GTK_SPIN_BUTTON(entry), 0); + } } else { gtk_widget_set_sensitive(entry, 0); gtk_widget_set_sensitive(label, 0); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(self), 0); + gtk_spin_button_set_digits(GTK_SPIN_BUTTON(entry), 0); } } @@ -120,6 +124,9 @@ void add_set_active_widgets(GtkWidget *self, GtkWidget *entry, GtkWidget *label) gboolean active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(self)); gtk_widget_set_sensitive(entry, active); gtk_widget_set_sensitive(label, active); + if (active == 0) { + gtk_spin_button_set_digits(GTK_SPIN_BUTTON(entry), 0); + } } void add_localization(add_window *widgets) { diff --git a/source/view_edit.c b/source/view_edit.c index adf23d1..6b0a57f 100644 --- a/source/view_edit.c +++ b/source/view_edit.c @@ -38,7 +38,6 @@ edit_window *edit_setup_window(char* glade_path){ device_fill_disk(edit_widgets->cbtEditDevice); // edit_event(edit_widgets); edit_localization(edit_widgets); - edit_init_windows(); } return edit_widgets; } @@ -109,6 +108,9 @@ void edit_set_active_widgets(GtkWidget *self, GtkWidget *entry, GtkWidget *label gboolean active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(self)); gtk_widget_set_sensitive(entry, active); gtk_widget_set_sensitive(label, active); + if (active == 0) { + gtk_spin_button_set_digits(GTK_SPIN_BUTTON(entry), 0); + } } void edit_set_active_widgets_device_io(GtkWidget *self, GtkWidget *entry, GtkWidget *label) { @@ -117,13 +119,18 @@ void edit_set_active_widgets_device_io(GtkWidget *self, GtkWidget *entry, GtkWid gboolean active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(self)); gtk_widget_set_sensitive(entry, active); gtk_widget_set_sensitive(label, active); + if (active == 0) { + gtk_spin_button_set_digits(GTK_SPIN_BUTTON(entry), 0); + } } else { gtk_widget_set_sensitive(entry, 0); gtk_widget_set_sensitive(label, 0); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(self), 0); + gtk_spin_button_set_digits(GTK_SPIN_BUTTON(entry), 0); } + } char* edit_get_select_device() { char* text = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(edit_widgets->cbtEditDevice)); diff --git a/ubl-settings-resourcequota.pot b/ubl-settings-resourcequota.pot index d6d9317..16f7dde 100644 --- a/ubl-settings-resourcequota.pot +++ b/ubl-settings-resourcequota.pot @@ -17,6 +17,9 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +msgid "Remove" +msgstr "" + msgid "User" msgstr "" diff --git a/ubl-settings-resourcequota_ru.po b/ubl-settings-resourcequota_ru.po index 8f1180f..2c9df12 100644 --- a/ubl-settings-resourcequota_ru.po +++ b/ubl-settings-resourcequota_ru.po @@ -250,6 +250,9 @@ msgstr "Сохранить глобальную конфигурацию" msgid "Global configuration write error" msgstr "Сохранить глобальную конфигурацию" +msgid "Remove" +msgstr "Удалить" + msgid "Nothing to save!" msgstr "Нечего сохранять!" -- 2.35.1 From d0cc71035c53638c741ba9cd88b39e950257fa6b Mon Sep 17 00:00:00 2001 From: Igor Belitskiy Date: Wed, 7 Jun 2023 16:46:54 +0600 Subject: [PATCH 19/91] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B0=20=D1=83=D1=81=D1=82=D0=B0=D0=BD=D0=BE=D0=B2?= =?UTF-8?q?=D0=BA=D0=B0=20=D0=B7=D0=BD=D0=B0=D1=87=D0=B5=D0=BD=D0=B8=D1=8F?= =?UTF-8?q?=20=D0=B2=20=D0=BE=D0=BA=D0=BD=D0=B5=20=D1=80=D0=B5=D0=B4=D0=B0?= =?UTF-8?q?=D0=BA=D1=82=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D0=B5=20?= =?UTF-8?q?=D0=B2=D0=B8=D0=B4=D0=B6=D0=B5=D1=82=D0=B0=20=D1=83=D1=81=D1=82?= =?UTF-8?q?=D1=80=D0=BE=D0=B9=D1=81=D1=82=D0=B2=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/ubl-settings-resourcequota.c | 5 +---- source/ubl-settings-resourcequota.h | 1 + source/view_edit.c | 5 +++-- source/view_edit.h | 2 +- 4 files changed, 6 insertions(+), 7 deletions(-) diff --git a/source/ubl-settings-resourcequota.c b/source/ubl-settings-resourcequota.c index f4f5b53..27dd0c9 100644 --- a/source/ubl-settings-resourcequota.c +++ b/source/ubl-settings-resourcequota.c @@ -709,6 +709,7 @@ 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_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]); @@ -726,10 +727,6 @@ void main_edit_btn_save() { if (tree_view_edit(main_config.size_tree_view)) { add_on_destroy_subwindow(get_widget_edit()->Window); } - else { - - } - } void tree_view_del_line() { diff --git a/source/ubl-settings-resourcequota.h b/source/ubl-settings-resourcequota.h index 4cb3ddc..a9a0e21 100755 --- a/source/ubl-settings-resourcequota.h +++ b/source/ubl-settings-resourcequota.h @@ -94,6 +94,7 @@ typedef struct int *i_o_limit_read_size; int *i_o_limit_write_size; int size_tree_view; + dictionary *load_global_cfg; dictionary *load_system_cfg; dictionary *save_cfg_gui; diff --git a/source/view_edit.c b/source/view_edit.c index 6b0a57f..62bd21f 100644 --- a/source/view_edit.c +++ b/source/view_edit.c @@ -197,8 +197,9 @@ char* edit_get_limit_swap() { } // ================================================================= -void edit_set_select_device(char* str_value, int pow_mem) { - puts(str_value); +void edit_set_select_device(char* str_value) { + int index = yon_gtk_combo_box_text_find(edit_widgets->cbtEditDevice,str_value); + gtk_combo_box_set_active(GTK_COMBO_BOX(edit_widgets->cbtEditDevice), index); } void edit_set_read_device(char* str_value, int pow_mem) { edit_temp_set(str_value,pow_mem, edit_widgets->chbEditRead, diff --git a/source/view_edit.h b/source/view_edit.h index 155f5e6..83e6052 100644 --- a/source/view_edit.h +++ b/source/view_edit.h @@ -65,7 +65,7 @@ char* edit_get_limit_cpu(); char* edit_get_limit_swap(); void edit_generate_cmd(); void wrapper_edit_show(); -void edit_set_select_device(char* str_value, int pow_mem); +void edit_set_select_device(char* str_value); void edit_set_read_device(char* str_value, int pow_mem); void edit_set_write_device(char* str_value, int pow_mem); void edit_set_soft(char* str_value, int pow_mem); -- 2.35.1 From d2c940de08799462df9bdf7f036e9ad4c1606126 Mon Sep 17 00:00:00 2001 From: Igor Belitskiy Date: Thu, 8 Jun 2023 09:59:54 +0600 Subject: [PATCH 20/91] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=BE=20=D0=BE=D1=82=D0=BE=D0=B1=D1=80=D0=B0?= =?UTF-8?q?=D0=B6=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=B1=D0=BB=D0=BE=D1=87=D0=BD?= =?UTF-8?q?=D1=8B=D1=85=20=D1=83=D1=81=D1=82=D1=80=D0=BE=D0=B9=D1=81=D1=82?= =?UTF-8?q?=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/my_device.c | 29 +++++++++-------------------- source/ubl-settings-resourcequota.c | 2 -- source/ubl-utils.c | 1 + source/view_edit.c | 2 +- 4 files changed, 11 insertions(+), 23 deletions(-) diff --git a/source/my_device.c b/source/my_device.c index 995306d..a10d499 100644 --- a/source/my_device.c +++ b/source/my_device.c @@ -10,11 +10,10 @@ void device_disk_parsed() { char* cmd = "lsblk --fs --raw --output PATH,FSTYPE --exclude 7,11,253"; int size = 0; char** responce = yon_config_load(cmd, &size); - char* disk = NULL; obj_device_config.size_disk = 0; char* split_simvol = " "; for (int index = 1; index < size; index++ ) { - disk = yon_char_divide_search(responce[index], "\n", -1); + char* disk = yon_char_divide_search(responce[index], "\n", -1); if (yon_char_find_count(disk, " ") != 0) { char* name_disk = yon_char_divide_search(disk, " ", -1); obj_device_config.name_disk = yon_char_parsed_append(obj_device_config.name_disk, &obj_device_config.size_disk, name_disk); @@ -25,29 +24,19 @@ void device_disk_parsed() { obj_device_config.size_disk--; obj_device_config.type_dick = yon_char_parsed_append(obj_device_config.type_dick, &obj_device_config.size_disk, ""); obj_device_config.size_disk--; - char* description_disk = yon_char_unite(name_disk, + disk = yon_char_replace(disk," ", ""); + if (strlen(disk)!=0) { + char* description_disk = yon_char_unite(name_disk, split_simvol, disk, NULL); - obj_device_config.description_disk = yon_char_parsed_append(obj_device_config.description_disk, &obj_device_config.size_disk, description_disk); - free(description_disk); + obj_device_config.description_disk = yon_char_parsed_append(obj_device_config.description_disk, &obj_device_config.size_disk, description_disk); + free(description_disk); + + } free(name_disk); } - else { - obj_device_config.name_disk = yon_char_parsed_append(obj_device_config.name_disk, &obj_device_config.size_disk, disk); - obj_device_config.size_disk--; - obj_device_config.file_system = yon_char_parsed_append(obj_device_config.file_system, &obj_device_config.size_disk, ""); - obj_device_config.size_disk--; - obj_device_config.mounted = yon_char_parsed_append(obj_device_config.mounted, &obj_device_config.size_disk, ""); - obj_device_config.size_disk--; - obj_device_config.type_dick = yon_char_parsed_append(obj_device_config.type_dick, &obj_device_config.size_disk, ""); - obj_device_config.size_disk--; - char* description_disk = yon_char_unite(disk, - split_simvol, - NULL); - obj_device_config.description_disk = yon_char_parsed_append(obj_device_config.description_disk, &obj_device_config.size_disk, description_disk); - free(description_disk); - } + free(disk); } } diff --git a/source/ubl-settings-resourcequota.c b/source/ubl-settings-resourcequota.c index 27dd0c9..c089412 100644 --- a/source/ubl-settings-resourcequota.c +++ b/source/ubl-settings-resourcequota.c @@ -458,9 +458,7 @@ void set_pow_size(char* str_find, int** array_size, char*** array_data , int ind index--; } else if (strstr(str_find,"T") != NULL) { - puts(str_find); *array_size = philos_int_append(*array_size, &index, 3); - printf("%d\n\n", (*array_size)[index-1]); str_find = yon_char_divide(str_find, length-1); str_find = yon_char_unite(str_find," ", STR_TB, NULL); diff --git a/source/ubl-utils.c b/source/ubl-utils.c index 040c58c..6d978d7 100644 --- a/source/ubl-utils.c +++ b/source/ubl-utils.c @@ -606,6 +606,7 @@ char *yon_char_replace(char *source, char *find, char*replace){ } return source; } + return source; } void philos_split_size_memory(char* str_value, int* size, char* pow_memory) { // pow_memory = yon_char_new(str_value); diff --git a/source/view_edit.c b/source/view_edit.c index 62bd21f..61b5a11 100644 --- a/source/view_edit.c +++ b/source/view_edit.c @@ -127,7 +127,7 @@ void edit_set_active_widgets_device_io(GtkWidget *self, GtkWidget *entry, GtkWid gtk_widget_set_sensitive(entry, 0); gtk_widget_set_sensitive(label, 0); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(self), 0); - gtk_spin_button_set_digits(GTK_SPIN_BUTTON(entry), 0); + gtk_spin_button_set_digits(GTK_SPIN_BUTTON(entry), 0); } -- 2.35.1 From fef1f3a235e870834cf7334d8968d136ad625c4a Mon Sep 17 00:00:00 2001 From: Igor Belitskiy Date: Thu, 8 Jun 2023 16:54:14 +0600 Subject: [PATCH 21/91] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8?= =?UTF-8?q?=D0=BB=20=D1=87=D0=B0=D1=81=D1=82=D1=8C=20=D0=BB=D0=B8=D0=BC?= =?UTF-8?q?=D0=B8=D1=82=D0=BE=D0=B2=20=D0=B4=D0=BB=D1=8F=20=D1=80=D0=B5?= =?UTF-8?q?=D0=B4=D0=B0=D0=BA=D1=82=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D0=BD?= =?UTF-8?q?=D0=B8=D1=8F=20=D0=B8=20=D1=81=D0=BE=D0=B7=D0=B4=D0=B0=D0=BD?= =?UTF-8?q?=D0=B8=D1=8F=20=D0=BA=D0=B2=D0=BE=D1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/my_device.c | 24 +++++- source/my_device.h | 3 + source/ubl-settings-resourcequota.c | 4 +- source/view_add.c | 103 +++++++++++++++++--------- source/view_add.h | 10 ++- source/view_edit.c | 110 +++++++++++++++++++--------- source/view_edit.h | 9 ++- 7 files changed, 190 insertions(+), 73 deletions(-) diff --git a/source/my_device.c b/source/my_device.c index a10d499..ed6d4fd 100644 --- a/source/my_device.c +++ b/source/my_device.c @@ -38,10 +38,32 @@ void device_disk_parsed() { } free(disk); } + philos_free_string_array(&responce, size); } void device_fill_disk(GtkWidget* combo_box_text) { for (int index = 0; index < obj_device_config.size_disk; index++) { gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(combo_box_text), obj_device_config.description_disk[index]); } -} \ No newline at end of file +} + +size_t get_resurs_total(char* cmd) { + int size = 0; + size_t size_memory = 0; + char **responce = yon_config_load(cmd, &size); + for (int index = 0; index < size; index++ ) { + char* mem_size_kb = yon_char_divide_search(responce[index], "\n", -1); + size_memory = atoll(mem_size_kb); + free(mem_size_kb); + } + philos_free_string_array(&responce, size); + return size_memory; +} + +float get_size_pow_memory(size_t size_memory, int size) { + float res = size_memory; + for (size_t index = 0; index < size; index++) { + res = res/1024; + } + return res; +} diff --git a/source/my_device.h b/source/my_device.h index 4b695a0..67d2211 100644 --- a/source/my_device.h +++ b/source/my_device.h @@ -16,5 +16,8 @@ typedef struct { void device_disk_parsed(); device_config* get_device_cfg(); void device_fill_disk(GtkWidget* combo_box_text); +size_t get_mem_total(); +float get_size_pow_memory(size_t size_memory, int size); +size_t get_resurs_total(char* cmd); #endif \ No newline at end of file diff --git a/source/ubl-settings-resourcequota.c b/source/ubl-settings-resourcequota.c index c089412..2c01b5e 100644 --- a/source/ubl-settings-resourcequota.c +++ b/source/ubl-settings-resourcequota.c @@ -713,9 +713,9 @@ void wrapper_edit_show() { 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_event(get_widget_edit()); edit_init_windows(); edit_set_limit_swap(main_config.swap[index], main_config.swap_size[index]); + edit_event(get_widget_edit()); // edit_set_select_device(main_config.cpu_limit[index]); g_signal_connect(G_OBJECT(get_widget_edit()->btnSaveEditSave), "clicked", G_CALLBACK(main_edit_btn_save), NULL); } @@ -723,6 +723,7 @@ void wrapper_edit_show() { void main_edit_btn_save() { if (tree_view_edit(main_config.size_tree_view)) { + edit_init_windows(); add_on_destroy_subwindow(get_widget_edit()->Window); } } @@ -1009,6 +1010,7 @@ 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(); diff --git a/source/view_add.c b/source/view_add.c index 41c9f69..c9a2ec3 100644 --- a/source/view_add.c +++ b/source/view_add.c @@ -51,19 +51,47 @@ add_window *add_setup_window(char* glade_path) { void add_init_windows() { if (gtk_combo_box_get_active(GTK_COMBO_BOX(add_widgets->cbxAddQuotaLevel2)) != -1) { gtk_widget_set_sensitive(add_widgets->boxBlockGui, 1); - add_set_active_widgets(add_widgets->chkSoftRestrictionAdd, add_widgets->spiSevereRestrictionAdd, add_widgets->cmSevereRestrictionAdd); - add_set_active_widgets(add_widgets->chkSevereRestrictionAdd, add_widgets->spinSevereRestrictionAdd, add_widgets->cmbSevereRestrictionAdd); - add_set_active_widgets(add_widgets->chkPaddingFLAdd, add_widgets->spinPaddingFLAdd, add_widgets->cmbPaddingFLAdd); - add_set_active_widgets(add_widgets->chkCPULimitAdd, add_widgets->spinCPULimitAdd, add_widgets->lblCPULimitAdd); - add_set_active_widgets_device_io(add_widgets->chbAddWrite, add_widgets->spinAddWrite, add_widgets->cbtAddWrite); - add_set_active_widgets_device_io(add_widgets->chbAddRead, add_widgets->spinAddRead, add_widgets->cbtAddRead); + gtk_widget_set_sensitive(add_widgets->btnSaveAddSave, 1); + add_set_active_widgets(add_widgets->chkSoftRestrictionAdd, add_widgets->spiSevereRestrictionAdd, add_widgets->cmSevereRestrictionAdd, 0 , CMD_RAW); + add_set_active_widgets(add_widgets->chkSevereRestrictionAdd, add_widgets->spinSevereRestrictionAdd, add_widgets->cmbSevereRestrictionAdd,0 , CMD_RAW); + add_set_active_widgets(add_widgets->chkPaddingFLAdd, add_widgets->spinPaddingFLAdd, add_widgets->cmbPaddingFLAdd,0 , CMD_SWAP); + add_set_active_widgets(add_widgets->chkCPULimitAdd, add_widgets->spinCPULimitAdd, add_widgets->lblCPULimitAdd,1 , CMD_CPU); + //add_set_active_widgets_device_io(add_widgets->chbAddWrite, add_widgets->spinAddWrite, add_widgets->cbtAddWrite); + //add_set_active_widgets_device_io(add_widgets->chbAddRead, add_widgets->spinAddRead, add_widgets->cbtEditRead); add_generate_cmd(); } else { gtk_widget_set_sensitive(add_widgets->boxBlockGui, 0); + gtk_widget_set_sensitive(add_widgets->btnSaveAddSave, 0); + add_generate_cmd(); } } +void add_set_spin_adjustment(GtkWidget *check, GtkWidget *spin, GtkWidget *combo, size_t value) { + gboolean active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(check)); + if (active != -1) { + GtkAdjustment* adjustment = NULL; + adjustment = gtk_spin_button_get_adjustment(GTK_SPIN_BUTTON(spin)); + gtk_adjustment_set_lower(adjustment, 0.0); + gtk_adjustment_set_page_increment(adjustment, 1.0); + if (combo == NULL) { + gtk_adjustment_set_upper(adjustment, (gdouble)(value*100)); + } + else { + int index = gtk_combo_box_get_active(GTK_COMBO_BOX(combo)); + if (index == 0) { + float pow_mem_size = get_size_pow_memory(value, index); + gtk_adjustment_set_upper(adjustment, (gdouble)value); + } + else if (index == -1) {} + else { + float pow_mem_size = get_size_pow_memory(value, index); + gtk_adjustment_set_upper(adjustment, (gdouble)pow_mem_size); + } + + } + } +} void add_event(add_window *widgets) { g_signal_connect(G_OBJECT(widgets->btnAddCancel),"clicked",G_CALLBACK(add_on_destroy_subwindow),NULL); g_signal_connect(G_OBJECT(widgets->Window), "destroy", G_CALLBACK(add_destroy), NULL); @@ -76,18 +104,18 @@ void add_event(add_window *widgets) { g_signal_connect(G_OBJECT(widgets->cbxAddQuotaObj),"changed",G_CALLBACK(add_update_combo_box), NULL); g_signal_connect(G_OBJECT(widgets->cbxAddQuotaLevel2),"changed",G_CALLBACK(add_init_windows), NULL); - g_signal_connect(G_OBJECT(widgets->spiSevereRestrictionAdd),"value-changed",G_CALLBACK(add_generate_cmd), NULL); - g_signal_connect(G_OBJECT(widgets->spinSevereRestrictionAdd),"value-changed",G_CALLBACK(add_generate_cmd), NULL); - g_signal_connect(G_OBJECT(widgets->spinPaddingFLAdd),"value-changed",G_CALLBACK(add_generate_cmd), NULL); - g_signal_connect(G_OBJECT(widgets->spinCPULimitAdd),"value-changed",G_CALLBACK(add_generate_cmd), NULL); - g_signal_connect(G_OBJECT(widgets->spinAddRead),"value-changed",G_CALLBACK(add_generate_cmd), NULL); - g_signal_connect(G_OBJECT(widgets->spinAddWrite),"value-changed",G_CALLBACK(add_generate_cmd), NULL); - g_signal_connect(G_OBJECT(widgets->cmSevereRestrictionAdd),"changed",G_CALLBACK(add_generate_cmd), NULL); - g_signal_connect(G_OBJECT(widgets->cmbSevereRestrictionAdd),"changed",G_CALLBACK(add_generate_cmd), NULL); - g_signal_connect(G_OBJECT(widgets->cmbPaddingFLAdd),"changed",G_CALLBACK(add_generate_cmd), NULL); - g_signal_connect(G_OBJECT(widgets->cbtAddRead),"changed",G_CALLBACK(add_generate_cmd), NULL); - g_signal_connect(G_OBJECT(widgets->cbtAddWrite),"changed",G_CALLBACK(add_generate_cmd), NULL); - g_signal_connect(G_OBJECT(widgets->cbtAddDevice),"changed",G_CALLBACK(add_generate_cmd), NULL); + g_signal_connect(G_OBJECT(widgets->spiSevereRestrictionAdd),"change-value",G_CALLBACK(add_init_windows), NULL); + g_signal_connect(G_OBJECT(widgets->spinSevereRestrictionAdd),"change-value",G_CALLBACK(add_init_windows), NULL); + g_signal_connect(G_OBJECT(widgets->spinPaddingFLAdd),"change-value",G_CALLBACK(add_init_windows), NULL); + g_signal_connect(G_OBJECT(widgets->spinCPULimitAdd),"change-value",G_CALLBACK(add_init_windows), NULL); + g_signal_connect(G_OBJECT(widgets->spinAddRead),"change-value",G_CALLBACK(add_init_windows), NULL); + g_signal_connect(G_OBJECT(widgets->spinAddWrite),"change-value",G_CALLBACK(add_init_windows), NULL); + g_signal_connect(G_OBJECT(widgets->cmSevereRestrictionAdd),"changed",G_CALLBACK(add_init_windows), NULL); + g_signal_connect(G_OBJECT(widgets->cmbSevereRestrictionAdd),"changed",G_CALLBACK(add_init_windows), NULL); + g_signal_connect(G_OBJECT(widgets->cmbPaddingFLAdd),"changed",G_CALLBACK(add_init_windows), NULL); + g_signal_connect(G_OBJECT(widgets->cbtAddRead),"changed",G_CALLBACK(add_init_windows), NULL); + g_signal_connect(G_OBJECT(widgets->cbtAddWrite),"changed",G_CALLBACK(add_init_windows), NULL); + g_signal_connect(G_OBJECT(widgets->cbtAddDevice),"changed",G_CALLBACK(add_init_windows), NULL); } @@ -102,32 +130,40 @@ void add_destroy(GtkWidget *self) { add_widgets = NULL; } -void add_set_active_widgets_device_io(GtkWidget *self, GtkWidget *entry, GtkWidget *label) { +void add_set_active_widgets_device_io(GtkWidget *check, GtkWidget *spin, GtkWidget *combo, char* cmd) { int menu_id = gtk_combo_box_get_active(GTK_COMBO_BOX(add_widgets->cbtAddDevice)); if (menu_id != -1) { - gboolean active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(self)); - gtk_widget_set_sensitive(entry, active); - gtk_widget_set_sensitive(label, active); + gboolean active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(check)); + gtk_widget_set_sensitive(spin, active); + gtk_widget_set_sensitive(combo, active); if (active == 0) { - gtk_spin_button_set_digits(GTK_SPIN_BUTTON(entry), 0); + gtk_spin_button_set_digits(GTK_SPIN_BUTTON(spin), 0); } } else { - gtk_widget_set_sensitive(entry, 0); - gtk_widget_set_sensitive(label, 0); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(self), 0); - gtk_spin_button_set_digits(GTK_SPIN_BUTTON(entry), 0); + gtk_widget_set_sensitive(spin, 0); + gtk_widget_set_sensitive(combo, 0); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check), 0); + gtk_spin_button_set_digits(GTK_SPIN_BUTTON(spin), 0); } + add_set_spin_adjustment(check, spin, combo, get_resurs_total(cmd)); } -void add_set_active_widgets(GtkWidget *self, GtkWidget *entry, GtkWidget *label) { - gboolean active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(self)); - gtk_widget_set_sensitive(entry, active); - gtk_widget_set_sensitive(label, active); +void add_set_active_widgets(GtkWidget *check, GtkWidget *spin, GtkWidget *combo, int flag_cpu, char* cmd) { + gboolean active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(check)); + gtk_widget_set_sensitive(spin, active); + gtk_widget_set_sensitive(combo, active); if (active == 0) { - gtk_spin_button_set_digits(GTK_SPIN_BUTTON(entry), 0); + gtk_spin_button_set_digits(GTK_SPIN_BUTTON(spin), 0); + } + if (flag_cpu == 0) { + add_set_spin_adjustment(check, spin, combo, get_resurs_total(cmd)); + } + else { + add_set_spin_adjustment(check, spin, NULL, get_resurs_total(cmd)); } } + void add_localization(add_window *widgets) { } @@ -146,12 +182,13 @@ void add_show(GtkWidget *self, char* glade_path) { if (add_widgets != NULL) { add_update_combo_box(); gtk_widget_show_all(add_widgets->Window); - + add_init_windows(); } else { add_setup_window(glade_path); add_update_combo_box(); gtk_widget_show_all(add_widgets->Window); + add_init_windows(); } } diff --git a/source/view_add.h b/source/view_add.h index 5ffbaa2..3516e7a 100644 --- a/source/view_add.h +++ b/source/view_add.h @@ -13,6 +13,11 @@ #include #include "my_device.h" + +#define CMD_CPU "lscpu | grep \"CPU(s):\" |grep -oE \"[0-9]{1,}\"" +#define CMD_SWAP "grep '^Swap' /proc/meminfo | grep \"SwapTotal\" |grep -oE \"[0-9]{1,}\"" +#define CMD_RAW "cat /proc/meminfo | grep \"MemTotal\" |grep -oE \"[0-9]{1,}\"" + static char* CMD_GET_GROUP; static char* CMD_GET_SLICE_SERVICE; // Переменные @@ -60,7 +65,7 @@ void add_on_destroy_subwindow(GtkWidget *self); add_window *get_widget_add(); void add_show(GtkWidget *self, char* glade_path); void add_destroy(GtkWidget *self); -void add_set_active_widgets(GtkWidget *self, GtkWidget *entry, GtkWidget *label); +void add_set_active_widgets(GtkWidget *check, GtkWidget *spin, GtkWidget *combo, int flag_cpu, char* cmd); void add_init_windows(); void add_update_combo_box(); char* add_get_select_device(); @@ -80,9 +85,10 @@ int add_get_limit_cpu_size(); int add_get_limit_swap_size(); int add_get_quota_object_size(); -void add_set_active_widgets_device_io(GtkWidget *self, GtkWidget *entry, GtkWidget *label); +void add_set_active_widgets_device_ioadd_set_active_widgets_device_io(GtkWidget *check, GtkWidget *spin, GtkWidget *combo, char* cmd); void add_get_cmd_group(char* cmd_get_group); char* add_get_select_device_to_level_2(); void add_generate_cmd(); void add_get_systemd_cgls(char* cmd_systemd_cgls); +void add_set_spin_adjustment(GtkWidget *check, GtkWidget *spin, GtkWidget *combo, size_t value); #endif \ No newline at end of file diff --git a/source/view_edit.c b/source/view_edit.c index 61b5a11..872573f 100644 --- a/source/view_edit.c +++ b/source/view_edit.c @@ -52,18 +52,18 @@ void edit_event(edit_window *widgets) { g_signal_connect(G_OBJECT(widgets->chbEditRead), "toggled", G_CALLBACK(edit_init_windows), NULL); g_signal_connect(G_OBJECT(widgets->chbEditWrite), "toggled", G_CALLBACK(edit_init_windows), NULL); - g_signal_connect(G_OBJECT(widgets->spiSevereRestrictionEdit),"value-changed",G_CALLBACK(edit_generate_cmd), NULL); - g_signal_connect(G_OBJECT(widgets->spinSevereRestrictionEdit),"value-changed",G_CALLBACK(edit_generate_cmd), NULL); - g_signal_connect(G_OBJECT(widgets->spinPaddingFLEdit),"value-changed",G_CALLBACK(edit_generate_cmd), NULL); - g_signal_connect(G_OBJECT(widgets->spinCPULimitEdit),"value-changed",G_CALLBACK(edit_generate_cmd), NULL); - g_signal_connect(G_OBJECT(widgets->spinEditRead),"value-changed",G_CALLBACK(edit_generate_cmd), NULL); - g_signal_connect(G_OBJECT(widgets->spinEditWrite),"value-changed",G_CALLBACK(edit_generate_cmd), NULL); - g_signal_connect(G_OBJECT(widgets->cmSevereRestrictionEdit),"changed",G_CALLBACK(edit_generate_cmd), NULL); - g_signal_connect(G_OBJECT(widgets->cmbSevereRestrictionEdit),"changed",G_CALLBACK(edit_generate_cmd), NULL); - g_signal_connect(G_OBJECT(widgets->cmbPaddingFLEdit),"changed",G_CALLBACK(edit_generate_cmd), NULL); - g_signal_connect(G_OBJECT(widgets->cbtEditRead),"changed",G_CALLBACK(edit_generate_cmd), NULL); - g_signal_connect(G_OBJECT(widgets->cbtEditWrite),"changed",G_CALLBACK(edit_generate_cmd), NULL); - g_signal_connect(G_OBJECT(widgets->cbtEditDevice),"changed",G_CALLBACK(edit_generate_cmd), NULL); + g_signal_connect(G_OBJECT(widgets->spiSevereRestrictionEdit),"value-changed",G_CALLBACK(edit_init_windows), NULL); + g_signal_connect(G_OBJECT(widgets->spinSevereRestrictionEdit),"value-changed",G_CALLBACK(edit_init_windows), NULL); + g_signal_connect(G_OBJECT(widgets->spinPaddingFLEdit),"value-changed",G_CALLBACK(edit_init_windows), NULL); + g_signal_connect(G_OBJECT(widgets->spinCPULimitEdit),"value-changed",G_CALLBACK(edit_init_windows), NULL); + g_signal_connect(G_OBJECT(widgets->spinEditRead),"value-changed",G_CALLBACK(edit_init_windows), NULL); + g_signal_connect(G_OBJECT(widgets->spinEditWrite),"value-changed",G_CALLBACK(edit_init_windows), NULL); + g_signal_connect(G_OBJECT(widgets->cmSevereRestrictionEdit),"changed",G_CALLBACK(wrapper_edit_init_windows_size_memory), widgets->spiSevereRestrictionEdit); + g_signal_connect(G_OBJECT(widgets->cmbSevereRestrictionEdit),"changed",G_CALLBACK(wrapper_edit_init_windows_size_memory), widgets->spinSevereRestrictionEdit); + g_signal_connect(G_OBJECT(widgets->cmbPaddingFLEdit),"changed",G_CALLBACK(wrapper_edit_init_windows_size_memory), widgets->spinPaddingFLEdit); + g_signal_connect(G_OBJECT(widgets->cbtEditRead),"changed",G_CALLBACK(wrapper_edit_init_windows_size_memory), widgets->spinEditRead); + g_signal_connect(G_OBJECT(widgets->cbtEditWrite),"changed",G_CALLBACK(wrapper_edit_init_windows_size_memory), widgets->spinEditWrite); + g_signal_connect(G_OBJECT(widgets->cbtEditDevice),"changed",G_CALLBACK(edit_init_windows), NULL); } void edit_destroy(GtkWidget *self) { @@ -93,45 +93,86 @@ void edit_show(GtkWidget *self, char* glade_path) { } } +void wrapper_edit_init_windows_size_memory(GtkWidget *spin) { + if (spin != NULL) { + // gtk_spin_button_set_digits(GTK_SPIN_BUTTON(spin), 0); + } + edit_init_windows(); +} void edit_init_windows() { - edit_set_active_widgets(edit_widgets->chkSoftRestrictionEdit, edit_widgets->spiSevereRestrictionEdit, edit_widgets->cmSevereRestrictionEdit); - edit_set_active_widgets(edit_widgets->chkSevereRestrictionEdit, edit_widgets->spinSevereRestrictionEdit, edit_widgets->cmbSevereRestrictionEdit); - edit_set_active_widgets(edit_widgets->chkPaddingFLEdit, edit_widgets->spinPaddingFLEdit, edit_widgets->cmbPaddingFLEdit); - edit_set_active_widgets(edit_widgets->chkCPULimitEdit, edit_widgets->spinCPULimitEdit, edit_widgets->lblCPULimitEdit); - edit_set_active_widgets_device_io(edit_widgets->chbEditWrite, edit_widgets->spinEditWrite, edit_widgets->cbtEditWrite); - edit_set_active_widgets_device_io(edit_widgets->chbEditRead, edit_widgets->spinEditRead, edit_widgets->cbtEditRead); + edit_set_active_widgets(edit_widgets->chkSoftRestrictionEdit, edit_widgets->spiSevereRestrictionEdit, edit_widgets->cmSevereRestrictionEdit,0 ,CMD_RAW); + edit_set_active_widgets(edit_widgets->chkSevereRestrictionEdit, edit_widgets->spinSevereRestrictionEdit, edit_widgets->cmbSevereRestrictionEdit,0 , CMD_RAW); + edit_set_active_widgets(edit_widgets->chkPaddingFLEdit, edit_widgets->spinPaddingFLEdit, edit_widgets->cmbPaddingFLEdit,0 , CMD_SWAP); + edit_set_active_widgets(edit_widgets->chkCPULimitEdit, edit_widgets->spinCPULimitEdit, edit_widgets->lblCPULimitEdit,1 ,CMD_CPU); + //edit_set_active_widgets_device_io(edit_widgets->chbEditWrite, edit_widgets->spinEditWrite, edit_widgets->cbtEditWrite); + //edit_set_active_widgets_device_io(edit_widgets->chbEditRead, edit_widgets->spinEditRead, edit_widgets->cbtEditRead); edit_generate_cmd(); } -void edit_set_active_widgets(GtkWidget *self, GtkWidget *entry, GtkWidget *label) { - gboolean active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(self)); - gtk_widget_set_sensitive(entry, active); - gtk_widget_set_sensitive(label, active); +void edit_set_active_widgets(GtkWidget *check, GtkWidget *spin, GtkWidget *combo, int flag_cpu, char* cmd) { + gboolean active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(check)); + gtk_widget_set_sensitive(spin, active); + gtk_widget_set_sensitive(combo, active); if (active == 0) { - gtk_spin_button_set_digits(GTK_SPIN_BUTTON(entry), 0); + gtk_spin_button_set_digits(GTK_SPIN_BUTTON(spin), 0); + } + if (flag_cpu == 0) { + edit_set_spin_adjustment(check, spin, combo, get_resurs_total(cmd)); + } + else { + edit_set_spin_adjustment(check, spin, NULL, get_resurs_total(cmd)); } + } -void edit_set_active_widgets_device_io(GtkWidget *self, GtkWidget *entry, GtkWidget *label) { + +void edit_set_active_widgets_device_io(GtkWidget *check, GtkWidget *spin, GtkWidget *combo, char* cmd) { int menu_id = gtk_combo_box_get_active(GTK_COMBO_BOX(edit_widgets->cbtEditDevice)); if (menu_id != -1) { - gboolean active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(self)); - gtk_widget_set_sensitive(entry, active); - gtk_widget_set_sensitive(label, active); + gboolean active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(check)); + gtk_widget_set_sensitive(spin, active); + gtk_widget_set_sensitive(combo, active); if (active == 0) { - gtk_spin_button_set_digits(GTK_SPIN_BUTTON(entry), 0); + gtk_spin_button_set_digits(GTK_SPIN_BUTTON(spin), 0); } } else { - gtk_widget_set_sensitive(entry, 0); - gtk_widget_set_sensitive(label, 0); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(self), 0); - gtk_spin_button_set_digits(GTK_SPIN_BUTTON(entry), 0); + gtk_widget_set_sensitive(spin, 0); + gtk_widget_set_sensitive(combo, 0); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check), 0); + gtk_spin_button_set_digits(GTK_SPIN_BUTTON(spin), 0); + } + edit_set_spin_adjustment(check, spin, combo, get_resurs_total(cmd)); +} + +void edit_set_spin_adjustment(GtkWidget *check, GtkWidget *spin, GtkWidget *combo, size_t value) { + gboolean active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(check)); + if (active != -1) { + GtkAdjustment* adjustment = NULL; + adjustment = gtk_spin_button_get_adjustment(GTK_SPIN_BUTTON(spin)); + gtk_adjustment_set_lower(adjustment, 0.0); + gtk_adjustment_set_page_increment(adjustment, 1.0); + if (combo == NULL) { + gtk_adjustment_set_upper(adjustment, (gdouble)(value*100)); + } + else { + int index = gtk_combo_box_get_active(GTK_COMBO_BOX(combo)); + if (index == 0) { + float pow_mem_size = get_size_pow_memory(value, index); + gtk_adjustment_set_upper(adjustment, (gdouble)value); + } + else if (index == -1) {} + else { + float pow_mem_size = get_size_pow_memory(value, index); + printf("%f\n", pow_mem_size); + gtk_adjustment_set_upper(adjustment, (gdouble)pow_mem_size); + } + + } } - - } + char* edit_get_select_device() { char* text = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(edit_widgets->cbtEditDevice)); if (text != NULL) { @@ -248,6 +289,7 @@ void edit_temp_set(char* str_value, int pow_mem, GtkWidget* cheek, GtkWidget* sp } } void edit_generate_cmd() { + char* str_cmd = " "; char* split_simvol = g_malloc0(sizeof(char)*2); int size_bite = 0; diff --git a/source/view_edit.h b/source/view_edit.h index 83e6052..29c1e8f 100644 --- a/source/view_edit.h +++ b/source/view_edit.h @@ -13,6 +13,9 @@ #include #include "my_device.h" +#define CMD_CPU "lscpu | grep \"CPU(s):\" |grep -oE \"[0-9]{1,}\"" +#define CMD_SWAP "grep '^Swap' /proc/meminfo | grep \"SwapTotal\" |grep -oE \"[0-9]{1,}\"" +#define CMD_RAW "cat /proc/meminfo | grep \"MemTotal\" |grep -oE \"[0-9]{1,}\"" // Переменные typedef struct { GtkWidget* Window; @@ -55,7 +58,8 @@ edit_window *get_widget_edit(); void edit_show(GtkWidget *self, char* glade_path); void edit_destroy(GtkWidget *self); void edit_init_windows(); -void edit_set_active_widgets(GtkWidget *self, GtkWidget *entry, GtkWidget *label); +void wrapper_edit_init_windows_size_memory(GtkWidget *spin); +void edit_set_active_widgets(GtkWidget *check, GtkWidget *spin, GtkWidget *combo, int flag_cpu, char* cmd); char* edit_get_select_device(); char* edit_get_read_device(); char* edit_get_write_device(); @@ -80,5 +84,6 @@ int edit_get_soft_size(); int edit_get_hard_size(); int edit_get_limit_cpu_size(); int edit_get_limit_swap_size(); -void edit_set_active_widgets_device_io(GtkWidget *self, GtkWidget *entry, GtkWidget *label); +void edit_set_active_widgets_device_io(GtkWidget *check, GtkWidget *spin, GtkWidget *combo, char* cmd); +void edit_set_spin_adjustment(GtkWidget *check, GtkWidget *spin, GtkWidget *combo, size_t value); #endif \ No newline at end of file -- 2.35.1 From 4efa64f653bb72adf4d62767750941eb53ee97f6 Mon Sep 17 00:00:00 2001 From: Igor Belitskiy Date: Fri, 9 Jun 2023 09:58:23 +0600 Subject: [PATCH 22/91] =?UTF-8?q?=D0=9E=D0=B1=D1=89=D0=B8=D0=B5=20=D1=84?= =?UTF-8?q?=D1=83=D0=BD=D0=BA=D1=86=D0=B8=D0=B8=20=D0=B2=D1=8B=D0=BD=D0=B5?= =?UTF-8?q?=D1=81=D0=B5=D0=BD=D1=8B=20=D0=B2=20=D0=BE=D1=82=D0=B4=D0=B5?= =?UTF-8?q?=D0=BB=D1=8C=D0=BD=D1=8B=D0=B9=20=D1=84=D0=B0=D0=B9=D0=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/my_device.c | 19 ------ source/ubl-settings-resourcequota.c | 14 +++++ source/ubl-utils.c | 90 +++++++++++++++++++++++++++++ source/ubl-utils.h | 5 ++ source/view_add.c | 85 +++++---------------------- source/view_add.h | 2 +- source/view_edit.c | 72 +++-------------------- source/view_edit.h | 2 +- 8 files changed, 132 insertions(+), 157 deletions(-) diff --git a/source/my_device.c b/source/my_device.c index ed6d4fd..614a3ff 100644 --- a/source/my_device.c +++ b/source/my_device.c @@ -47,23 +47,4 @@ void device_fill_disk(GtkWidget* combo_box_text) { } } -size_t get_resurs_total(char* cmd) { - int size = 0; - size_t size_memory = 0; - char **responce = yon_config_load(cmd, &size); - for (int index = 0; index < size; index++ ) { - char* mem_size_kb = yon_char_divide_search(responce[index], "\n", -1); - size_memory = atoll(mem_size_kb); - free(mem_size_kb); - } - philos_free_string_array(&responce, size); - return size_memory; -} -float get_size_pow_memory(size_t size_memory, int size) { - float res = size_memory; - for (size_t index = 0; index < size; index++) { - res = res/1024; - } - return res; -} diff --git a/source/ubl-settings-resourcequota.c b/source/ubl-settings-resourcequota.c index 2c01b5e..ae3a0d4 100644 --- a/source/ubl-settings-resourcequota.c +++ b/source/ubl-settings-resourcequota.c @@ -424,6 +424,20 @@ void str_split_value(char* values, int 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; + } + if ((index+1) == size) { + + } + } + +} +*/ void set_pow_size(char* str_find, int** array_size, char*** array_data , int index) { char* disk = NULL; diff --git a/source/ubl-utils.c b/source/ubl-utils.c index 6d978d7..c84a862 100644 --- a/source/ubl-utils.c +++ b/source/ubl-utils.c @@ -1368,5 +1368,95 @@ void yon_ubl_browser_window_open(char *link, char *browser_window_name){ yon_launch_app(command); } #endif +// Mem Size pow +void philos_set_spin_adjustment(GtkWidget *check, GtkWidget *spin, GtkWidget *combo, size_t value) { + gboolean active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(check)); + guint value_spin = gtk_spin_button_get_digits(GTK_SPIN_BUTTON(spin)); + if (active != -1) { + GtkAdjustment* adjustment = NULL; + adjustment = gtk_spin_button_get_adjustment(GTK_SPIN_BUTTON(spin)); + gtk_adjustment_set_lower(adjustment, 0.0); + gtk_adjustment_set_page_increment(adjustment, 1.0); + if (combo == NULL) { + gtk_adjustment_set_upper(adjustment, (gdouble)(value*100)); + if ((value*100)cbxAddQuotaLevel2)) != -1) { gtk_widget_set_sensitive(add_widgets->boxBlockGui, 1); gtk_widget_set_sensitive(add_widgets->btnSaveAddSave, 1); - add_set_active_widgets(add_widgets->chkSoftRestrictionAdd, add_widgets->spiSevereRestrictionAdd, add_widgets->cmSevereRestrictionAdd, 0 , CMD_RAW); - add_set_active_widgets(add_widgets->chkSevereRestrictionAdd, add_widgets->spinSevereRestrictionAdd, add_widgets->cmbSevereRestrictionAdd,0 , CMD_RAW); - add_set_active_widgets(add_widgets->chkPaddingFLAdd, add_widgets->spinPaddingFLAdd, add_widgets->cmbPaddingFLAdd,0 , CMD_SWAP); - add_set_active_widgets(add_widgets->chkCPULimitAdd, add_widgets->spinCPULimitAdd, add_widgets->lblCPULimitAdd,1 , CMD_CPU); - //add_set_active_widgets_device_io(add_widgets->chbAddWrite, add_widgets->spinAddWrite, add_widgets->cbtAddWrite); - //add_set_active_widgets_device_io(add_widgets->chbAddRead, add_widgets->spinAddRead, add_widgets->cbtEditRead); + philos_set_active_widgets(add_widgets->chkSoftRestrictionAdd, add_widgets->spiSevereRestrictionAdd, add_widgets->cmSevereRestrictionAdd, 0 , CMD_RAW); + philos_set_active_widgets(add_widgets->chkSevereRestrictionAdd, add_widgets->spinSevereRestrictionAdd, add_widgets->cmbSevereRestrictionAdd,0 , CMD_RAW); + philos_set_active_widgets(add_widgets->chkPaddingFLAdd, add_widgets->spinPaddingFLAdd, add_widgets->cmbPaddingFLAdd,0 , CMD_SWAP); + philos_set_active_widgets(add_widgets->chkCPULimitAdd, add_widgets->spinCPULimitAdd, add_widgets->lblCPULimitAdd,1 , CMD_CPU); + philos_set_active_widgets_device_io(add_widgets->cbtAddDevice, add_widgets->chbAddWrite, add_widgets->spinAddWrite, add_widgets->cbtAddWrite); + philos_set_active_widgets_device_io(add_widgets->cbtAddDevice, add_widgets->chbAddRead, add_widgets->spinAddRead, add_widgets->cbtAddRead); add_generate_cmd(); } else { @@ -67,31 +67,7 @@ void add_init_windows() { } } -void add_set_spin_adjustment(GtkWidget *check, GtkWidget *spin, GtkWidget *combo, size_t value) { - gboolean active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(check)); - if (active != -1) { - GtkAdjustment* adjustment = NULL; - adjustment = gtk_spin_button_get_adjustment(GTK_SPIN_BUTTON(spin)); - gtk_adjustment_set_lower(adjustment, 0.0); - gtk_adjustment_set_page_increment(adjustment, 1.0); - if (combo == NULL) { - gtk_adjustment_set_upper(adjustment, (gdouble)(value*100)); - } - else { - int index = gtk_combo_box_get_active(GTK_COMBO_BOX(combo)); - if (index == 0) { - float pow_mem_size = get_size_pow_memory(value, index); - gtk_adjustment_set_upper(adjustment, (gdouble)value); - } - else if (index == -1) {} - else { - float pow_mem_size = get_size_pow_memory(value, index); - gtk_adjustment_set_upper(adjustment, (gdouble)pow_mem_size); - } - - } - } -} + void add_event(add_window *widgets) { g_signal_connect(G_OBJECT(widgets->btnAddCancel),"clicked",G_CALLBACK(add_on_destroy_subwindow),NULL); g_signal_connect(G_OBJECT(widgets->Window), "destroy", G_CALLBACK(add_destroy), NULL); @@ -104,12 +80,13 @@ void add_event(add_window *widgets) { g_signal_connect(G_OBJECT(widgets->cbxAddQuotaObj),"changed",G_CALLBACK(add_update_combo_box), NULL); g_signal_connect(G_OBJECT(widgets->cbxAddQuotaLevel2),"changed",G_CALLBACK(add_init_windows), NULL); - g_signal_connect(G_OBJECT(widgets->spiSevereRestrictionAdd),"change-value",G_CALLBACK(add_init_windows), NULL); - g_signal_connect(G_OBJECT(widgets->spinSevereRestrictionAdd),"change-value",G_CALLBACK(add_init_windows), NULL); - g_signal_connect(G_OBJECT(widgets->spinPaddingFLAdd),"change-value",G_CALLBACK(add_init_windows), NULL); - g_signal_connect(G_OBJECT(widgets->spinCPULimitAdd),"change-value",G_CALLBACK(add_init_windows), NULL); - g_signal_connect(G_OBJECT(widgets->spinAddRead),"change-value",G_CALLBACK(add_init_windows), NULL); - g_signal_connect(G_OBJECT(widgets->spinAddWrite),"change-value",G_CALLBACK(add_init_windows), NULL); + g_signal_connect(G_OBJECT(widgets->spiSevereRestrictionAdd),"changed",G_CALLBACK(add_init_windows), NULL); + g_signal_connect(G_OBJECT(widgets->spinSevereRestrictionAdd),"changed",G_CALLBACK(add_init_windows), NULL); + g_signal_connect(G_OBJECT(widgets->spinPaddingFLAdd),"changed",G_CALLBACK(add_init_windows), NULL); + g_signal_connect(G_OBJECT(widgets->spinCPULimitAdd),"changed",G_CALLBACK(add_init_windows), NULL); + g_signal_connect(G_OBJECT(widgets->spinAddRead),"changed",G_CALLBACK(add_init_windows), NULL); + g_signal_connect(G_OBJECT(widgets->spinAddWrite),"changed",G_CALLBACK(add_init_windows), NULL); + g_signal_connect(G_OBJECT(widgets->cmSevereRestrictionAdd),"changed",G_CALLBACK(add_init_windows), NULL); g_signal_connect(G_OBJECT(widgets->cmbSevereRestrictionAdd),"changed",G_CALLBACK(add_init_windows), NULL); g_signal_connect(G_OBJECT(widgets->cmbPaddingFLAdd),"changed",G_CALLBACK(add_init_windows), NULL); @@ -130,40 +107,6 @@ void add_destroy(GtkWidget *self) { add_widgets = NULL; } -void add_set_active_widgets_device_io(GtkWidget *check, GtkWidget *spin, GtkWidget *combo, char* cmd) { - int menu_id = gtk_combo_box_get_active(GTK_COMBO_BOX(add_widgets->cbtAddDevice)); - if (menu_id != -1) { - gboolean active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(check)); - gtk_widget_set_sensitive(spin, active); - gtk_widget_set_sensitive(combo, active); - if (active == 0) { - gtk_spin_button_set_digits(GTK_SPIN_BUTTON(spin), 0); - } - } - else { - gtk_widget_set_sensitive(spin, 0); - gtk_widget_set_sensitive(combo, 0); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check), 0); - gtk_spin_button_set_digits(GTK_SPIN_BUTTON(spin), 0); - } - add_set_spin_adjustment(check, spin, combo, get_resurs_total(cmd)); - -} -void add_set_active_widgets(GtkWidget *check, GtkWidget *spin, GtkWidget *combo, int flag_cpu, char* cmd) { - gboolean active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(check)); - gtk_widget_set_sensitive(spin, active); - gtk_widget_set_sensitive(combo, active); - if (active == 0) { - gtk_spin_button_set_digits(GTK_SPIN_BUTTON(spin), 0); - } - if (flag_cpu == 0) { - add_set_spin_adjustment(check, spin, combo, get_resurs_total(cmd)); - } - else { - add_set_spin_adjustment(check, spin, NULL, get_resurs_total(cmd)); - } -} - void add_localization(add_window *widgets) { } diff --git a/source/view_add.h b/source/view_add.h index 3516e7a..ed82fc7 100644 --- a/source/view_add.h +++ b/source/view_add.h @@ -85,7 +85,7 @@ int add_get_limit_cpu_size(); int add_get_limit_swap_size(); int add_get_quota_object_size(); -void add_set_active_widgets_device_ioadd_set_active_widgets_device_io(GtkWidget *check, GtkWidget *spin, GtkWidget *combo, char* cmd); +void add_set_active_widgets_device_io(GtkWidget *check, GtkWidget *spin, GtkWidget *combo); void add_get_cmd_group(char* cmd_get_group); char* add_get_select_device_to_level_2(); void add_generate_cmd(); diff --git a/source/view_edit.c b/source/view_edit.c index 872573f..b9a018f 100644 --- a/source/view_edit.c +++ b/source/view_edit.c @@ -101,77 +101,19 @@ void wrapper_edit_init_windows_size_memory(GtkWidget *spin) { } void edit_init_windows() { - edit_set_active_widgets(edit_widgets->chkSoftRestrictionEdit, edit_widgets->spiSevereRestrictionEdit, edit_widgets->cmSevereRestrictionEdit,0 ,CMD_RAW); - edit_set_active_widgets(edit_widgets->chkSevereRestrictionEdit, edit_widgets->spinSevereRestrictionEdit, edit_widgets->cmbSevereRestrictionEdit,0 , CMD_RAW); - edit_set_active_widgets(edit_widgets->chkPaddingFLEdit, edit_widgets->spinPaddingFLEdit, edit_widgets->cmbPaddingFLEdit,0 , CMD_SWAP); - edit_set_active_widgets(edit_widgets->chkCPULimitEdit, edit_widgets->spinCPULimitEdit, edit_widgets->lblCPULimitEdit,1 ,CMD_CPU); - //edit_set_active_widgets_device_io(edit_widgets->chbEditWrite, edit_widgets->spinEditWrite, edit_widgets->cbtEditWrite); - //edit_set_active_widgets_device_io(edit_widgets->chbEditRead, edit_widgets->spinEditRead, edit_widgets->cbtEditRead); + philos_set_active_widgets(edit_widgets->chkSoftRestrictionEdit, edit_widgets->spiSevereRestrictionEdit, edit_widgets->cmSevereRestrictionEdit,0 ,CMD_RAW); + philos_set_active_widgets(edit_widgets->chkSevereRestrictionEdit, edit_widgets->spinSevereRestrictionEdit, edit_widgets->cmbSevereRestrictionEdit,0 , CMD_RAW); + philos_set_active_widgets(edit_widgets->chkPaddingFLEdit, edit_widgets->spinPaddingFLEdit, edit_widgets->cmbPaddingFLEdit,0 , CMD_SWAP); + philos_set_active_widgets(edit_widgets->chkCPULimitEdit, edit_widgets->spinCPULimitEdit, edit_widgets->lblCPULimitEdit,1 ,CMD_CPU); + philos_set_active_widgets_device_io(edit_widgets->cbtEditDevice,edit_widgets->chbEditWrite, edit_widgets->spinEditWrite, edit_widgets->cbtEditWrite); + philos_set_active_widgets_device_io(edit_widgets->cbtEditDevice,edit_widgets->chbEditRead, edit_widgets->spinEditRead, edit_widgets->cbtEditRead); edit_generate_cmd(); } -void edit_set_active_widgets(GtkWidget *check, GtkWidget *spin, GtkWidget *combo, int flag_cpu, char* cmd) { - gboolean active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(check)); - gtk_widget_set_sensitive(spin, active); - gtk_widget_set_sensitive(combo, active); - if (active == 0) { - gtk_spin_button_set_digits(GTK_SPIN_BUTTON(spin), 0); - } - if (flag_cpu == 0) { - edit_set_spin_adjustment(check, spin, combo, get_resurs_total(cmd)); - } - else { - edit_set_spin_adjustment(check, spin, NULL, get_resurs_total(cmd)); - } - -} -void edit_set_active_widgets_device_io(GtkWidget *check, GtkWidget *spin, GtkWidget *combo, char* cmd) { - int menu_id = gtk_combo_box_get_active(GTK_COMBO_BOX(edit_widgets->cbtEditDevice)); - if (menu_id != -1) { - gboolean active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(check)); - gtk_widget_set_sensitive(spin, active); - gtk_widget_set_sensitive(combo, active); - if (active == 0) { - gtk_spin_button_set_digits(GTK_SPIN_BUTTON(spin), 0); - } - } - else { - gtk_widget_set_sensitive(spin, 0); - gtk_widget_set_sensitive(combo, 0); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check), 0); - gtk_spin_button_set_digits(GTK_SPIN_BUTTON(spin), 0); - } - edit_set_spin_adjustment(check, spin, combo, get_resurs_total(cmd)); -} -void edit_set_spin_adjustment(GtkWidget *check, GtkWidget *spin, GtkWidget *combo, size_t value) { - gboolean active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(check)); - if (active != -1) { - GtkAdjustment* adjustment = NULL; - adjustment = gtk_spin_button_get_adjustment(GTK_SPIN_BUTTON(spin)); - gtk_adjustment_set_lower(adjustment, 0.0); - gtk_adjustment_set_page_increment(adjustment, 1.0); - if (combo == NULL) { - gtk_adjustment_set_upper(adjustment, (gdouble)(value*100)); - } - else { - int index = gtk_combo_box_get_active(GTK_COMBO_BOX(combo)); - if (index == 0) { - float pow_mem_size = get_size_pow_memory(value, index); - gtk_adjustment_set_upper(adjustment, (gdouble)value); - } - else if (index == -1) {} - else { - float pow_mem_size = get_size_pow_memory(value, index); - printf("%f\n", pow_mem_size); - gtk_adjustment_set_upper(adjustment, (gdouble)pow_mem_size); - } - - } - } -} + char* edit_get_select_device() { char* text = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(edit_widgets->cbtEditDevice)); diff --git a/source/view_edit.h b/source/view_edit.h index 29c1e8f..c7c7e46 100644 --- a/source/view_edit.h +++ b/source/view_edit.h @@ -84,6 +84,6 @@ int edit_get_soft_size(); int edit_get_hard_size(); int edit_get_limit_cpu_size(); int edit_get_limit_swap_size(); -void edit_set_active_widgets_device_io(GtkWidget *check, GtkWidget *spin, GtkWidget *combo, char* cmd); +void edit_set_active_widgets_device_io(GtkWidget *check, GtkWidget *spin, GtkWidget *combo); void edit_set_spin_adjustment(GtkWidget *check, GtkWidget *spin, GtkWidget *combo, size_t value); #endif \ No newline at end of file -- 2.35.1 From f119eca62e620bdd23c7042abe5e8b7331f5c0c6 Mon Sep 17 00:00:00 2001 From: Igor Belitskiy Date: Fri, 9 Jun 2023 11:21:41 +0600 Subject: [PATCH 23/91] =?UTF-8?q?=D0=A1=D0=B4=D0=B5=D0=BB=D0=B0=D0=BD?= =?UTF-8?q?=D0=BE=20=D0=BB=D0=BE=D0=B3=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D0=BD?= =?UTF-8?q?=D0=B8=D0=B5=20=D1=81=D0=BE=D1=85=D1=80=D0=B0=D0=BD=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/ubl-settings-resourcequota.c | 54 ++++++++--------------------- source/ubl-settings-resourcequota.h | 4 ++- source/ubl-utils.c | 25 +++++++++++-- source/ubl-utils.h | 4 +++ source/view_edit.c | 5 --- 5 files changed, 45 insertions(+), 47 deletions(-) diff --git a/source/ubl-settings-resourcequota.c b/source/ubl-settings-resourcequota.c index ae3a0d4..87a24a6 100644 --- a/source/ubl-settings-resourcequota.c +++ b/source/ubl-settings-resourcequota.c @@ -115,6 +115,7 @@ void config_init(){ main_config.size_tree_view = 0; main_config.flag_load = 0; main_config.size_array_del_line = 0; + main_config.flag_set_data = 0; } main_window *setup_window(){ @@ -257,13 +258,13 @@ void main_update_information() { void load_system_cfg() { main_config.flag_load = 0; - template_cfg(CMD_LOAD_SYSTEM, main_config.load_system_cfg); + template_load_cfg(CMD_LOAD_SYSTEM, main_config.load_system_cfg); yon_ubl_status_box_render(LOCAL_LOAD_SUCCESS, BACKGROUND_IMAGE_SUCCESS_TYPE); } void load_global_cfg() { main_config.flag_load = 1; - template_cfg(CMD_LOAD_GLOBAL, main_config.load_global_cfg); + template_load_cfg(CMD_LOAD_GLOBAL, main_config.load_global_cfg); yon_ubl_status_box_render(GLOBAL_LOAD_SUCCESS,BACKGROUND_IMAGE_SUCCESS_TYPE); } @@ -293,7 +294,7 @@ void clear_array() { main_config.size_tree_view = 0; } -void template_cfg(char* cmd, dictionary* load_cfg) { +void template_load_cfg(char* cmd, dictionary* load_cfg) { clear_array(); int size = 0; char** cfg = yon_config_load(cmd, &size); @@ -316,7 +317,8 @@ void template_cfg(char* cmd, dictionary* load_cfg) { if (main_config.size_tree_view != 0) { fill_tree_view(0, main_config.size_tree_view, 0); - } + } + main_config.flag_set_data = 0; } void init_cfg_array(int index) { @@ -573,6 +575,7 @@ void tree_view_add(int index) { 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; } void fill_tree_view(int start, int size, int flag_gui_add) { @@ -605,6 +608,7 @@ int tree_view_edit() { GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->treeViewMain)); if(gtk_tree_selection_get_selected(selection, &model, &iter)) { + main_config.flag_set_data = 1; char* str_iter = gtk_tree_model_get_string_from_iter(model, &iter); index = atoi(str_iter); main_config.soft_raw_limit[index] = edit_get_soft(); @@ -793,6 +797,7 @@ void tree_view_del_line() { 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() { @@ -879,39 +884,11 @@ char* save_format_value(int index) { int check_save(dictionary* load_cfg) { - dictionary* ptr_dict_gui = NULL; - dictionary* ptr_dict_load = NULL; - char* key_gui = NULL; - char* value_gui = NULL; - char* key_load = NULL; - char* value_load = NULL; - int flag_check_key = 0; - int flag_check_value = 0; - size_t size_cfg_gui = yon_dict_len(main_config.save_cfg_gui); - size_t size_cfg_load = yon_dict_len(load_cfg); - if (size_cfg_gui!=size_cfg_load) { + if (main_config.flag_set_data == 1) { return 0; } - for_dictionaries(ptr_dict_gui, main_config.save_cfg_gui) { - for_dictionaries(ptr_dict_load, load_cfg) { - key_gui = ptr_dict_gui->key; - value_gui = (char*)ptr_dict_gui->data; - key_load = ptr_dict_load->key; - value_load = (char*)ptr_dict_load->data; - - if (key_gui == key_load) { - flag_check_key = 1; - return 1; - } - if (value_gui == value_load) { - // TODO: check - flag_check_value = 1; - return 1; - } - } - if (flag_check_key == 0 || flag_check_value == 0) { - return 0; - } + else if (main_config.flag_set_data == 0) { + return 1; } return 0; } @@ -936,20 +913,20 @@ int template_format_str_save(dictionary* load_cfg, char* source_set_cmd, char* s if (cmd_set != NULL) { free(cmd_set); } + + + main_config.flag_set_data = 0; return 1; } char* template_format_str_set_save(dictionary* load_cfg, char* source_set_cmd) { - yon_dictionary_free_all(main_config.save_cfg_gui, NULL); char* cmd = yon_char_new(source_set_cmd); - main_config.save_cfg_gui = yon_dictionary_create_empty(); int flag_save = 0; for (size_t index = 0; index < main_config.size_tree_view; index++) { char* key = NULL; char* value = NULL; key = yon_char_new(save_format_key(index)); value = yon_char_new(save_format_value(index)); - main_config.save_cfg_gui = yon_dictionary_create_with_data_connected(main_config.save_cfg_gui, key, yon_char_new(value)); if (key != NULL && value != NULL) { cmd = yon_char_unite(cmd, " " , key, "=" , value, NULL); flag_save = 1; @@ -1098,7 +1075,6 @@ int main(int argc, char *argv[]){ main_window *widgets = setup_window(); main_config.load_global_cfg = yon_dictionary_create_empty(); main_config.load_system_cfg = yon_dictionary_create_empty(); - main_config.save_cfg_gui = yon_dictionary_create_empty(); main_update_information(); filters_init_flag(); filters_setup_window(glade_path); diff --git a/source/ubl-settings-resourcequota.h b/source/ubl-settings-resourcequota.h index a9a0e21..f84ced5 100755 --- a/source/ubl-settings-resourcequota.h +++ b/source/ubl-settings-resourcequota.h @@ -98,6 +98,8 @@ typedef struct dictionary *load_global_cfg; dictionary *load_system_cfg; dictionary *save_cfg_gui; + + int flag_set_data; // flag_load | 0 system // flag_load | 1 global int flag_load; @@ -198,7 +200,7 @@ void tree_view_del_line(); void main_fill_tree_view_after_remove(); void load_system_cfg(); void load_global_cfg(); -void template_cfg(char *cmd, dictionary *load_cfg); +void template_load_cfg(char *cmd, dictionary *load_cfg); void str_split_value(char *values, int index); void set_pow_size(char *str_find, int **array_size, char ***array_data, int index); void str_split_key(char *source_value, int index); diff --git a/source/ubl-utils.c b/source/ubl-utils.c index c84a862..a1205d2 100644 --- a/source/ubl-utils.c +++ b/source/ubl-utils.c @@ -17,12 +17,33 @@ dictionary *yon_dictionary_create_empty() dict->data_type = DICTIONARY_OTHER_TYPE; return dict; } +dictionary *yon_dictionary_copy(dictionary *dict){ + dictionary *dct = yon_dictionary_create_with_data(dict->key,dict->data); + dct->data_type= dict->data_type; +} +/**yon_dictionary_copy_deep(dictionary *dict) + * [EN] + * + * [RU] + * Создаёт полную копию словаря [dict] и возвращает первый элемент +*/ +dictionary *yon_dictionary_copy_deep(dictionary *dict){ + dictionary *dct = NULL; + dictionary *newone=NULL; + for_dictionaries(dct,dict){ + yon_dictionary_add_or_create_if_exists_with_data(newone,dct->key,dct->data); + newone->data_type=dct->data_type; + } + return newone->first; +} size_t yon_dict_len(dictionary *dict) { dictionary* ptr_dict = NULL; size_t size = 0; - for_dictionaries(ptr_dict, dict) { - size+=1; + if (dict != NULL) { + for_dictionaries(ptr_dict, dict) { + size+=1; + } } return size; } diff --git a/source/ubl-utils.h b/source/ubl-utils.h index 63389e4..d8fe781 100644 --- a/source/ubl-utils.h +++ b/source/ubl-utils.h @@ -92,6 +92,10 @@ typedef char** config_str; dictionary *yon_dictionary_create_empty(); +dictionary *yon_dictionary_copy(dictionary *dict); + +dictionary *yon_dictionary_copy_deep(dictionary *dict); + size_t yon_dict_len(dictionary *dict); dictionary *yon_dictionary_create_conneced(dictionary *targetdict); diff --git a/source/view_edit.c b/source/view_edit.c index b9a018f..e8a288b 100644 --- a/source/view_edit.c +++ b/source/view_edit.c @@ -110,11 +110,6 @@ void edit_init_windows() { edit_generate_cmd(); } - - - - - char* edit_get_select_device() { char* text = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(edit_widgets->cbtEditDevice)); if (text != NULL) { -- 2.35.1 From 15ba13dc1f86c2342892d42c9ea66f0d1a3e6cf7 Mon Sep 17 00:00:00 2001 From: Igor Belitskiy Date: Tue, 13 Jun 2023 17:04:06 +0600 Subject: [PATCH 24/91] =?UTF-8?q?=D0=A7=D0=B0=D1=81=D1=82=D0=B8=D1=87?= =?UTF-8?q?=D0=BD=D0=BE=20=D1=81=D0=B4=D0=B5=D0=BB=D0=B0=D0=BD=D1=8B=20?= =?UTF-8?q?=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D1=8B=20=D0=BF=D0=BE=20=D0=BF?= =?UTF-8?q?=D0=B0=D1=80=D1=81=D0=B5=D1=80=D1=83=20=D0=B4=D0=B8=D1=81=D0=BA?= =?UTF-8?q?=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Makefile | 1 - source/ubl-settings-resourcequota.c | 262 +++++++++++++++++++--------- source/ubl-settings-resourcequota.h | 15 +- source/ubl-utils.c | 49 +++++- source/ubl-utils.h | 6 + ubl-settings-resourcequota.glade | 3 +- 6 files changed, 233 insertions(+), 103 deletions(-) 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 -- 2.35.1 From 795256d890de8b6bf67db17e6361e4dc360c6fe4 Mon Sep 17 00:00:00 2001 From: Igor Belitskiy Date: Thu, 15 Jun 2023 13:59:32 +0600 Subject: [PATCH 25/91] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D1=8B=20=D1=83=D1=82=D0=B5=D1=87=D0=BA=D0=B8?= =?UTF-8?q?=20=D0=BF=D0=B0=D0=BC=D1=8F=D1=82=D0=B8=20treeView?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 4 +- source/ubl-settings-resourcequota.c | 154 +++++++++++++++++----------- source/ubl-settings-resourcequota.h | 3 +- source/ubl-utils.c | 70 +++++++++++-- source/ubl-utils.h | 7 +- 5 files changed, 162 insertions(+), 76 deletions(-) diff --git a/.gitignore b/.gitignore index caa5726..fb16029 100644 --- a/.gitignore +++ b/.gitignore @@ -2,4 +2,6 @@ ubl-settings-resourcequota.glade~ ubl-settings-resourcequota_ru.po~ source/ubl-cmake.h -ubl-settings-resourcequota \ No newline at end of file +ubl-settings-resourcequota +build/ +compile \ No newline at end of file diff --git a/source/ubl-settings-resourcequota.c b/source/ubl-settings-resourcequota.c index c2866bc..d573e12 100644 --- a/source/ubl-settings-resourcequota.c +++ b/source/ubl-settings-resourcequota.c @@ -296,6 +296,13 @@ void clear_array() { 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.i_o_limit_read = NULL; + main_config.i_o_limit_read_size = NULL; + main_config.i_o_limit_write = NULL; + main_config.i_o_limit_write_size = NULL; + main_config.disk_read = NULL; + main_config.disk_write = NULL; + main_config.size_tree_view = 0; } @@ -329,13 +336,27 @@ 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--; - 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); - set_pow_size("-", &main_config.cpu_limit_size, &main_config.cpu_limit, 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_memory("-", &main_config.type_quota_size, index); + set_size_memory_integer("-", &main_config.type_quota, index); + + set_pow_size_memory("-", &main_config.quota_volume_size, index); + set_size_memory_integer("-", &main_config.quota_volume, index); + + set_pow_size_memory("-", &main_config.quota_volume_size, index); + set_size_memory_integer("-", &main_config.quota_volume, index); + + set_pow_size_memory("-", &main_config.cpu_limit_size, index); + set_size_memory_integer("-", &main_config.cpu_limit, index); + + set_pow_size_memory("-", &main_config.soft_raw_limit_size, index); + set_size_memory_integer("-", &main_config.soft_raw_limit, index); + + set_pow_size_memory("-", &main_config.hard_raw_limit_size, index); + set_size_memory_integer("-", &main_config.hard_raw_limit, index); + + set_pow_size_memory("-", &main_config.swap_size, index); + set_size_memory_integer("-",&main_config.swap , index); + } void str_split_key(char* source_value, int index) { @@ -415,16 +436,20 @@ void str_split_value(char* values, int index) { 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); + set_pow_size_memory(yon_char_new(value), &main_config.soft_raw_limit_size, index); + set_size_memory_integer(yon_char_new(value), &main_config.soft_raw_limit, index); } if (yon_char_find_count(key, "MemoryMax") != 0) { - set_pow_size(value, &main_config.hard_raw_limit_size, &main_config.hard_raw_limit, index); + set_pow_size_memory(yon_char_new(value), &main_config.hard_raw_limit_size, index); + set_size_memory_integer(yon_char_new(value), &main_config.hard_raw_limit, index); } if (yon_char_find_count(key, "MemorySwapMax") != 0) { - set_pow_size(value, &main_config.swap_size, &main_config.swap, index); + set_pow_size_memory(yon_char_new(value), &main_config.swap_size, index); + set_size_memory_integer(yon_char_new(value), &main_config.swap, index); } if (yon_char_find_count(key, "CPUQuota") != 0) { - set_pow_size(value, &main_config.cpu_limit_size, &main_config.cpu_limit, index); + set_pow_size_memory(yon_char_new(value), &main_config.cpu_limit_size, index); + set_size_memory_integer(yon_char_new(value), &main_config.cpu_limit, index); } } } @@ -435,28 +460,6 @@ void get_param_io_limit(char** arr_values, int index_start, int size, int index_ 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++) { @@ -466,10 +469,12 @@ void get_param_io_limit(char** arr_values, int index_start, int size, int index_ 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)); + array_disk = yon_char_parsed_append(array_disk, &index_n2, disk); index_n2--; - set_pow_size(yon_char_new(value), &array_limit_size, &array_limit, index_n2); + set_pow_size_memory(yon_char_new(value), &array_limit_size, index_n2); + set_size_memory_integer(yon_char_new(value), &array_limit, index_n2); flag_parsed = 1; + index_n2++; } else if (strstr(arr_values[i], "BandwidthMax")!=NULL && strstr(arr_values[i], key_find)==NULL && flag_parsed == 1) { @@ -481,31 +486,67 @@ void get_param_io_limit(char** arr_values, int index_start, int size, int index_ } 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)); + array_disk = yon_char_parsed_append(array_disk, &index_n2, disk); index_n2--; - set_pow_size(yon_char_new(arr_values[i]), &array_limit_size, &array_limit, index_n2); + set_pow_size_memory(yon_char_new(arr_values[i]), &array_limit_size, index_n2); + set_size_memory_integer(yon_char_new(arr_values[i]), &array_limit, index_n2); + index_n2++; } else if (flag_exit == 1) { break; } - index_n2++; } - if (index_n2 != 0 ) { - index_n2 += 1; + if (index_n2 != 0) { + array_limit = yon_char_parsed_append(array_limit, &index_n2, NULL); + index_n2--; + array_disk = yon_char_parsed_append(array_disk, &index_n2, NULL); + index_n2--; + array_limit_size = philos_int_append(array_limit_size, &index_n2, -2); + 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**)); + yon_char_parsed_copy(&main_config.i_o_limit_read[index_n1], &array_limit); + philos_array_int_copy(&main_config.i_o_limit_read_size[index_n1], &array_limit_size); + yon_char_parsed_copy(&main_config.disk_read[index_n1], &array_disk); + } + 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_write_size, (index_n1 + 1) * sizeof(int*)); + main_config.disk_write = yon_remalloc(main_config.disk_write, (index_n1 + 1) * sizeof(char**)); + yon_char_parsed_copy(&main_config.i_o_limit_write[index_n1], &array_limit); + philos_array_int_copy(&main_config.i_o_limit_write_size[index_n1], &array_limit_size); + yon_char_parsed_copy(&main_config.disk_write[index_n1], &array_disk); + } + philos_free_string_array(&array_limit, index_n2); + philos_free_string_array(&array_disk, index_n2); + philos_free_int_array(&array_limit_size, index_n2); } - 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) { +void set_size_memory_integer(char* str_find, char*** array_data, int index) { 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); } + if (strstr(str_find, "-") != NULL) { + *array_data = yon_char_parsed_append(*array_data, &index, "-"); + } + else { + if (str_find[0] == '\"') { + yon_char_divide(str_find, 0); + size_t length = strlen(str_find); + str_find = yon_char_divide(str_find, length-2); + } + if (strstr(str_find, " ") == NULL) { + *array_data = yon_char_parsed_append(*array_data, &index, str_find); + } + + } +} + +void set_pow_size_memory(char* str_find, int** array_size,int index) { size_t length = strlen(str_find); if (strstr(str_find,"K") != NULL) { *array_size = philos_int_append(*array_size, &index, 0); @@ -541,18 +582,7 @@ void set_pow_size(char* str_find, int** array_size, char*** array_data , int ind *array_size = philos_int_append(*array_size, &index, -1); index--; } - if (strstr(str_find, "-") != NULL) { - *array_data = yon_char_parsed_append(*array_data, &index, "-"); - } - else { - if (str_find[0] == '\"') { - yon_char_divide(str_find, 0); - size_t length = strlen(str_find); - str_find = yon_char_divide(str_find, length-2); - } - *array_data = yon_char_parsed_append(*array_data, &index, str_find); - - } + } void main_cbx_2_event() { @@ -661,15 +691,15 @@ void fill_tree_view(int start, int size, int flag_gui_add) { 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; + char* str = ""; 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); + str = yon_char_unite(str, ", ", disk[index][index_to_n2], " ", i_o_limit[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); + str = yon_char_unite(str, disk[index][index_to_n2], " ", i_o_limit[index][index_to_n2], NULL); } index_to_n2++; } @@ -1186,7 +1216,7 @@ int main(int argc, char *argv[]){ GTK_STYLE_PROVIDER(css), -1); //load_global_cfg(); - load_system_cfg(); + //load_system_cfg(); gtk_main(); } diff --git a/source/ubl-settings-resourcequota.h b/source/ubl-settings-resourcequota.h index 2b17f27..4c0d2c8 100755 --- a/source/ubl-settings-resourcequota.h +++ b/source/ubl-settings-resourcequota.h @@ -203,7 +203,8 @@ void load_system_cfg(); void load_global_cfg(); void template_load_cfg(char *cmd, dictionary *load_cfg); void str_split_value(char *values, int index); -void set_pow_size(char *str_find, int **array_size, char ***array_data, int index); +void set_size_memory_integer(char* str_find, char*** array_data, int index); +void set_pow_size_memory(char* str_find, int** array_size, int index); void str_split_key(char *source_value, int index); void fill_tree_view(int start, int size, int flag_gui_add); void clear_array(); diff --git a/source/ubl-utils.c b/source/ubl-utils.c index fbcd15e..9c5ba84 100644 --- a/source/ubl-utils.c +++ b/source/ubl-utils.c @@ -785,18 +785,19 @@ int yon_char_parsed_includes_char_parsed (config_str source, config_str to_check else return 0; } -config_str yon_char_parsed_new (config_str old, int *old_size, ...){ +/**yon_char_parsed_new (config_str old, int *old_size, ...) + * [EN] + * + * [RU] + * Создаёт новый массив строк. В [size] выгружается его размер + * [...] - неограниченное количество строк. +*/ +config_str yon_char_parsed_new (int *size, ...){ va_list arglist; - int new_size=0; config_str new_parsed=NULL; - if (old){ - new_size=*old_size; - new_parsed=old; - }else { new_parsed=new(char*); - } - - va_start(arglist,old_size); + int new_size=0; + va_start(arglist,size); char *newparse = va_arg(arglist,char*); while (newparse){ new_size++; @@ -805,7 +806,7 @@ config_str yon_char_parsed_new (config_str old, int *old_size, ...){ newparse=va_arg(arglist,char*); } va_end(arglist); - *old_size=new_size; + *size=new_size; return new_parsed; } @@ -816,12 +817,59 @@ 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=yon_remalloc(parsed,(*size+1)*sizeof(char*)); + config_str new_parsed=realloc(parsed,(*size+1)*sizeof(char*)); new_parsed[(*size)]=yon_char_new(string); (*size)++; return new_parsed; } +void yon_char_parsed_copy(config_str *source, config_str *to_copy){ + if (source&&to_copy&&*to_copy){ + int size=0; + config_str new_char = yon_char_parsed_new(&size,(*to_copy)[0],NULL); + for (int i=1;(*to_copy)[i];i++){ + new_char = yon_char_parsed_append(new_char,&size,yon_char_new((*to_copy)[i])); + } + new_char = yon_char_parsed_append(new_char,&size,NULL); + + if (new_char) *source = new_char; + } +} + +void philos_array_str_copy(char*** source, char*** copy) { + int index = 0; + if (copy == NULL || source == NULL) { + return; + } + while (1) { + if ((*copy)[index] != NULL) { + (*source) = yon_char_parsed_append((*source), &index, yon_char_new((*copy)[index])); + } + else { + break; + } + } +} + +void yon_int_array_append(int **source, int append){ + int size=0; + for (size=0;(*source)[size]!=-2;size++); + *source = realloc(*source,(size+2)*sizeof(int)); + (*source)[size] = append; + (*source)[size+1] = -2; +} + +void philos_array_int_copy(int** source, int** copy) { + int * new_int = g_malloc0(sizeof(int)*2); + new_int[0] = (*copy)[0]; + new_int[1] = -2; + int i = 2; + for (i=1;(*copy)[i]!=-2;i++) { + yon_int_array_append(&new_int,(*copy)[i]); + } + *source=new_int; +} + // parsing functions apps *yon_apps_scan_and_parse_desktops(int *sizef) diff --git a/source/ubl-utils.h b/source/ubl-utils.h index eb116a5..95573fd 100644 --- a/source/ubl-utils.h +++ b/source/ubl-utils.h @@ -168,8 +168,13 @@ int yon_char_find_count(char *source, char *find); int yon_char_parsed_includes_char_parsed (config_str source, config_str to_check, int source_size, int check_size); -config_str yon_char_parsed_new (config_str old, int *old_size, ...); +config_str yon_char_parsed_new (int *size, ...); config_str yon_char_parsed_append(config_str parsed, int *size, char *string); +void yon_char_parsed_copy(config_str *source, config_str *to_copy); + +void philos_array_str_copy(char*** source, char*** copy); +void philos_array_int_copy(int** source, int** copy); +void array_copy(char*** source, char*** copy); // parsing functions config_str philos_list_user(int* size); -- 2.35.1 From 2bf8a2949e029913d48e811aede2e639563745d6 Mon Sep 17 00:00:00 2001 From: Igor Belitskiy Date: Thu, 15 Jun 2023 16:48:25 +0600 Subject: [PATCH 26/91] =?UTF-8?q?=D0=9D=D0=B0=D1=87=D0=B0=D0=BB=20=D0=BF?= =?UTF-8?q?=D0=B8=D1=81=D0=B0=D1=82=D1=8C=20=D1=84=D1=83=D0=BD=D0=BA=D1=86?= =?UTF-8?q?=D0=B8=D1=8E=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D1=8F=20=D0=B4=D0=B8=D1=81=D0=BA=D0=BE=D0=B2=20=D0=B2=20?= =?UTF-8?q?=D0=BC=D0=B0=D1=81=D1=81=D0=B8=D0=B2=20=D0=B2=20=D0=BE=D0=BA?= =?UTF-8?q?=D0=BD=D0=B5=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D1=82=D1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/ubl-settings-resourcequota.c | 1 + source/view_add.c | 109 +++++++++++++++++++++++++++- source/view_add.h | 13 +++- 3 files changed, 120 insertions(+), 3 deletions(-) diff --git a/source/ubl-settings-resourcequota.c b/source/ubl-settings-resourcequota.c index d573e12..823dea9 100644 --- a/source/ubl-settings-resourcequota.c +++ b/source/ubl-settings-resourcequota.c @@ -1188,6 +1188,7 @@ int main(int argc, char *argv[]){ exit(0); } } + get_add_config()->size = 0; add_get_cmd_group(CMD_GET_GROUP); add_get_systemd_cgls(CMD_GET_SLICE_SERVICE); gtk_init(&argc,&argv); diff --git a/source/view_add.c b/source/view_add.c index 24c505f..0e1e5b4 100644 --- a/source/view_add.c +++ b/source/view_add.c @@ -1,7 +1,11 @@ #include "view_add.h" add_window *add_widgets = NULL; +add_config obj_add_config; +add_config* get_add_config() { + return &obj_add_config; +} add_window *add_setup_window(char* glade_path) { if (add_widgets == NULL) { @@ -43,11 +47,28 @@ add_window *add_setup_window(char* glade_path) { add_event(add_widgets); add_init_windows(); add_localization(add_widgets); + add_config_init(); } return add_widgets; } +void add_config_init() { + if (obj_add_config.size != 0) { + philos_free_string_array(&obj_add_config.disk, obj_add_config.size); + philos_free_string_array(&obj_add_config.i_o_limit_read, obj_add_config.size); + philos_free_string_array(&obj_add_config.i_o_limit_write, obj_add_config.size); + philos_free_int_array(&obj_add_config.i_o_limit_read_size, obj_add_config.size); + philos_free_int_array(&obj_add_config.i_o_limit_write_size, obj_add_config.size); + } + obj_add_config.disk = NULL; + obj_add_config.i_o_limit_read = NULL; + obj_add_config.i_o_limit_write = NULL; + obj_add_config.i_o_limit_read_size = NULL; + obj_add_config.i_o_limit_write_size = NULL; + obj_add_config.size = 0; +} + void add_init_windows() { if (gtk_combo_box_get_active(GTK_COMBO_BOX(add_widgets->cbxAddQuotaLevel2)) != -1) { gtk_widget_set_sensitive(add_widgets->boxBlockGui, 1); @@ -67,6 +88,90 @@ void add_init_windows() { } } +int check_activ_disk() { + char* disk = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(&add_widgets->cbtAddDevice)); + disk = yon_char_divide_search(disk," ", -1); + int bool_read = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(add_widgets->chbAddRead)); + int bool_write = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(add_widgets->chbAddWrite)); + if (disk == NULL || obj_add_config.size == 0) { + return 0; + } + return 1; +} + +void add_del_disk() { + char* disk = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(add_widgets->cbtAddDevice)); + int bool_read = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(add_widgets->chbAddRead)); + int bool_write = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(add_widgets->chbAddWrite)); + if (check_activ_disk() == 0) { + return; + } + if (obj_add_config.disk != NULL && obj_add_config.size != 0) { + int index_find = 0; + for (int index = 0; index < obj_add_config.size; index++) { + char* disk_cfg = yon_char_new(obj_add_config.disk[index]); + if (strstr(disk_cfg, disk) != NULL) { + index_find = index; + break; + } + } + if ((bool_read == 0 && bool_write == 0 && index_find != 0)) { + yon_char_parsed_shrink(obj_add_config.disk,&obj_add_config.size, index_find); + obj_add_config.size++; + remove_element_int_array(obj_add_config.i_o_limit_read_size,&obj_add_config.size, index_find); + obj_add_config.size++; + remove_element_int_array(obj_add_config.i_o_limit_write_size,&obj_add_config.size, index_find); + obj_add_config.size++; + yon_char_parsed_shrink(obj_add_config.i_o_limit_read,&obj_add_config.size, index_find); + obj_add_config.size++; + yon_char_parsed_shrink(obj_add_config.i_o_limit_write,&obj_add_config.size, index_find); + } + } +} +void add_disk_all(){ + char* disk = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(add_widgets->cbtAddDevice)); + if (check_activ_disk() == 0) { + return; + } + if (obj_add_config.disk != NULL && obj_add_config.size !=0) { + int index_find = 0; + for (int index = 0; index < obj_add_config.size; index++) { + char* disk_cfg = yon_char_new(obj_add_config.disk[index]); + if (strstr(disk_cfg, disk) != NULL) { + index_find = index; + break; + } + } + if (index_find == 0) { + yon_char_parsed_append(obj_add_config.disk,&obj_add_config.size, disk); + obj_add_config.size--; + philos_int_append(obj_add_config.i_o_limit_read_size,&obj_add_config.size,add_get_read_device_size()); + obj_add_config.size--; + philos_int_append(obj_add_config.i_o_limit_write_size,&obj_add_config.size,add_get_write_device_size()); + obj_add_config.size--; + yon_char_parsed_append(obj_add_config.i_o_limit_read,&obj_add_config.size,add_get_read_device()); + obj_add_config.size--; + yon_char_parsed_append(obj_add_config.i_o_limit_write,&obj_add_config.size,add_get_write_device()); + } + } + else { + yon_char_parsed_append(obj_add_config.disk,&obj_add_config.size, disk); + obj_add_config.size--; + philos_int_append(obj_add_config.i_o_limit_read_size,&obj_add_config.size,add_get_read_device_size()); + obj_add_config.size--; + philos_int_append(obj_add_config.i_o_limit_write_size,&obj_add_config.size,add_get_write_device_size()); + obj_add_config.size--; + yon_char_parsed_append(obj_add_config.i_o_limit_read,&obj_add_config.size,add_get_read_device()); + obj_add_config.size--; + yon_char_parsed_append(obj_add_config.i_o_limit_write,&obj_add_config.size,add_get_write_device()); + } + +} +void event_check_io_device() { + add_del_disk(); + add_disk_all(); + add_init_windows(); +} void add_event(add_window *widgets) { g_signal_connect(G_OBJECT(widgets->btnAddCancel),"clicked",G_CALLBACK(add_on_destroy_subwindow),NULL); @@ -75,8 +180,8 @@ void add_event(add_window *widgets) { g_signal_connect(G_OBJECT(widgets->chkSevereRestrictionAdd), "toggled", G_CALLBACK(add_init_windows), NULL); g_signal_connect(G_OBJECT(widgets->chkPaddingFLAdd), "toggled", G_CALLBACK(add_init_windows), NULL); g_signal_connect(G_OBJECT(widgets->chkCPULimitAdd), "toggled", G_CALLBACK(add_init_windows), NULL); - g_signal_connect(G_OBJECT(widgets->chbAddRead), "toggled", G_CALLBACK(add_init_windows), NULL); - g_signal_connect(G_OBJECT(widgets->chbAddWrite), "toggled", G_CALLBACK(add_init_windows), NULL); + g_signal_connect(G_OBJECT(widgets->chbAddRead), "toggled", G_CALLBACK(event_check_io_device), NULL); + g_signal_connect(G_OBJECT(widgets->chbAddWrite), "toggled", G_CALLBACK(event_check_io_device), NULL); g_signal_connect(G_OBJECT(widgets->cbxAddQuotaObj),"changed",G_CALLBACK(add_update_combo_box), NULL); g_signal_connect(G_OBJECT(widgets->cbxAddQuotaLevel2),"changed",G_CALLBACK(add_init_windows), NULL); diff --git a/source/view_add.h b/source/view_add.h index ed82fc7..3b9a9a7 100644 --- a/source/view_add.h +++ b/source/view_add.h @@ -20,6 +20,15 @@ static char* CMD_GET_GROUP; static char* CMD_GET_SLICE_SERVICE; + +typedef struct { + config_str disk; + config_str i_o_limit_read; + config_str i_o_limit_write; + int* i_o_limit_read_size; + int* i_o_limit_write_size; + int size; +} add_config; // Переменные typedef struct { @@ -84,7 +93,9 @@ int add_get_hard_size(); int add_get_limit_cpu_size(); int add_get_limit_swap_size(); int add_get_quota_object_size(); - +add_config* get_add_config(); +void add_config_init(); +void add_disk_all(); void add_set_active_widgets_device_io(GtkWidget *check, GtkWidget *spin, GtkWidget *combo); void add_get_cmd_group(char* cmd_get_group); char* add_get_select_device_to_level_2(); -- 2.35.1 From 5dc23e2a6f0440d8b801362e36eeb4c1e1c9803c Mon Sep 17 00:00:00 2001 From: Igor Belitskiy Date: Thu, 15 Jun 2023 17:49:19 +0600 Subject: [PATCH 27/91] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8?= =?UTF-8?q?=D0=BB=20=D1=84=D1=83=D0=BD=D0=BA=D1=86=D0=B8=D1=8E=20=D1=81?= =?UTF-8?q?=D0=BE=D1=85=D1=80=D0=B0=D0=BD=D0=B5=D0=BD=D0=B8=D1=8F=20=D1=83?= =?UTF-8?q?=D1=81=D1=82=D1=80=D0=BE=D0=B9=D1=81=D1=82=D0=B2=20=D0=B2=D0=B2?= =?UTF-8?q?=D0=BE=D0=B4=D0=B0=20=D0=B2=D1=8B=D0=B2=D0=BE=D0=B4=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 3 ++- source/ubl-settings-resourcequota.c | 23 ++++++++++++++++++++++- source/ubl-settings-resourcequota.h | 1 + 3 files changed, 25 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index fb16029..5a6c163 100644 --- a/.gitignore +++ b/.gitignore @@ -4,4 +4,5 @@ ubl-settings-resourcequota_ru.po~ source/ubl-cmake.h ubl-settings-resourcequota build/ -compile \ No newline at end of file +compile +vgcore.* \ No newline at end of file diff --git a/source/ubl-settings-resourcequota.c b/source/ubl-settings-resourcequota.c index 823dea9..f409087 100644 --- a/source/ubl-settings-resourcequota.c +++ b/source/ubl-settings-resourcequota.c @@ -992,6 +992,8 @@ char* save_format_value(int index) { split_simvol[0] = ','; split_simvol[1] = '\0'; } + value = add_io_str_format_ubconfig(value, "IOReadBandwidthMax", main_config.i_o_limit_read, main_config.disk_read, index); + value = add_io_str_format_ubconfig(value, "IOWriteBandwidthMax", main_config.i_o_limit_write, main_config.disk_write, index); //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] = ','; @@ -1002,7 +1004,26 @@ char* save_format_value(int index) { //} return value; } - +char* add_io_str_format_ubconfig(char* cmd_io, char* key, char*** i_o_limit, char*** disk_read, int index) { + char split_simvol[2] = {0}; + if (i_o_limit != NULL) { + if (i_o_limit[index] != NULL) { + if (i_o_limit[index] != NULL) { + for (int i = 0;i_o_limit[index][i] != NULL; i++) { + if (i==0) { + cmd_io = yon_char_unite(cmd_io, ",", key, "="); + } + char* read_limit = i_o_limit[index][i]; + char* read_limit_disk = disk_read[index][i]; + cmd_io = yon_char_unite(cmd_io, split_simvol, read_limit_disk, " ", read_limit); + split_simvol[0] = ','; + split_simvol[1] = '\0'; + } + } + } + } + return cmd_io; +} int check_save(dictionary* load_cfg) { if (main_config.flag_set_data == 1) { diff --git a/source/ubl-settings-resourcequota.h b/source/ubl-settings-resourcequota.h index 4c0d2c8..4b54ab0 100755 --- a/source/ubl-settings-resourcequota.h +++ b/source/ubl-settings-resourcequota.h @@ -218,4 +218,5 @@ char* template_format_str_remove_save(dictionary* load_cfg, char* source_remove_ char* template_format_str_set_save(dictionary* load_cfg, char* source_set_cmd); 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* add_io_str_format_ubconfig(char* cmd_io, char* key, char*** i_o_limit, char*** disk_read, int index); 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 -- 2.35.1 From 79bae2385bda605d6dd7f6fa5f0eb696af9a4eca Mon Sep 17 00:00:00 2001 From: Igor Belitskiy Date: Thu, 15 Jun 2023 17:59:33 +0600 Subject: [PATCH 28/91] =?UTF-8?q?=D0=9D=D0=B0=D1=87=D0=B0=D0=BB=20=D0=B4?= =?UTF-8?q?=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5=20=D1=84?= =?UTF-8?q?=D1=83=D0=BD=D0=BA=D1=86=D0=B8=D0=BE=D0=BD=D0=B0=D0=BB=D0=B0=20?= =?UTF-8?q?=D0=B4=D0=BB=D1=8F=20=D1=83=D1=81=D1=82=D1=80=D0=BE=D0=B9=D1=81?= =?UTF-8?q?=D1=82=D0=B2=20=D0=B2=D0=B2=D0=BE=D0=B4=D0=B0=20=D0=B2=D1=8B?= =?UTF-8?q?=D0=B2=D0=BE=D0=B4=D0=B0=20=D0=BE=D0=BA=D0=BD=D0=B0=20=D1=80?= =?UTF-8?q?=D0=B5=D0=B4=D0=B0=D0=BA=D1=82=D0=B8=D1=80=D0=BE=D0=B2=D0=B0?= =?UTF-8?q?=D0=BD=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/ubl-settings-resourcequota.c | 1 + source/view_edit.c | 48 ++++++++++++++++++++--------- source/view_edit.h | 16 ++++++++-- 3 files changed, 48 insertions(+), 17 deletions(-) diff --git a/source/ubl-settings-resourcequota.c b/source/ubl-settings-resourcequota.c index f409087..e7b8a0f 100644 --- a/source/ubl-settings-resourcequota.c +++ b/source/ubl-settings-resourcequota.c @@ -1210,6 +1210,7 @@ int main(int argc, char *argv[]){ } } get_add_config()->size = 0; + get_edit_config()->size = 0; add_get_cmd_group(CMD_GET_GROUP); add_get_systemd_cgls(CMD_GET_SLICE_SERVICE); gtk_init(&argc,&argv); diff --git a/source/view_edit.c b/source/view_edit.c index e8a288b..fa38a05 100644 --- a/source/view_edit.c +++ b/source/view_edit.c @@ -1,7 +1,11 @@ #include "view_edit.h" edit_window *edit_widgets = NULL; +edit_config obj_edit_config; +edit_config* get_edit_config() { + return &obj_edit_config; +} edit_window *edit_setup_window(char* glade_path){ if (edit_widgets == NULL) { edit_widgets = malloc(sizeof(edit_window)); @@ -38,10 +42,25 @@ edit_window *edit_setup_window(char* glade_path){ device_fill_disk(edit_widgets->cbtEditDevice); // edit_event(edit_widgets); edit_localization(edit_widgets); + edit_config_init(); } return edit_widgets; } - +void edit_config_init() { + if (obj_edit_config.size != 0) { + philos_free_string_array(&obj_edit_config.disk, obj_edit_config.size); + philos_free_string_array(&obj_edit_config.i_o_limit_read, obj_edit_config.size); + philos_free_string_array(&obj_edit_config.i_o_limit_write, obj_edit_config.size); + philos_free_int_array(&obj_edit_config.i_o_limit_read_size, obj_edit_config.size); + philos_free_int_array(&obj_edit_config.i_o_limit_write_size, obj_edit_config.size); + } + obj_edit_config.disk = NULL; + obj_edit_config.i_o_limit_read = NULL; + obj_edit_config.i_o_limit_write = NULL; + obj_edit_config.i_o_limit_read_size = NULL; + obj_edit_config.i_o_limit_write_size = NULL; + obj_edit_config.size = 0; +} void edit_event(edit_window *widgets) { g_signal_connect(G_OBJECT(widgets->btnEditCancel),"clicked",G_CALLBACK(edit_on_hide_subwindow),NULL); g_signal_connect(G_OBJECT(widgets->Window), "destroy", G_CALLBACK(edit_destroy), NULL); @@ -175,19 +194,20 @@ char* edit_get_limit_swap() { } // ================================================================= -void edit_set_select_device(char* str_value) { - int index = yon_gtk_combo_box_text_find(edit_widgets->cbtEditDevice,str_value); - gtk_combo_box_set_active(GTK_COMBO_BOX(edit_widgets->cbtEditDevice), index); -} -void edit_set_read_device(char* str_value, int pow_mem) { - edit_temp_set(str_value,pow_mem, edit_widgets->chbEditRead, - edit_widgets->spinEditRead, - edit_widgets->cbtEditRead); -} -void edit_set_write_device(char* str_value, int pow_mem) { - edit_temp_set(str_value,pow_mem, edit_widgets->chbEditWrite, - edit_widgets->spinEditWrite, - edit_widgets->cbtEditWrite); +void edit_set_select_device(char** str_value) { + + //int index = yon_gtk_combo_box_text_find(edit_widgets->cbtEditDevice,str_value); + //gtk_combo_box_set_active(GTK_COMBO_BOX(edit_widgets->cbtEditDevice), index); +} +void edit_set_read_device(char** str_value, int* pow_mem) { + //edit_temp_set(str_value,pow_mem, edit_widgets->chbEditRead, + // edit_widgets->spinEditRead, + // edit_widgets->cbtEditRead); +} +void edit_set_write_device(char** str_value, int* pow_mem) { + // edit_temp_set(str_value,pow_mem, edit_widgets->chbEditWrite, + // edit_widgets->spinEditWrite, + // edit_widgets->cbtEditWrite); } void edit_set_soft(char* str_value, int pow_mem) { edit_temp_set(str_value,pow_mem, edit_widgets->chkSoftRestrictionEdit, diff --git a/source/view_edit.h b/source/view_edit.h index c7c7e46..245df04 100644 --- a/source/view_edit.h +++ b/source/view_edit.h @@ -17,6 +17,14 @@ #define CMD_SWAP "grep '^Swap' /proc/meminfo | grep \"SwapTotal\" |grep -oE \"[0-9]{1,}\"" #define CMD_RAW "cat /proc/meminfo | grep \"MemTotal\" |grep -oE \"[0-9]{1,}\"" // Переменные +typedef struct { + config_str disk; + config_str i_o_limit_read; + config_str i_o_limit_write; + int* i_o_limit_read_size; + int* i_o_limit_write_size; + int size; +} edit_config; typedef struct { GtkWidget* Window; GtkWidget* btnSaveEditSave; @@ -69,9 +77,9 @@ char* edit_get_limit_cpu(); char* edit_get_limit_swap(); void edit_generate_cmd(); void wrapper_edit_show(); -void edit_set_select_device(char* str_value); -void edit_set_read_device(char* str_value, int pow_mem); -void edit_set_write_device(char* str_value, int pow_mem); +void edit_set_select_device(char** str_value); +void edit_set_read_device(char** str_value, int* pow_mem); +void edit_set_write_device(char** str_value, int* pow_mem); void edit_set_soft(char* str_value, int pow_mem); void edit_set_hard(char* str_value, int pow_mem); void edit_set_limit_cpu(char* str_value, int pow_mem); @@ -84,6 +92,8 @@ int edit_get_soft_size(); int edit_get_hard_size(); int edit_get_limit_cpu_size(); int edit_get_limit_swap_size(); +void edit_config_init(); +edit_config* get_edit_config(); void edit_set_active_widgets_device_io(GtkWidget *check, GtkWidget *spin, GtkWidget *combo); void edit_set_spin_adjustment(GtkWidget *check, GtkWidget *spin, GtkWidget *combo, size_t value); #endif \ No newline at end of file -- 2.35.1 From 22a5defbcdb0aea385009caf7d2a11245ee61ed9 Mon Sep 17 00:00:00 2001 From: Igor Belitskiy Date: Fri, 16 Jun 2023 10:21:47 +0600 Subject: [PATCH 29/91] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB=20=D0=B7=D0=B0=D0=B3=D1=80=D1=83=D0=B7=D0=BA=D1=83?= =?UTF-8?q?=20=D0=B4=D0=B0=D0=BD=D0=BD=D1=8B=D1=85=20=D0=B2=20=D0=BE=D0=BA?= =?UTF-8?q?=D0=BD=D0=BE=20"=D1=80=D0=B5=D0=B4=D0=B0=D0=BA=D1=82=D0=B8?= =?UTF-8?q?=D1=80=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D1=8F"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/ubl-settings-resourcequota.c | 34 +++++++++--------- source/ubl-settings-resourcequota.h | 3 +- source/ubl-utils.c | 11 ++++-- source/view_edit.c | 53 +++++++++++++++++++++-------- source/view_edit.h | 6 ++-- 5 files changed, 68 insertions(+), 39 deletions(-) diff --git a/source/ubl-settings-resourcequota.c b/source/ubl-settings-resourcequota.c index e7b8a0f..0610711 100644 --- a/source/ubl-settings-resourcequota.c +++ b/source/ubl-settings-resourcequota.c @@ -281,8 +281,7 @@ void clear_array() { 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_n3(&main_config.disk, 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; @@ -300,8 +299,7 @@ void clear_array() { main_config.i_o_limit_read_size = NULL; main_config.i_o_limit_write = NULL; main_config.i_o_limit_write_size = NULL; - main_config.disk_read = NULL; - main_config.disk_write = NULL; + main_config.disk = NULL; main_config.size_tree_view = 0; } @@ -505,18 +503,18 @@ void get_param_io_limit(char** arr_values, int index_start, int size, int index_ 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**)); + main_config.disk = yon_remalloc(main_config.disk, (index_n1 + 1) * sizeof(char**)); yon_char_parsed_copy(&main_config.i_o_limit_read[index_n1], &array_limit); philos_array_int_copy(&main_config.i_o_limit_read_size[index_n1], &array_limit_size); - yon_char_parsed_copy(&main_config.disk_read[index_n1], &array_disk); + yon_char_parsed_copy(&main_config.disk[index_n1], &array_disk); } 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_write_size, (index_n1 + 1) * sizeof(int*)); - main_config.disk_write = yon_remalloc(main_config.disk_write, (index_n1 + 1) * sizeof(char**)); + main_config.disk = yon_remalloc(main_config.disk, (index_n1 + 1) * sizeof(char**)); yon_char_parsed_copy(&main_config.i_o_limit_write[index_n1], &array_limit); philos_array_int_copy(&main_config.i_o_limit_write_size[index_n1], &array_limit_size); - yon_char_parsed_copy(&main_config.disk_write[index_n1], &array_disk); + yon_char_parsed_copy(&main_config.disk[index_n1], &array_disk); } philos_free_string_array(&array_limit, index_n2); philos_free_string_array(&array_disk, index_n2); @@ -670,8 +668,8 @@ void fill_tree_view(int start, int size, int flag_gui_add) { for (int index = start; index < size; index++) { 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); + char* str_io_read = format_io_limit_in_tree_view(main_config.disk, 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, 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], @@ -845,17 +843,17 @@ 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_read_device(&main_config.i_o_limit_read[index], &main_config.i_o_limit_read_size[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_init_windows(); edit_set_limit_swap(main_config.swap[index], main_config.swap_size[index]); edit_event(get_widget_edit()); - // edit_set_select_device(main_config.cpu_limit[index]); g_signal_connect(G_OBJECT(get_widget_edit()->btnSaveEditSave), "clicked", G_CALLBACK(main_edit_btn_save), NULL); + edit_init_windows(); } } @@ -992,8 +990,8 @@ char* save_format_value(int index) { split_simvol[0] = ','; split_simvol[1] = '\0'; } - value = add_io_str_format_ubconfig(value, "IOReadBandwidthMax", main_config.i_o_limit_read, main_config.disk_read, index); - value = add_io_str_format_ubconfig(value, "IOWriteBandwidthMax", main_config.i_o_limit_write, main_config.disk_write, index); + value = add_io_str_format_ubconfig(value, "IOReadBandwidthMax", main_config.i_o_limit_read, main_config.disk, index); + value = add_io_str_format_ubconfig(value, "IOWriteBandwidthMax", main_config.i_o_limit_write, main_config.disk, index); //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] = ','; @@ -1004,7 +1002,7 @@ char* save_format_value(int index) { //} return value; } -char* add_io_str_format_ubconfig(char* cmd_io, char* key, char*** i_o_limit, char*** disk_read, int index) { +char* add_io_str_format_ubconfig(char* cmd_io, char* key, char*** i_o_limit, char*** disk, int index) { char split_simvol[2] = {0}; if (i_o_limit != NULL) { if (i_o_limit[index] != NULL) { @@ -1014,7 +1012,7 @@ char* add_io_str_format_ubconfig(char* cmd_io, char* key, char*** i_o_limit, ch cmd_io = yon_char_unite(cmd_io, ",", key, "="); } char* read_limit = i_o_limit[index][i]; - char* read_limit_disk = disk_read[index][i]; + char* read_limit_disk = disk[index][i]; cmd_io = yon_char_unite(cmd_io, split_simvol, read_limit_disk, " ", read_limit); split_simvol[0] = ','; split_simvol[1] = '\0'; diff --git a/source/ubl-settings-resourcequota.h b/source/ubl-settings-resourcequota.h index 4b54ab0..d5e7258 100755 --- a/source/ubl-settings-resourcequota.h +++ b/source/ubl-settings-resourcequota.h @@ -81,8 +81,7 @@ typedef struct config_str cpu_limit; config_str* i_o_limit_read; config_str* i_o_limit_write; - config_str* disk_read; - config_str* disk_write; + config_str* disk; config_str array_del_line; int size_array_del_line; diff --git a/source/ubl-utils.c b/source/ubl-utils.c index 9c5ba84..9064cf9 100644 --- a/source/ubl-utils.c +++ b/source/ubl-utils.c @@ -1271,6 +1271,7 @@ int yon_gtk_combo_box_text_find(GtkWidget *combo_box, char *text_to_find){ for (int i=0;strcmp(str,"")!=0;i++){ gtk_combo_box_set_active(GTK_COMBO_BOX(combo_box),i); str=gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(combo_box)); + puts(str); if (!str) return -1; if (strstr(str,text_to_find)) return i; } @@ -1508,7 +1509,10 @@ void philos_set_active_widgets(GtkWidget *check, GtkWidget *spin, GtkWidget *com gboolean active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(check)); gtk_widget_set_sensitive(spin, active); gtk_widget_set_sensitive(combo, active); - if (active == 0) { + if (gtk_spin_button_get_digits(GTK_SPIN_BUTTON(spin))>0) { + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check),1); + } + else if (active == 0) { gtk_spin_button_set_digits(GTK_SPIN_BUTTON(spin), 0); } if (flag_cpu == 0) { @@ -1547,7 +1551,10 @@ void philos_set_active_widgets_device_io(GtkWidget* combo_to_l2,GtkWidget *check gboolean active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(check)); gtk_widget_set_sensitive(spin, active); gtk_widget_set_sensitive(combo, active); - if (active == 0) { + if (gtk_spin_button_get_digits(GTK_SPIN_BUTTON(spin))>0) { + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check),1); + } + else if (active == 0) { gtk_spin_button_set_digits(GTK_SPIN_BUTTON(spin), 0); } } diff --git a/source/view_edit.c b/source/view_edit.c index fa38a05..3f841b0 100644 --- a/source/view_edit.c +++ b/source/view_edit.c @@ -39,10 +39,10 @@ edit_window *edit_setup_window(char* glade_path){ edit_widgets->chbEditWrite = yon_gtk_builder_get_widget(builder,"chbEditWrite"); edit_widgets->cbtEditWrite = yon_gtk_builder_get_widget(builder,"cbtEditWrite"); edit_widgets->entryEditCmd = yon_gtk_builder_get_widget(builder,"entryEditCmd"); + edit_config_init(); device_fill_disk(edit_widgets->cbtEditDevice); // edit_event(edit_widgets); edit_localization(edit_widgets); - edit_config_init(); } return edit_widgets; } @@ -194,20 +194,45 @@ char* edit_get_limit_swap() { } // ================================================================= -void edit_set_select_device(char** str_value) { +void edit_set_select_device(char*** str_value) { + if ((*str_value) == NULL) { + return; + } + if ((*str_value)[0] == NULL) { + return; + } + int index = yon_gtk_combo_box_text_find(edit_widgets->cbtEditDevice, (*str_value)[0]); + gtk_combo_box_set_active(GTK_COMBO_BOX(edit_widgets->cbtEditDevice), index); + - //int index = yon_gtk_combo_box_text_find(edit_widgets->cbtEditDevice,str_value); - //gtk_combo_box_set_active(GTK_COMBO_BOX(edit_widgets->cbtEditDevice), index); -} -void edit_set_read_device(char** str_value, int* pow_mem) { - //edit_temp_set(str_value,pow_mem, edit_widgets->chbEditRead, - // edit_widgets->spinEditRead, - // edit_widgets->cbtEditRead); -} -void edit_set_write_device(char** str_value, int* pow_mem) { - // edit_temp_set(str_value,pow_mem, edit_widgets->chbEditWrite, - // edit_widgets->spinEditWrite, - // edit_widgets->cbtEditWrite); + +} +void edit_set_read_device(char*** str_value, int** pow_mem) { + if ((*str_value) == NULL || (*pow_mem) == NULL) { + return; + } + if ((*str_value)[0] == NULL || (*pow_mem)[0] == -2) { + return; + } + edit_temp_set((*str_value)[0],(*pow_mem)[0], edit_widgets->chbEditRead, + edit_widgets->spinEditRead, + edit_widgets->cbtEditRead); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(edit_widgets->chbEditRead), 1); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(edit_widgets->chbEditWrite), 1); +} +void edit_set_write_device(char*** str_value, int** pow_mem) { + if ((*str_value) == NULL || (*pow_mem) == NULL) { + return; + } + if ((*str_value)[0] == NULL || (*pow_mem)[0] == -2) { + return; + } + else { + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(edit_widgets->chbEditWrite), 1); + } + edit_temp_set((*str_value)[0],(*pow_mem)[0], edit_widgets->chbEditWrite, + edit_widgets->spinEditWrite, + edit_widgets->cbtEditWrite); } void edit_set_soft(char* str_value, int pow_mem) { edit_temp_set(str_value,pow_mem, edit_widgets->chkSoftRestrictionEdit, diff --git a/source/view_edit.h b/source/view_edit.h index 245df04..6aa9f10 100644 --- a/source/view_edit.h +++ b/source/view_edit.h @@ -77,9 +77,9 @@ char* edit_get_limit_cpu(); char* edit_get_limit_swap(); void edit_generate_cmd(); void wrapper_edit_show(); -void edit_set_select_device(char** str_value); -void edit_set_read_device(char** str_value, int* pow_mem); -void edit_set_write_device(char** str_value, int* pow_mem); +void edit_set_select_device(char*** str_value); +void edit_set_read_device(char*** str_value, int** pow_mem); +void edit_set_write_device(char*** str_value, int** pow_mem); void edit_set_soft(char* str_value, int pow_mem); void edit_set_hard(char* str_value, int pow_mem); void edit_set_limit_cpu(char* str_value, int pow_mem); -- 2.35.1 From f8ffc74518ae3f312d46f147c1edffb7d4f509ee Mon Sep 17 00:00:00 2001 From: Igor Belitskiy Date: Fri, 16 Jun 2023 11:39:12 +0600 Subject: [PATCH 30/91] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8?= =?UTF-8?q?=D0=BB=20=D1=83=D0=B4=D0=B0=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5=20?= =?UTF-8?q?=D1=83=D1=81=D1=82=D1=80=D0=BE=D0=B9=D1=81=D1=82=D0=B2=20=D0=B2?= =?UTF-8?q?=D0=B2=D0=BE=D0=B4=D0=B0=20=D0=B2=D1=8B=D0=B2=D0=BE=D0=B4=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/ubl-settings-resourcequota.c | 68 +++++++++++++++++------------ source/ubl-utils.c | 39 ++++++++++++++++- source/ubl-utils.h | 4 ++ source/view_edit.c | 37 ++++++---------- source/view_edit.h | 10 ++--- 5 files changed, 99 insertions(+), 59 deletions(-) diff --git a/source/ubl-settings-resourcequota.c b/source/ubl-settings-resourcequota.c index 0610711..92d285f 100644 --- a/source/ubl-settings-resourcequota.c +++ b/source/ubl-settings-resourcequota.c @@ -733,23 +733,36 @@ 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(); + // philos_free_string_array(&main_config.i_o_limit_read[index], index); + // philos_free_int_array(&main_config.i_o_limit_read_size[index], index); + // philos_free_string_array(&main_config.i_o_limit_write[index], index); + // philos_free_int_array(&main_config.i_o_limit_write_size[index], index); + // philos_free_string_array(&main_config.disk[index], index); + + yon_char_parsed_copy(&main_config.i_o_limit_read[index], edit_get_read_device()); + philos_array_int_copy(&main_config.i_o_limit_read_size[index], edit_get_read_device_size_pow()); + yon_char_parsed_copy(&main_config.disk[index], edit_get_select_device()); + + yon_char_parsed_copy(&main_config.i_o_limit_write[index], edit_get_write_device()); + philos_array_int_copy(&main_config.i_o_limit_write_size[index], edit_get_write_device_size_pow()); + yon_char_parsed_copy(&main_config.disk[index], edit_get_select_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(); + + char* str_io_read = format_io_limit_in_tree_view(main_config.disk, 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, 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,main_config.i_o_limit_read[index], - 7,main_config.i_o_limit_write[index],-1*/); + 5,main_config.cpu_limit[index], + 6,str_io_read, + 7,str_io_write,-1); return 1; } else { @@ -892,11 +905,17 @@ 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_n3(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_n3(main_config.i_o_limit_write, &main_config.size_tree_view,index); + main_config.size_tree_view++; + main_config.i_o_limit_write = yon_char_parsed_shrink_n3(main_config.disk, &main_config.size_tree_view,index); + main_config.size_tree_view++; + + main_config.i_o_limit_read_size = remove_element_int_array_n3(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_n3(main_config.i_o_limit_write_size, &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++; main_config.quota_volume_size = remove_element_int_array(main_config.quota_volume_size, &main_config.size_tree_view,index); @@ -908,10 +927,7 @@ 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_fill_tree_view_after_remove(); gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->treeViewMain), model); free(str_iter); @@ -992,14 +1008,6 @@ char* save_format_value(int index) { } value = add_io_str_format_ubconfig(value, "IOReadBandwidthMax", main_config.i_o_limit_read, main_config.disk, index); value = add_io_str_format_ubconfig(value, "IOWriteBandwidthMax", main_config.i_o_limit_write, main_config.disk, index); - //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; } char* add_io_str_format_ubconfig(char* cmd_io, char* key, char*** i_o_limit, char*** disk, int index) { @@ -1113,14 +1121,16 @@ void main_fill_tree_view_after_remove() { for (int index= 0; index < main_config.size_tree_view; index++) { GtkTreeIter iter; gtk_list_store_append(main_config.list,&iter); + char* str_io_read = format_io_limit_in_tree_view(main_config.disk, 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, 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,main_config.i_o_limit_read[index], - 7,main_config.i_o_limit_write[index],-1*/); + 5,main_config.cpu_limit[index], + 6,str_io_read, + 7,str_io_write,-1); } } @@ -1236,8 +1246,8 @@ 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_system_cfg(); + load_global_cfg(); + load_system_cfg(); gtk_main(); } diff --git a/source/ubl-utils.c b/source/ubl-utils.c index 9064cf9..f6c6ee7 100644 --- a/source/ubl-utils.c +++ b/source/ubl-utils.c @@ -756,6 +756,25 @@ char **yon_char_parsed_shrink(char **char_string, int *size, int item_to_delete) return new_char_parsed; } +char*** yon_char_parsed_shrink_n3(char ***char_string, int *size, int item_to_delete){ + char ***new_char_parsed=NULL; + new_char_parsed=malloc(sizeof(char**)*((*size)-1)); + int flag = 0; + for (int i=0;i < (*size);i++){ + if (i==item_to_delete) { + flag = 1; + } + if (flag == 0) { + yon_char_parsed_copy(&char_string[i], &new_char_parsed[i]); + } + else if (flag == 1 && i!=item_to_delete) { + yon_char_parsed_copy(&char_string[i], &new_char_parsed[i-1]); + } + } + (*size)=(*size)-1; + return new_char_parsed; +} + /**[EN] * * Checks if [parameters] string array of length [size] @@ -1162,6 +1181,25 @@ int* remove_element_int_array(int* array, int* size, int item_to_delete) { (*size)=(*size)-1; return new_int_parsed; } + +int** remove_element_int_array_n3(int** array, int* size, int item_to_delete) { + int **new_int_parsed=NULL; + new_int_parsed=malloc(sizeof(int*)*((*size)-1)); + int flag = 0; + for (int i=0;i < (*size);i++){ + if (i==item_to_delete) { + flag = 1; + } + if (flag == 0) { + philos_array_int_copy(&array[i],&new_int_parsed[i]); + } + else if (flag == 1 && i!=item_to_delete) { + philos_array_int_copy(&array[i],&new_int_parsed[i-1]); + } + } + (*size)=(*size)-1; + return new_int_parsed; +} // Gtk functions @@ -1271,7 +1309,6 @@ int yon_gtk_combo_box_text_find(GtkWidget *combo_box, char *text_to_find){ for (int i=0;strcmp(str,"")!=0;i++){ gtk_combo_box_set_active(GTK_COMBO_BOX(combo_box),i); str=gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(combo_box)); - puts(str); if (!str) return -1; if (strstr(str,text_to_find)) return i; } diff --git a/source/ubl-utils.h b/source/ubl-utils.h index 95573fd..8fa037e 100644 --- a/source/ubl-utils.h +++ b/source/ubl-utils.h @@ -162,6 +162,8 @@ void philos_array_string_remove_char(char*** array, char* str_remove, int size) char **yon_char_parsed_shrink(char **char_string, int *size, int item_to_delete); +char*** yon_char_parsed_shrink_n3(char ***char_string, int *size, int item_to_delete); + int yon_char_parsed_check_exist(char **parameters, int size, char *param); int yon_char_find_count(char *source, char *find); @@ -212,6 +214,8 @@ int yon_launch(thread_output *thread); int* philos_int_append(int* array, int* size, int value); int* remove_element_int_array(int* array, int* size, int item_to_delete); + +int** remove_element_int_array_n3(int** array, int* size, int item_to_delete); // Gtk functions #ifdef __GTK_H__ diff --git a/source/view_edit.c b/source/view_edit.c index 3f841b0..c046487 100644 --- a/source/view_edit.c +++ b/source/view_edit.c @@ -129,24 +129,6 @@ void edit_init_windows() { edit_generate_cmd(); } -char* edit_get_select_device() { - char* text = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(edit_widgets->cbtEditDevice)); - if (text != NULL) { - return text; - } - else { - char* str = (char*)malloc(sizeof(char*)*2); - str[0] = '-'; - str[1] = '\0'; - return str; - } -} -int edit_get_read_device_size() { - return gtk_combo_box_get_active(GTK_COMBO_BOX(edit_widgets->cbtEditRead)); -} -int edit_get_write_device_size() { - return gtk_combo_box_get_active(GTK_COMBO_BOX(edit_widgets->cbtEditWrite)); -} int edit_get_soft_size() { return gtk_combo_box_get_active(GTK_COMBO_BOX(edit_widgets->cmSevereRestrictionEdit)); } @@ -160,13 +142,20 @@ int edit_get_limit_swap_size() { return gtk_combo_box_get_active(GTK_COMBO_BOX(edit_widgets->cmbPaddingFLEdit)); } -char* edit_get_read_device() { - return philos_get_size_bite(edit_widgets->chbEditRead, edit_widgets->spinEditRead, - edit_widgets->cbtEditRead); +char*** edit_get_read_device() { + return &obj_edit_config.i_o_limit_read; +} +int** edit_get_read_device_size_pow() { + return &obj_edit_config.i_o_limit_read_size; +} +char*** edit_get_write_device() { + return &obj_edit_config.i_o_limit_write; +} +int** edit_get_write_device_size_pow() { + return &obj_edit_config.i_o_limit_write_size; } -char* edit_get_write_device() { - return philos_get_size_bite(edit_widgets->chbEditWrite, edit_widgets->spinEditWrite, - edit_widgets->cbtEditWrite); +char*** edit_get_select_device() { + return &obj_edit_config.disk; } char* edit_get_soft() { return philos_get_size_bite(edit_widgets->chkSoftRestrictionEdit, edit_widgets->spiSevereRestrictionEdit, diff --git a/source/view_edit.h b/source/view_edit.h index 6aa9f10..3a9e066 100644 --- a/source/view_edit.h +++ b/source/view_edit.h @@ -68,9 +68,9 @@ void edit_destroy(GtkWidget *self); void edit_init_windows(); void wrapper_edit_init_windows_size_memory(GtkWidget *spin); void edit_set_active_widgets(GtkWidget *check, GtkWidget *spin, GtkWidget *combo, int flag_cpu, char* cmd); -char* edit_get_select_device(); -char* edit_get_read_device(); -char* edit_get_write_device(); +char*** edit_get_select_device(); +char*** edit_get_read_device(); +char*** edit_get_write_device(); char* edit_get_soft(); char* edit_get_hard(); char* edit_get_limit_cpu(); @@ -85,9 +85,9 @@ void edit_set_hard(char* str_value, int pow_mem); void edit_set_limit_cpu(char* str_value, int pow_mem); void edit_set_limit_swap(char* str_value, int pow_mem); void edit_temp_set(char* str_value, int pow_mem, GtkWidget* cheek, GtkWidget* spin, GtkWidget* combo_box_text); +int** edit_get_read_device_size_pow(); +int** edit_get_write_device_size_pow(); -int edit_get_read_device_size(); -int edit_get_write_device_size(); int edit_get_soft_size(); int edit_get_hard_size(); int edit_get_limit_cpu_size(); -- 2.35.1 From 62f9e32924ef375874c5dad106a829a8d48c5dca Mon Sep 17 00:00:00 2001 From: Igor Belitskiy Date: Fri, 16 Jun 2023 14:18:35 +0600 Subject: [PATCH 31/91] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB=20=D0=B1=D0=B0=D0=B3=20=D1=81=20=D0=BF=D1=83=D1=81?= =?UTF-8?q?=D1=82=D1=8B=D0=BC=20=D0=B7=D0=BD=D0=B0=D1=87=D0=B5=D0=BD=D0=B8?= =?UTF-8?q?=D0=B5=D0=BC=20=D0=B2=20=D1=80=D0=B5=D0=B4=D0=B0=D0=BA=D1=82?= =?UTF-8?q?=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D0=B5=20=D0=B8=20?= =?UTF-8?q?=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5=20?= =?UTF-8?q?=D0=BA=D0=B2=D0=BE=D1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/ubl-settings-resourcequota.c | 25 +++++++--- source/view_add.c | 75 ++++++++++++++++++----------- source/view_add.h | 10 ++-- source/view_edit.c | 25 ++++++++++ 4 files changed, 93 insertions(+), 42 deletions(-) diff --git a/source/ubl-settings-resourcequota.c b/source/ubl-settings-resourcequota.c index 92d285f..de1c735 100644 --- a/source/ubl-settings-resourcequota.c +++ b/source/ubl-settings-resourcequota.c @@ -631,14 +631,20 @@ 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.i_o_limit_read = yon_remalloc(main_config.i_o_limit_read, (main_config.size_tree_view + 1) * sizeof(char**)); + main_config.i_o_limit_read_size = yon_remalloc(main_config.i_o_limit_read_size, (main_config.size_tree_view + 1) * sizeof(int*)); + main_config.disk = yon_remalloc(main_config.disk, (main_config.size_tree_view + 1) * sizeof(char**)); + yon_char_parsed_copy(&main_config.i_o_limit_read[main_config.size_tree_view], add_get_read_device()); + philos_array_int_copy(&main_config.i_o_limit_read_size[main_config.size_tree_view], add_get_read_device_size_pow()); + yon_char_parsed_copy(&main_config.disk[main_config.size_tree_view], add_get_select_device()); + + main_config.i_o_limit_write = yon_remalloc(main_config.i_o_limit_write, (main_config.size_tree_view + 1) * sizeof(char**)); + main_config.i_o_limit_write_size = yon_remalloc(main_config.i_o_limit_write_size, (main_config.size_tree_view + 1) * sizeof(int*)); + main_config.disk = yon_remalloc(main_config.disk, (main_config.size_tree_view + 1) * sizeof(char**)); + yon_char_parsed_copy(&main_config.i_o_limit_write[main_config.size_tree_view], add_get_write_device()); + philos_array_int_copy(&main_config.i_o_limit_write_size[main_config.size_tree_view], add_get_write_device_size_pow()); + yon_char_parsed_copy(&main_config.disk[main_config.size_tree_view], add_get_select_device()); 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--; @@ -696,6 +702,9 @@ char* format_io_limit_in_tree_view(config_str* disk, config_str* i_o_limit, int* if (index_to_n2!=0) { str = yon_char_unite(str, ", ", disk[index][index_to_n2], " ", i_o_limit[index][index_to_n2], NULL); } + else if (strstr(disk[index][index_to_n2], "-")){ + str = yon_char_unite(str, "-", NULL); + } else { str = yon_char_unite(str, disk[index][index_to_n2], " ", i_o_limit[index][index_to_n2], NULL); } diff --git a/source/view_add.c b/source/view_add.c index 0e1e5b4..b8254d3 100644 --- a/source/view_add.c +++ b/source/view_add.c @@ -145,28 +145,29 @@ void add_disk_all(){ if (index_find == 0) { yon_char_parsed_append(obj_add_config.disk,&obj_add_config.size, disk); obj_add_config.size--; - philos_int_append(obj_add_config.i_o_limit_read_size,&obj_add_config.size,add_get_read_device_size()); + philos_int_append(obj_add_config.i_o_limit_read_size,&obj_add_config.size,gtk_combo_box_get_active(GTK_COMBO_BOX(add_widgets->cbtAddRead))); obj_add_config.size--; - philos_int_append(obj_add_config.i_o_limit_write_size,&obj_add_config.size,add_get_write_device_size()); + philos_int_append(obj_add_config.i_o_limit_write_size,&obj_add_config.size,gtk_combo_box_get_active(GTK_COMBO_BOX(add_widgets->cbtAddWrite))); obj_add_config.size--; - yon_char_parsed_append(obj_add_config.i_o_limit_read,&obj_add_config.size,add_get_read_device()); + yon_char_parsed_append(obj_add_config.i_o_limit_read,&obj_add_config.size,philos_get_size_bite(add_widgets->chbAddRead, add_widgets->spinAddRead,add_widgets->cbtAddRead)); obj_add_config.size--; - yon_char_parsed_append(obj_add_config.i_o_limit_write,&obj_add_config.size,add_get_write_device()); + yon_char_parsed_append(obj_add_config.i_o_limit_write,&obj_add_config.size,philos_get_size_bite(add_widgets->chbAddWrite, add_widgets->spinAddWrite,add_widgets->cbtAddWrite)); } } else { yon_char_parsed_append(obj_add_config.disk,&obj_add_config.size, disk); obj_add_config.size--; - philos_int_append(obj_add_config.i_o_limit_read_size,&obj_add_config.size,add_get_read_device_size()); + philos_int_append(obj_add_config.i_o_limit_read_size,&obj_add_config.size,gtk_combo_box_get_active(GTK_COMBO_BOX(add_widgets->cbtAddRead))); obj_add_config.size--; - philos_int_append(obj_add_config.i_o_limit_write_size,&obj_add_config.size,add_get_write_device_size()); + philos_int_append(obj_add_config.i_o_limit_write_size,&obj_add_config.size,gtk_combo_box_get_active(GTK_COMBO_BOX(add_widgets->cbtAddWrite))); obj_add_config.size--; - yon_char_parsed_append(obj_add_config.i_o_limit_read,&obj_add_config.size,add_get_read_device()); + yon_char_parsed_append(obj_add_config.i_o_limit_read,&obj_add_config.size,philos_get_size_bite(add_widgets->chbAddRead, add_widgets->spinAddRead, add_widgets->cbtAddRead)); obj_add_config.size--; - yon_char_parsed_append(obj_add_config.i_o_limit_write,&obj_add_config.size,add_get_write_device()); + yon_char_parsed_append(obj_add_config.i_o_limit_write,&obj_add_config.size,philos_get_size_bite(add_widgets->chbAddWrite, add_widgets->spinAddWrite,add_widgets->cbtAddWrite)); } } + void event_check_io_device() { add_del_disk(); add_disk_all(); @@ -253,24 +254,47 @@ char* add_get_select_device_to_level_2() { } } -char* add_get_select_device() { - char* text = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(add_widgets->cbtAddDevice)); - if (text != NULL) { - return text; +char*** add_get_read_device() { + int index = 0; + if (!obj_add_config.i_o_limit_read) { + obj_add_config.i_o_limit_read = yon_char_parsed_append(obj_add_config.i_o_limit_read,&index, "-"); + obj_add_config.i_o_limit_read = yon_char_parsed_append(obj_add_config.i_o_limit_read,&index, NULL); } - else { - char* str = (char*)malloc(sizeof(char*)*2); - str[0] = '-'; - str[1] = '\0'; - return str; + return &obj_add_config.i_o_limit_read; +} +int** add_get_read_device_size_pow() { + int index = 0; + if (!obj_add_config.i_o_limit_read_size) { + obj_add_config.i_o_limit_read_size = philos_int_append(obj_add_config.i_o_limit_read_size,&index, -1); + obj_add_config.i_o_limit_read_size = philos_int_append(obj_add_config.i_o_limit_read_size,&index, -2); } + return &obj_add_config.i_o_limit_read_size; } -int add_get_read_device_size() { - return gtk_combo_box_get_active(GTK_COMBO_BOX(add_widgets->cbtAddRead)); +char*** add_get_write_device() { + int index = 0; + if (!obj_add_config.i_o_limit_write) { + obj_add_config.i_o_limit_write = yon_char_parsed_append(obj_add_config.i_o_limit_write, &index, "-"); + obj_add_config.i_o_limit_write = yon_char_parsed_append(obj_add_config.i_o_limit_write, &index, NULL); + } + return &obj_add_config.i_o_limit_write; +} +int** add_get_write_device_size_pow() { + int index = 0; + if (!obj_add_config.i_o_limit_write_size) { + obj_add_config.i_o_limit_write_size = philos_int_append(obj_add_config.i_o_limit_write_size,&index, -1); + obj_add_config.i_o_limit_write_size = philos_int_append(obj_add_config.i_o_limit_write_size,&index, -2); + } + return &obj_add_config.i_o_limit_write_size; } -int add_get_write_device_size() { - return gtk_combo_box_get_active(GTK_COMBO_BOX(add_widgets->cbtAddWrite)); +char*** add_get_select_device() { + int index = 0; + if (!obj_add_config.disk) { + obj_add_config.disk = yon_char_parsed_append(obj_add_config.disk,&index, "-"); + obj_add_config.disk = yon_char_parsed_append(obj_add_config.disk,&index, NULL); + } + return &obj_add_config.disk; } + int add_get_soft_size() { return gtk_combo_box_get_active(GTK_COMBO_BOX(add_widgets->cmSevereRestrictionAdd)); } @@ -286,14 +310,7 @@ int add_get_limit_swap_size() { int add_get_quota_object_size() { return gtk_combo_box_get_active(GTK_COMBO_BOX(add_widgets->cbxAddQuotaObj)); } -char* add_get_read_device() { - return philos_get_size_bite(add_widgets->chbAddRead, add_widgets->spinAddRead, - add_widgets->cbtAddRead); -} -char* add_get_write_device() { - return philos_get_size_bite(add_widgets->chbAddWrite, add_widgets->spinAddWrite, - add_widgets->cbtAddWrite); -} + char* add_get_soft() { return philos_get_size_bite(add_widgets->chkSoftRestrictionAdd, add_widgets->spiSevereRestrictionAdd, add_widgets->cmSevereRestrictionAdd); diff --git a/source/view_add.h b/source/view_add.h index 3b9a9a7..3a08e3c 100644 --- a/source/view_add.h +++ b/source/view_add.h @@ -77,17 +77,17 @@ void add_destroy(GtkWidget *self); void add_set_active_widgets(GtkWidget *check, GtkWidget *spin, GtkWidget *combo, int flag_cpu, char* cmd); void add_init_windows(); void add_update_combo_box(); -char* add_get_select_device(); -char* add_get_read_device(); -char* add_get_write_device(); +char*** add_get_select_device(); +char*** add_get_read_device(); +char*** add_get_write_device(); char* add_get_soft(); char* add_get_hard(); char* add_get_limit_cpu(); char* add_get_limit_swap(); char* add_get_quota_object(); -int add_get_read_device_size(); -int add_get_write_device_size(); +int** add_get_write_device_size_pow(); +int** add_get_read_device_size_pow(); int add_get_soft_size(); int add_get_hard_size(); int add_get_limit_cpu_size(); diff --git a/source/view_edit.c b/source/view_edit.c index c046487..958912b 100644 --- a/source/view_edit.c +++ b/source/view_edit.c @@ -143,18 +143,43 @@ int edit_get_limit_swap_size() { } char*** edit_get_read_device() { + int index = 0; + if (!obj_edit_config.i_o_limit_read) { + obj_edit_config.i_o_limit_read = yon_char_parsed_append(obj_edit_config.i_o_limit_read,&index, "-"); + obj_edit_config.i_o_limit_read = yon_char_parsed_append(obj_edit_config.i_o_limit_read,&index, NULL); + } return &obj_edit_config.i_o_limit_read; } int** edit_get_read_device_size_pow() { + int index = 0; + if (!obj_edit_config.i_o_limit_read_size) { + obj_edit_config.i_o_limit_read_size = philos_int_append(obj_edit_config.i_o_limit_read_size,&index, -1); + obj_edit_config.i_o_limit_read_size = philos_int_append(obj_edit_config.i_o_limit_read_size,&index, -2); + } return &obj_edit_config.i_o_limit_read_size; } char*** edit_get_write_device() { + int index = 0; + if (!obj_edit_config.i_o_limit_write) { + obj_edit_config.i_o_limit_write = yon_char_parsed_append(obj_edit_config.i_o_limit_write, &index, "-"); + obj_edit_config.i_o_limit_write = yon_char_parsed_append(obj_edit_config.i_o_limit_write, &index, NULL); + } return &obj_edit_config.i_o_limit_write; } int** edit_get_write_device_size_pow() { + int index = 0; + if (!obj_edit_config.i_o_limit_write_size) { + obj_edit_config.i_o_limit_write_size = philos_int_append(obj_edit_config.i_o_limit_write_size,&index, -1); + obj_edit_config.i_o_limit_write_size = philos_int_append(obj_edit_config.i_o_limit_write_size,&index, -2); + } return &obj_edit_config.i_o_limit_write_size; } char*** edit_get_select_device() { + int index = 0; + if (!obj_edit_config.disk) { + obj_edit_config.disk = yon_char_parsed_append(obj_edit_config.disk,&index, "-"); + obj_edit_config.disk = yon_char_parsed_append(obj_edit_config.disk,&index, NULL); + } return &obj_edit_config.disk; } char* edit_get_soft() { -- 2.35.1 From 6c61f37b85ca70e04e9bc59f7f948167dd45aa7a Mon Sep 17 00:00:00 2001 From: Igor Belitskiy Date: Fri, 16 Jun 2023 17:55:42 +0600 Subject: [PATCH 32/91] =?UTF-8?q?=D0=A7=D0=B0=D1=81=D1=82=D0=B8=D1=87?= =?UTF-8?q?=D0=BD=D0=BE=20=D1=81=D0=B4=D0=B5=D0=BB=D0=B0=D0=BD=D0=BE=20?= =?UTF-8?q?=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5=20?= =?UTF-8?q?=D0=BC=D0=B0=D1=81=D1=81=D0=B8=D0=B2=D0=B0=20=D0=B4=D0=B8=D1=81?= =?UTF-8?q?=D0=BA=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/ubl-settings-resourcequota.c | 6 +- source/ubl-utils.c | 12 +-- source/view_add.c | 126 +++++++++++++++------------- 3 files changed, 75 insertions(+), 69 deletions(-) diff --git a/source/ubl-settings-resourcequota.c b/source/ubl-settings-resourcequota.c index de1c735..76ce027 100644 --- a/source/ubl-settings-resourcequota.c +++ b/source/ubl-settings-resourcequota.c @@ -996,17 +996,17 @@ char* save_format_value(int index) { split_simvol[0] = 0; split_simvol[1] = 0; if (strstr(main_config.soft_raw_limit[index], "-") == NULL) { - value = yon_char_unite(philos_format_cfg_str_size_memory("MemoryHigh", main_config.soft_raw_limit[index],main_config.soft_raw_limit_size[index]),NULL); + value = yon_char_unite(philos_format_cfg_str_size_memory("MemoryHigh=", main_config.soft_raw_limit[index],main_config.soft_raw_limit_size[index]),NULL); split_simvol[0] = ','; split_simvol[1] = '\0'; } if (strstr(main_config.hard_raw_limit[index], "-") == NULL) { - value = yon_char_unite(value ,split_simvol, philos_format_cfg_str_size_memory("MemoryMax", main_config.hard_raw_limit[index],main_config.hard_raw_limit_size[index]), NULL); + value = yon_char_unite(value ,split_simvol, philos_format_cfg_str_size_memory("MemoryMax=", main_config.hard_raw_limit[index],main_config.hard_raw_limit_size[index]), NULL); split_simvol[0] = ','; split_simvol[1] = '\0'; } if (strstr(main_config.swap[index], "-") == NULL) { - value = yon_char_unite(value ,split_simvol, philos_format_cfg_str_size_memory("MemorySwapMax", main_config.swap[index],main_config.swap_size[index]), NULL); + value = yon_char_unite(value ,split_simvol, philos_format_cfg_str_size_memory("MemorySwapMax=", main_config.swap[index],main_config.swap_size[index]), NULL); split_simvol[0] = ','; split_simvol[1] = '\0'; } diff --git a/source/ubl-utils.c b/source/ubl-utils.c index f6c6ee7..df891cb 100644 --- a/source/ubl-utils.c +++ b/source/ubl-utils.c @@ -674,22 +674,22 @@ char* philos_format_cfg_str_size_memory(char* str_key, char* str_source_value, i char* str_value = yon_char_new(str_source_value); str_value = yon_char_divide_search(str_value, " ", -1); if (pow_size_memory==0) { - return yon_char_unite(str_key, "=" , str_value, "K" ,NULL); + return yon_char_unite(str_key, str_value, "K" ,NULL); } else if (pow_size_memory==1) { - return yon_char_unite(str_key, "=" , str_value, "M" ,NULL); + return yon_char_unite(str_key, str_value, "M" ,NULL); } else if (pow_size_memory==2){ - return yon_char_unite(str_key, "=" , str_value, "G" ,NULL); + return yon_char_unite(str_key, str_value, "G" ,NULL); } else if (pow_size_memory== 3) { - return yon_char_unite(str_key, "=" , str_value, "T" ,NULL); + return yon_char_unite(str_key, str_value, "T" ,NULL); } else if (pow_size_memory== -1) { - return yon_char_unite(str_key, "=" , str_value, "%" ,NULL); + return yon_char_unite(str_key, str_value, "%" ,NULL); } else { - return yon_char_unite(str_key, "=" , str_value, "-" ,NULL); + return yon_char_unite(str_key, str_value, "-" ,NULL); } } diff --git a/source/view_add.c b/source/view_add.c index b8254d3..1163a8a 100644 --- a/source/view_add.c +++ b/source/view_add.c @@ -77,8 +77,6 @@ void add_init_windows() { philos_set_active_widgets(add_widgets->chkSevereRestrictionAdd, add_widgets->spinSevereRestrictionAdd, add_widgets->cmbSevereRestrictionAdd,0 , CMD_RAW); philos_set_active_widgets(add_widgets->chkPaddingFLAdd, add_widgets->spinPaddingFLAdd, add_widgets->cmbPaddingFLAdd,0 , CMD_SWAP); philos_set_active_widgets(add_widgets->chkCPULimitAdd, add_widgets->spinCPULimitAdd, add_widgets->lblCPULimitAdd,1 , CMD_CPU); - philos_set_active_widgets_device_io(add_widgets->cbtAddDevice, add_widgets->chbAddWrite, add_widgets->spinAddWrite, add_widgets->cbtAddWrite); - philos_set_active_widgets_device_io(add_widgets->cbtAddDevice, add_widgets->chbAddRead, add_widgets->spinAddRead, add_widgets->cbtAddRead); add_generate_cmd(); } else { @@ -89,7 +87,7 @@ void add_init_windows() { } int check_activ_disk() { - char* disk = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(&add_widgets->cbtAddDevice)); + char* disk = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(add_widgets->cbtAddDevice)); disk = yon_char_divide_search(disk," ", -1); int bool_read = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(add_widgets->chbAddRead)); int bool_write = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(add_widgets->chbAddWrite)); @@ -101,12 +99,13 @@ int check_activ_disk() { void add_del_disk() { char* disk = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(add_widgets->cbtAddDevice)); + disk = yon_char_divide_search(disk, " ", -1); int bool_read = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(add_widgets->chbAddRead)); int bool_write = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(add_widgets->chbAddWrite)); if (check_activ_disk() == 0) { return; } - if (obj_add_config.disk != NULL && obj_add_config.size != 0) { + if (obj_add_config.disk && obj_add_config.size) { int index_find = 0; for (int index = 0; index < obj_add_config.size; index++) { char* disk_cfg = yon_char_new(obj_add_config.disk[index]); @@ -116,24 +115,52 @@ void add_del_disk() { } } if ((bool_read == 0 && bool_write == 0 && index_find != 0)) { - yon_char_parsed_shrink(obj_add_config.disk,&obj_add_config.size, index_find); + obj_add_config.disk = yon_char_parsed_shrink(obj_add_config.disk,&obj_add_config.size, index_find); obj_add_config.size++; - remove_element_int_array(obj_add_config.i_o_limit_read_size,&obj_add_config.size, index_find); + obj_add_config.i_o_limit_read_size = remove_element_int_array(obj_add_config.i_o_limit_read_size,&obj_add_config.size, index_find); obj_add_config.size++; - remove_element_int_array(obj_add_config.i_o_limit_write_size,&obj_add_config.size, index_find); + obj_add_config.i_o_limit_write_size = remove_element_int_array(obj_add_config.i_o_limit_write_size,&obj_add_config.size, index_find); obj_add_config.size++; - yon_char_parsed_shrink(obj_add_config.i_o_limit_read,&obj_add_config.size, index_find); + obj_add_config.i_o_limit_read = yon_char_parsed_shrink(obj_add_config.i_o_limit_read,&obj_add_config.size, index_find); obj_add_config.size++; - yon_char_parsed_shrink(obj_add_config.i_o_limit_write,&obj_add_config.size, index_find); + obj_add_config.i_o_limit_write = yon_char_parsed_shrink(obj_add_config.i_o_limit_write,&obj_add_config.size, index_find); } } } + +char* pard_array_edit_cmd(char* cmd, char* key, char** array_io, int* array_io_pow_size) { + char* split_simvol = g_malloc0(sizeof(char)*2); + if (obj_add_config.disk && obj_add_config.size && array_io && array_io_pow_size) { + int index_find = 0; + for (int index = 0; index < obj_add_config.size; index++) { + if (index==0) { + if (strlen(cmd)>1) { + cmd = yon_char_unite(cmd, ",", key, NULL); + } + else { + cmd = yon_char_unite(cmd, key, NULL); + } + + } + if (array_io_pow_size[index] != -1) { + cmd = yon_char_unite(cmd, split_simvol, obj_add_config.disk[index], philos_format_cfg_str_size_memory(" ", array_io[index], array_io_pow_size[index]), NULL); + split_simvol[0] = ','; + split_simvol[1] = '\0'; + } + + } + } + free(split_simvol); + return cmd; +} + void add_disk_all(){ char* disk = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(add_widgets->cbtAddDevice)); - if (check_activ_disk() == 0) { - return; - } - if (obj_add_config.disk != NULL && obj_add_config.size !=0) { + disk = yon_char_divide_search(disk, " ", -1); + int disk_id = gtk_combo_box_get_active(GTK_COMBO_BOX(add_widgets->cbtAddDevice)); + int bool_read = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(add_widgets->chbAddRead)); + int bool_write = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(add_widgets->chbAddWrite)); + if (disk_id >= 0 && obj_add_config.size !=0) { int index_find = 0; for (int index = 0; index < obj_add_config.size; index++) { char* disk_cfg = yon_char_new(obj_add_config.disk[index]); @@ -143,29 +170,32 @@ void add_disk_all(){ } } if (index_find == 0) { - yon_char_parsed_append(obj_add_config.disk,&obj_add_config.size, disk); + obj_add_config.disk = yon_char_parsed_append(obj_add_config.disk,&obj_add_config.size, disk); obj_add_config.size--; - philos_int_append(obj_add_config.i_o_limit_read_size,&obj_add_config.size,gtk_combo_box_get_active(GTK_COMBO_BOX(add_widgets->cbtAddRead))); + obj_add_config.i_o_limit_read_size = philos_int_append(obj_add_config.i_o_limit_read_size,&obj_add_config.size,(int)gtk_combo_box_get_active(GTK_COMBO_BOX(add_widgets->cbtAddRead))); obj_add_config.size--; - philos_int_append(obj_add_config.i_o_limit_write_size,&obj_add_config.size,gtk_combo_box_get_active(GTK_COMBO_BOX(add_widgets->cbtAddWrite))); + obj_add_config.i_o_limit_write_size = philos_int_append(obj_add_config.i_o_limit_write_size,&obj_add_config.size,(int)gtk_combo_box_get_active(GTK_COMBO_BOX(add_widgets->cbtAddWrite))); obj_add_config.size--; - yon_char_parsed_append(obj_add_config.i_o_limit_read,&obj_add_config.size,philos_get_size_bite(add_widgets->chbAddRead, add_widgets->spinAddRead,add_widgets->cbtAddRead)); + obj_add_config.i_o_limit_read = yon_char_parsed_append(obj_add_config.i_o_limit_read,&obj_add_config.size,gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(add_widgets->cbtAddRead))); obj_add_config.size--; - yon_char_parsed_append(obj_add_config.i_o_limit_write,&obj_add_config.size,philos_get_size_bite(add_widgets->chbAddWrite, add_widgets->spinAddWrite,add_widgets->cbtAddWrite)); + obj_add_config.i_o_limit_write = yon_char_parsed_append(obj_add_config.i_o_limit_write,&obj_add_config.size,gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(add_widgets->cbtAddWrite))); } } else { - yon_char_parsed_append(obj_add_config.disk,&obj_add_config.size, disk); - obj_add_config.size--; - philos_int_append(obj_add_config.i_o_limit_read_size,&obj_add_config.size,gtk_combo_box_get_active(GTK_COMBO_BOX(add_widgets->cbtAddRead))); - obj_add_config.size--; - philos_int_append(obj_add_config.i_o_limit_write_size,&obj_add_config.size,gtk_combo_box_get_active(GTK_COMBO_BOX(add_widgets->cbtAddWrite))); - obj_add_config.size--; - yon_char_parsed_append(obj_add_config.i_o_limit_read,&obj_add_config.size,philos_get_size_bite(add_widgets->chbAddRead, add_widgets->spinAddRead, add_widgets->cbtAddRead)); - obj_add_config.size--; - yon_char_parsed_append(obj_add_config.i_o_limit_write,&obj_add_config.size,philos_get_size_bite(add_widgets->chbAddWrite, add_widgets->spinAddWrite,add_widgets->cbtAddWrite)); + if (bool_read == 1 || bool_write == 1) { + obj_add_config.disk = yon_char_parsed_append(obj_add_config.disk,&obj_add_config.size, disk); + obj_add_config.size--; + obj_add_config.i_o_limit_read_size = philos_int_append(obj_add_config.i_o_limit_read_size,&obj_add_config.size,(int)gtk_combo_box_get_active(GTK_COMBO_BOX(add_widgets->cbtAddRead))); + obj_add_config.size--; + obj_add_config.i_o_limit_read = yon_char_parsed_append(obj_add_config.i_o_limit_read,&obj_add_config.size,gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(add_widgets->cbtAddRead))); + obj_add_config.size--; + obj_add_config.disk = yon_char_parsed_append(obj_add_config.disk,&obj_add_config.size, disk); + obj_add_config.size--; + obj_add_config.i_o_limit_write_size = philos_int_append(obj_add_config.i_o_limit_write_size,&obj_add_config.size,(int)gtk_combo_box_get_active(GTK_COMBO_BOX(add_widgets->cbtAddWrite))); + obj_add_config.size--; + obj_add_config.i_o_limit_write = yon_char_parsed_append(obj_add_config.i_o_limit_write,&obj_add_config.size,gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(add_widgets->cbtAddWrite))); + } } - } void event_check_io_device() { @@ -190,15 +220,15 @@ void add_event(add_window *widgets) { g_signal_connect(G_OBJECT(widgets->spinSevereRestrictionAdd),"changed",G_CALLBACK(add_init_windows), NULL); g_signal_connect(G_OBJECT(widgets->spinPaddingFLAdd),"changed",G_CALLBACK(add_init_windows), NULL); g_signal_connect(G_OBJECT(widgets->spinCPULimitAdd),"changed",G_CALLBACK(add_init_windows), NULL); - g_signal_connect(G_OBJECT(widgets->spinAddRead),"changed",G_CALLBACK(add_init_windows), NULL); - g_signal_connect(G_OBJECT(widgets->spinAddWrite),"changed",G_CALLBACK(add_init_windows), NULL); + g_signal_connect(G_OBJECT(widgets->spinAddRead),"changed",G_CALLBACK(event_check_io_device), NULL); + g_signal_connect(G_OBJECT(widgets->spinAddWrite),"changed",G_CALLBACK(event_check_io_device), NULL); g_signal_connect(G_OBJECT(widgets->cmSevereRestrictionAdd),"changed",G_CALLBACK(add_init_windows), NULL); g_signal_connect(G_OBJECT(widgets->cmbSevereRestrictionAdd),"changed",G_CALLBACK(add_init_windows), NULL); g_signal_connect(G_OBJECT(widgets->cmbPaddingFLAdd),"changed",G_CALLBACK(add_init_windows), NULL); - g_signal_connect(G_OBJECT(widgets->cbtAddRead),"changed",G_CALLBACK(add_init_windows), NULL); - g_signal_connect(G_OBJECT(widgets->cbtAddWrite),"changed",G_CALLBACK(add_init_windows), NULL); - g_signal_connect(G_OBJECT(widgets->cbtAddDevice),"changed",G_CALLBACK(add_init_windows), NULL); + g_signal_connect(G_OBJECT(widgets->cbtAddRead),"changed",G_CALLBACK(event_check_io_device), NULL); + g_signal_connect(G_OBJECT(widgets->cbtAddWrite),"changed",G_CALLBACK(event_check_io_device), NULL); + g_signal_connect(G_OBJECT(widgets->cbtAddDevice),"changed",G_CALLBACK(event_check_io_device), NULL); } @@ -405,33 +435,9 @@ void add_generate_cmd() { split_simvol[0] = ','; split_simvol[1] = '\0'; } - if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(add_widgets->chbAddRead))) { - int menu_id = gtk_combo_box_get_active(GTK_COMBO_BOX(add_widgets->cbtAddDevice)); - if (menu_id != -1) { - size_bite = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(add_widgets->spinAddRead)); - str_cmd = yon_char_unite(str_cmd, split_simvol, - "IOReadBandwidthMax=\"", - get_device_cfg()->name_disk[menu_id], - " ", - yon_char_from_int(size_bite), - philos_str_size_pow_byte(add_widgets->cbtAddRead),"\"", NULL); - } - split_simvol[0] = ','; - split_simvol[1] = '\0'; - - } - if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(add_widgets->chbAddWrite))) { - int menu_id = gtk_combo_box_get_active(GTK_COMBO_BOX(add_widgets->cbtAddDevice)); - if (menu_id != -1) { - size_bite = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(add_widgets->spinAddWrite)); - str_cmd = yon_char_unite(str_cmd, split_simvol, - "IOWriteBandwidthMax=\"", - get_device_cfg()->name_disk[menu_id], - " ", - yon_char_from_int(size_bite), - philos_str_size_pow_byte(add_widgets->cbtAddWrite),"\"", NULL); - } - } + str_cmd = pard_array_edit_cmd(str_cmd, "IOReadBandwidthMax=", obj_add_config.i_o_limit_read, obj_add_config.i_o_limit_read_size); + + str_cmd = pard_array_edit_cmd(str_cmd, "IOWriteBandwidthMax=", obj_add_config.i_o_limit_write, obj_add_config.i_o_limit_write_size); gtk_entry_set_text(GTK_ENTRY(add_widgets->entryAddCmd), str_cmd); free(split_simvol); } -- 2.35.1 From 126f61dd269813823b1a3cdb9f06962b8c91ae23 Mon Sep 17 00:00:00 2001 From: Igor Belitskiy Date: Mon, 19 Jun 2023 11:03:33 +0600 Subject: [PATCH 33/91] fix --- source/view_add.c | 43 ++++++++++++++++++++++++++++++------------- 1 file changed, 30 insertions(+), 13 deletions(-) diff --git a/source/view_add.c b/source/view_add.c index 1163a8a..489e698 100644 --- a/source/view_add.c +++ b/source/view_add.c @@ -49,7 +49,6 @@ add_window *add_setup_window(char* glade_path) { add_localization(add_widgets); add_config_init(); } - return add_widgets; } @@ -106,15 +105,18 @@ void add_del_disk() { return; } if (obj_add_config.disk && obj_add_config.size) { - int index_find = 0; + int index_find = -1; for (int index = 0; index < obj_add_config.size; index++) { char* disk_cfg = yon_char_new(obj_add_config.disk[index]); if (strstr(disk_cfg, disk) != NULL) { index_find = index; + printf("%d\n", index_find); + puts(disk_cfg); + puts(disk); break; } } - if ((bool_read == 0 && bool_write == 0 && index_find != 0)) { + if ((bool_read == 0 && bool_write == 0 && index_find != -1)) { obj_add_config.disk = yon_char_parsed_shrink(obj_add_config.disk,&obj_add_config.size, index_find); obj_add_config.size++; obj_add_config.i_o_limit_read_size = remove_element_int_array(obj_add_config.i_o_limit_read_size,&obj_add_config.size, index_find); @@ -147,7 +149,6 @@ char* pard_array_edit_cmd(char* cmd, char* key, char** array_io, int* array_io_p split_simvol[0] = ','; split_simvol[1] = '\0'; } - } } free(split_simvol); @@ -161,7 +162,7 @@ void add_disk_all(){ int bool_read = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(add_widgets->chbAddRead)); int bool_write = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(add_widgets->chbAddWrite)); if (disk_id >= 0 && obj_add_config.size !=0) { - int index_find = 0; + int index_find = -1; for (int index = 0; index < obj_add_config.size; index++) { char* disk_cfg = yon_char_new(obj_add_config.disk[index]); if (strstr(disk_cfg, disk) != NULL) { @@ -169,16 +170,26 @@ void add_disk_all(){ break; } } - if (index_find == 0) { + if (index_find == -1) { + // Добавление obj_add_config.disk = yon_char_parsed_append(obj_add_config.disk,&obj_add_config.size, disk); obj_add_config.size--; obj_add_config.i_o_limit_read_size = philos_int_append(obj_add_config.i_o_limit_read_size,&obj_add_config.size,(int)gtk_combo_box_get_active(GTK_COMBO_BOX(add_widgets->cbtAddRead))); obj_add_config.size--; obj_add_config.i_o_limit_write_size = philos_int_append(obj_add_config.i_o_limit_write_size,&obj_add_config.size,(int)gtk_combo_box_get_active(GTK_COMBO_BOX(add_widgets->cbtAddWrite))); obj_add_config.size--; - obj_add_config.i_o_limit_read = yon_char_parsed_append(obj_add_config.i_o_limit_read,&obj_add_config.size,gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(add_widgets->cbtAddRead))); + obj_add_config.i_o_limit_read = yon_char_parsed_append(obj_add_config.i_o_limit_read,&obj_add_config.size,yon_char_from_int(gtk_spin_button_get_digits(GTK_SPIN_BUTTON(add_widgets->spinAddRead)))); obj_add_config.size--; - obj_add_config.i_o_limit_write = yon_char_parsed_append(obj_add_config.i_o_limit_write,&obj_add_config.size,gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(add_widgets->cbtAddWrite))); + obj_add_config.i_o_limit_write = yon_char_parsed_append(obj_add_config.i_o_limit_write,&obj_add_config.size,yon_char_from_int(gtk_spin_button_get_digits(GTK_SPIN_BUTTON(add_widgets->spinAddWrite)))); + } + else { + // Редактирование + obj_add_config.disk[index_find] = yon_char_new(disk); + obj_add_config.i_o_limit_read_size[index_find] =(int)gtk_combo_box_get_active(GTK_COMBO_BOX(add_widgets->cbtAddRead)); + obj_add_config.i_o_limit_write_size[index_find] = (int)gtk_combo_box_get_active(GTK_COMBO_BOX(add_widgets->cbtAddWrite)); + obj_add_config.i_o_limit_read[index_find] = yon_char_from_int(gtk_spin_button_get_digits(GTK_SPIN_BUTTON(add_widgets->spinAddRead))); + obj_add_config.i_o_limit_write[index_find] = yon_char_from_int(gtk_spin_button_get_digits(GTK_SPIN_BUTTON(add_widgets->spinAddWrite))); + } } else { @@ -187,13 +198,13 @@ void add_disk_all(){ obj_add_config.size--; obj_add_config.i_o_limit_read_size = philos_int_append(obj_add_config.i_o_limit_read_size,&obj_add_config.size,(int)gtk_combo_box_get_active(GTK_COMBO_BOX(add_widgets->cbtAddRead))); obj_add_config.size--; - obj_add_config.i_o_limit_read = yon_char_parsed_append(obj_add_config.i_o_limit_read,&obj_add_config.size,gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(add_widgets->cbtAddRead))); + obj_add_config.i_o_limit_read = yon_char_parsed_append(obj_add_config.i_o_limit_read,&obj_add_config.size,yon_char_from_int(gtk_spin_button_get_digits(GTK_SPIN_BUTTON(add_widgets->spinAddRead)))); obj_add_config.size--; obj_add_config.disk = yon_char_parsed_append(obj_add_config.disk,&obj_add_config.size, disk); obj_add_config.size--; obj_add_config.i_o_limit_write_size = philos_int_append(obj_add_config.i_o_limit_write_size,&obj_add_config.size,(int)gtk_combo_box_get_active(GTK_COMBO_BOX(add_widgets->cbtAddWrite))); obj_add_config.size--; - obj_add_config.i_o_limit_write = yon_char_parsed_append(obj_add_config.i_o_limit_write,&obj_add_config.size,gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(add_widgets->cbtAddWrite))); + obj_add_config.i_o_limit_write = yon_char_parsed_append(obj_add_config.i_o_limit_write,&obj_add_config.size,yon_char_from_int(gtk_spin_button_get_digits(GTK_SPIN_BUTTON(add_widgets->spinAddWrite)))); } } } @@ -435,9 +446,15 @@ void add_generate_cmd() { split_simvol[0] = ','; split_simvol[1] = '\0'; } - str_cmd = pard_array_edit_cmd(str_cmd, "IOReadBandwidthMax=", obj_add_config.i_o_limit_read, obj_add_config.i_o_limit_read_size); - - str_cmd = pard_array_edit_cmd(str_cmd, "IOWriteBandwidthMax=", obj_add_config.i_o_limit_write, obj_add_config.i_o_limit_write_size); + if (gtk_combo_box_get_active(GTK_COMBO_BOX(add_widgets->cbtAddDevice))!=-1) { + if (obj_add_config.size!=0) { + str_cmd = pard_array_edit_cmd(str_cmd, "IOReadBandwidthMax=", obj_add_config.i_o_limit_read, obj_add_config.i_o_limit_read_size); + str_cmd = pard_array_edit_cmd(str_cmd, "IOWriteBandwidthMax=", obj_add_config.i_o_limit_write, obj_add_config.i_o_limit_write_size); + } + + } + + gtk_entry_set_text(GTK_ENTRY(add_widgets->entryAddCmd), str_cmd); free(split_simvol); } -- 2.35.1 From b4c4ce63c7cac16f54f482ebfdcfcfd1a0778bcc Mon Sep 17 00:00:00 2001 From: Igor Belitskiy Date: Tue, 20 Jun 2023 09:48:06 +0600 Subject: [PATCH 34/91] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=20=D0=B1=D0=B0=D0=B3=20=D1=81=20spinButton?= =?UTF-8?q?=20=D0=B2=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D0=B5=20=D1=83=D1=81=D1=82=D1=80=D0=BE=D0=B9=D1=81=D1=82?= =?UTF-8?q?=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/ubl-settings-resourcequota.h | 2 +- source/view_add.c | 13 +++++++------ 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/source/ubl-settings-resourcequota.h b/source/ubl-settings-resourcequota.h index d5e7258..7d22657 100755 --- a/source/ubl-settings-resourcequota.h +++ b/source/ubl-settings-resourcequota.h @@ -43,7 +43,7 @@ #define CMD_GET_GROUP "cut -d: -f1 /etc/group" typedef char *string; -string version_application = ""; +string version_application = "1.2-34-g126f61d"; static char *local; diff --git a/source/view_add.c b/source/view_add.c index 489e698..b3ce912 100644 --- a/source/view_add.c +++ b/source/view_add.c @@ -110,9 +110,6 @@ void add_del_disk() { char* disk_cfg = yon_char_new(obj_add_config.disk[index]); if (strstr(disk_cfg, disk) != NULL) { index_find = index; - printf("%d\n", index_find); - puts(disk_cfg); - puts(disk); break; } } @@ -172,6 +169,7 @@ void add_disk_all(){ } if (index_find == -1) { // Добавление + puts("111"); obj_add_config.disk = yon_char_parsed_append(obj_add_config.disk,&obj_add_config.size, disk); obj_add_config.size--; obj_add_config.i_o_limit_read_size = philos_int_append(obj_add_config.i_o_limit_read_size,&obj_add_config.size,(int)gtk_combo_box_get_active(GTK_COMBO_BOX(add_widgets->cbtAddRead))); @@ -184,16 +182,18 @@ void add_disk_all(){ } else { // Редактирование + puts("2222"); obj_add_config.disk[index_find] = yon_char_new(disk); obj_add_config.i_o_limit_read_size[index_find] =(int)gtk_combo_box_get_active(GTK_COMBO_BOX(add_widgets->cbtAddRead)); obj_add_config.i_o_limit_write_size[index_find] = (int)gtk_combo_box_get_active(GTK_COMBO_BOX(add_widgets->cbtAddWrite)); - obj_add_config.i_o_limit_read[index_find] = yon_char_from_int(gtk_spin_button_get_digits(GTK_SPIN_BUTTON(add_widgets->spinAddRead))); - obj_add_config.i_o_limit_write[index_find] = yon_char_from_int(gtk_spin_button_get_digits(GTK_SPIN_BUTTON(add_widgets->spinAddWrite))); - + obj_add_config.i_o_limit_read[index_find] = yon_char_from_int(gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(add_widgets->spinAddRead))); + obj_add_config.i_o_limit_write[index_find] = yon_char_from_int(gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(add_widgets->spinAddWrite))); + puts(yon_char_from_int(gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(add_widgets->spinAddRead)))); } } else { if (bool_read == 1 || bool_write == 1) { + puts("3333"); obj_add_config.disk = yon_char_parsed_append(obj_add_config.disk,&obj_add_config.size, disk); obj_add_config.size--; obj_add_config.i_o_limit_read_size = philos_int_append(obj_add_config.i_o_limit_read_size,&obj_add_config.size,(int)gtk_combo_box_get_active(GTK_COMBO_BOX(add_widgets->cbtAddRead))); @@ -206,6 +206,7 @@ void add_disk_all(){ obj_add_config.size--; obj_add_config.i_o_limit_write = yon_char_parsed_append(obj_add_config.i_o_limit_write,&obj_add_config.size,yon_char_from_int(gtk_spin_button_get_digits(GTK_SPIN_BUTTON(add_widgets->spinAddWrite)))); } + puts("44444"); } } -- 2.35.1 From cc0d328f8e2a4dc4df5e5da9a67558958eb876fd Mon Sep 17 00:00:00 2001 From: Igor Belitskiy Date: Tue, 20 Jun 2023 10:19:43 +0600 Subject: [PATCH 35/91] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=B0=20=D0=BE=D1=88=D0=B8=D0=B1=D0=BA=D0=B0?= =?UTF-8?q?=20=D1=81=20checkButton?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/ubl-settings-resourcequota.h | 2 +- source/view_add.c | 118 +++++++++++++++++++++------- 2 files changed, 91 insertions(+), 29 deletions(-) diff --git a/source/ubl-settings-resourcequota.h b/source/ubl-settings-resourcequota.h index 7d22657..5fd526a 100755 --- a/source/ubl-settings-resourcequota.h +++ b/source/ubl-settings-resourcequota.h @@ -43,7 +43,7 @@ #define CMD_GET_GROUP "cut -d: -f1 /etc/group" typedef char *string; -string version_application = "1.2-34-g126f61d"; +string version_application = "1.2-35-gb4c4ce6"; static char *local; diff --git a/source/view_add.c b/source/view_add.c index b3ce912..8c1b388 100644 --- a/source/view_add.c +++ b/source/view_add.c @@ -1,4 +1,5 @@ #include "view_add.h" +#include "ubl-utils.h" add_window *add_widgets = NULL; add_config obj_add_config; @@ -129,6 +130,8 @@ void add_del_disk() { char* pard_array_edit_cmd(char* cmd, char* key, char** array_io, int* array_io_pow_size) { char* split_simvol = g_malloc0(sizeof(char)*2); + int flag_format = 0; + char* cmd_old = yon_char_new(cmd); if (obj_add_config.disk && obj_add_config.size && array_io && array_io_pow_size) { int index_find = 0; for (int index = 0; index < obj_add_config.size; index++) { @@ -142,14 +145,24 @@ char* pard_array_edit_cmd(char* cmd, char* key, char** array_io, int* array_io_p } if (array_io_pow_size[index] != -1) { - cmd = yon_char_unite(cmd, split_simvol, obj_add_config.disk[index], philos_format_cfg_str_size_memory(" ", array_io[index], array_io_pow_size[index]), NULL); + cmd = yon_char_unite(cmd, + split_simvol, + obj_add_config.disk[index], + philos_format_cfg_str_size_memory(" ", array_io[index], array_io_pow_size[index]), NULL); split_simvol[0] = ','; split_simvol[1] = '\0'; + flag_format = 1; } } } free(split_simvol); - return cmd; + if (flag_format) { + return cmd; + } + else { + return cmd_old; + } + } void add_disk_all(){ @@ -169,44 +182,90 @@ void add_disk_all(){ } if (index_find == -1) { // Добавление - puts("111"); obj_add_config.disk = yon_char_parsed_append(obj_add_config.disk,&obj_add_config.size, disk); obj_add_config.size--; - obj_add_config.i_o_limit_read_size = philos_int_append(obj_add_config.i_o_limit_read_size,&obj_add_config.size,(int)gtk_combo_box_get_active(GTK_COMBO_BOX(add_widgets->cbtAddRead))); - obj_add_config.size--; - obj_add_config.i_o_limit_write_size = philos_int_append(obj_add_config.i_o_limit_write_size,&obj_add_config.size,(int)gtk_combo_box_get_active(GTK_COMBO_BOX(add_widgets->cbtAddWrite))); - obj_add_config.size--; - obj_add_config.i_o_limit_read = yon_char_parsed_append(obj_add_config.i_o_limit_read,&obj_add_config.size,yon_char_from_int(gtk_spin_button_get_digits(GTK_SPIN_BUTTON(add_widgets->spinAddRead)))); - obj_add_config.size--; - obj_add_config.i_o_limit_write = yon_char_parsed_append(obj_add_config.i_o_limit_write,&obj_add_config.size,yon_char_from_int(gtk_spin_button_get_digits(GTK_SPIN_BUTTON(add_widgets->spinAddWrite)))); + if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(add_widgets->chbAddRead))) { + obj_add_config.i_o_limit_read_size = philos_int_append(obj_add_config.i_o_limit_read_size,&obj_add_config.size,(int)gtk_combo_box_get_active(GTK_COMBO_BOX(add_widgets->cbtAddRead))); + obj_add_config.size--; + obj_add_config.i_o_limit_read = yon_char_parsed_append(obj_add_config.i_o_limit_read,&obj_add_config.size,yon_char_from_int(gtk_spin_button_get_digits(GTK_SPIN_BUTTON(add_widgets->spinAddRead)))); + obj_add_config.size--; + } + else { + obj_add_config.i_o_limit_write_size = philos_int_append(obj_add_config.i_o_limit_write_size,&obj_add_config.size,-1); + obj_add_config.size--; + obj_add_config.i_o_limit_write = yon_char_parsed_append(obj_add_config.i_o_limit_write,&obj_add_config.size,"-"); + obj_add_config.size--; + } + if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(add_widgets->chbAddWrite))) { + obj_add_config.i_o_limit_write_size = philos_int_append(obj_add_config.i_o_limit_write_size,&obj_add_config.size,(int)gtk_combo_box_get_active(GTK_COMBO_BOX(add_widgets->cbtAddWrite))); + obj_add_config.size--; + obj_add_config.i_o_limit_write = yon_char_parsed_append(obj_add_config.i_o_limit_write,&obj_add_config.size,yon_char_from_int(gtk_spin_button_get_digits(GTK_SPIN_BUTTON(add_widgets->spinAddWrite)))); + obj_add_config.size--; + } + else { + obj_add_config.i_o_limit_write_size = philos_int_append(obj_add_config.i_o_limit_write_size,&obj_add_config.size,-1); + obj_add_config.size--; + obj_add_config.i_o_limit_write = yon_char_parsed_append(obj_add_config.i_o_limit_write,&obj_add_config.size,"-"); + obj_add_config.size--; + } + obj_add_config.size++; + } else { // Редактирование - puts("2222"); - obj_add_config.disk[index_find] = yon_char_new(disk); - obj_add_config.i_o_limit_read_size[index_find] =(int)gtk_combo_box_get_active(GTK_COMBO_BOX(add_widgets->cbtAddRead)); - obj_add_config.i_o_limit_write_size[index_find] = (int)gtk_combo_box_get_active(GTK_COMBO_BOX(add_widgets->cbtAddWrite)); - obj_add_config.i_o_limit_read[index_find] = yon_char_from_int(gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(add_widgets->spinAddRead))); - obj_add_config.i_o_limit_write[index_find] = yon_char_from_int(gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(add_widgets->spinAddWrite))); - puts(yon_char_from_int(gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(add_widgets->spinAddRead)))); + //obj_add_config.disk[index_find] = yon_char_new(disk); + if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(add_widgets->chbAddRead))) { + obj_add_config.i_o_limit_read_size[index_find] =(int)gtk_combo_box_get_active(GTK_COMBO_BOX(add_widgets->cbtAddRead)); + obj_add_config.i_o_limit_read[index_find] = yon_char_from_int(gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(add_widgets->spinAddRead))); + + } + else { + obj_add_config.i_o_limit_read_size[index_find] = -1; + obj_add_config.i_o_limit_read[index_find] = "-"; + } + if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(add_widgets->chbAddWrite))) { + obj_add_config.i_o_limit_write_size[index_find] = (int)gtk_combo_box_get_active(GTK_COMBO_BOX(add_widgets->cbtAddWrite)); + obj_add_config.i_o_limit_write[index_find] = yon_char_from_int(gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(add_widgets->spinAddWrite))); + } + else { + obj_add_config.i_o_limit_write_size[index_find] = -1; + obj_add_config.i_o_limit_write[index_find] = "-"; + } + + + } } else { if (bool_read == 1 || bool_write == 1) { - puts("3333"); obj_add_config.disk = yon_char_parsed_append(obj_add_config.disk,&obj_add_config.size, disk); obj_add_config.size--; - obj_add_config.i_o_limit_read_size = philos_int_append(obj_add_config.i_o_limit_read_size,&obj_add_config.size,(int)gtk_combo_box_get_active(GTK_COMBO_BOX(add_widgets->cbtAddRead))); - obj_add_config.size--; - obj_add_config.i_o_limit_read = yon_char_parsed_append(obj_add_config.i_o_limit_read,&obj_add_config.size,yon_char_from_int(gtk_spin_button_get_digits(GTK_SPIN_BUTTON(add_widgets->spinAddRead)))); - obj_add_config.size--; - obj_add_config.disk = yon_char_parsed_append(obj_add_config.disk,&obj_add_config.size, disk); - obj_add_config.size--; - obj_add_config.i_o_limit_write_size = philos_int_append(obj_add_config.i_o_limit_write_size,&obj_add_config.size,(int)gtk_combo_box_get_active(GTK_COMBO_BOX(add_widgets->cbtAddWrite))); - obj_add_config.size--; - obj_add_config.i_o_limit_write = yon_char_parsed_append(obj_add_config.i_o_limit_write,&obj_add_config.size,yon_char_from_int(gtk_spin_button_get_digits(GTK_SPIN_BUTTON(add_widgets->spinAddWrite)))); + if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(add_widgets->chbAddRead))) { + obj_add_config.i_o_limit_read_size = philos_int_append(obj_add_config.i_o_limit_read_size,&obj_add_config.size,(int)gtk_combo_box_get_active(GTK_COMBO_BOX(add_widgets->cbtAddRead))); + obj_add_config.size--; + obj_add_config.i_o_limit_read = yon_char_parsed_append(obj_add_config.i_o_limit_read,&obj_add_config.size,yon_char_from_int(gtk_spin_button_get_digits(GTK_SPIN_BUTTON(add_widgets->spinAddRead)))); + obj_add_config.size--; + } + else { + obj_add_config.i_o_limit_write_size = philos_int_append(obj_add_config.i_o_limit_write_size,&obj_add_config.size,-1); + obj_add_config.size--; + obj_add_config.i_o_limit_write = yon_char_parsed_append(obj_add_config.i_o_limit_write,&obj_add_config.size,"-"); + obj_add_config.size--; + } + if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(add_widgets->chbAddWrite))) { + obj_add_config.i_o_limit_write_size = philos_int_append(obj_add_config.i_o_limit_write_size,&obj_add_config.size,(int)gtk_combo_box_get_active(GTK_COMBO_BOX(add_widgets->cbtAddWrite))); + obj_add_config.size--; + obj_add_config.i_o_limit_write = yon_char_parsed_append(obj_add_config.i_o_limit_write,&obj_add_config.size,yon_char_from_int(gtk_spin_button_get_digits(GTK_SPIN_BUTTON(add_widgets->spinAddWrite)))); + obj_add_config.size--; + } + else { + obj_add_config.i_o_limit_write_size = philos_int_append(obj_add_config.i_o_limit_write_size,&obj_add_config.size,-1); + obj_add_config.size--; + obj_add_config.i_o_limit_write = yon_char_parsed_append(obj_add_config.i_o_limit_write,&obj_add_config.size,"-"); + obj_add_config.size--; + } + obj_add_config.size++; } - puts("44444"); } } @@ -449,8 +508,11 @@ void add_generate_cmd() { } if (gtk_combo_box_get_active(GTK_COMBO_BOX(add_widgets->cbtAddDevice))!=-1) { if (obj_add_config.size!=0) { + puts(str_cmd); str_cmd = pard_array_edit_cmd(str_cmd, "IOReadBandwidthMax=", obj_add_config.i_o_limit_read, obj_add_config.i_o_limit_read_size); + puts(str_cmd); str_cmd = pard_array_edit_cmd(str_cmd, "IOWriteBandwidthMax=", obj_add_config.i_o_limit_write, obj_add_config.i_o_limit_write_size); + puts(str_cmd); } } -- 2.35.1 From 328deff8227ac004f5a0f926ccd0f720c482ad6a Mon Sep 17 00:00:00 2001 From: Igor Belitskiy Date: Tue, 20 Jun 2023 10:34:59 +0600 Subject: [PATCH 36/91] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=B0=20=D0=B0=D0=BA=D1=82=D0=B8=D0=B2=D0=BD?= =?UTF-8?q?=D0=BE=D1=81=D1=82=D1=8C=20=D1=8D=D0=BB=D0=B5=D0=BC=D0=B5=D0=BD?= =?UTF-8?q?=D1=82=D0=BE=D0=B2=20=D0=B2=20=D0=BE=D0=BA=D0=BD=D0=B5=20=D0=B4?= =?UTF-8?q?=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D1=82=D1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/ubl-settings-resourcequota.h | 2 +- source/view_add.c | 13 +++++++------ 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/source/ubl-settings-resourcequota.h b/source/ubl-settings-resourcequota.h index 5fd526a..2baa964 100755 --- a/source/ubl-settings-resourcequota.h +++ b/source/ubl-settings-resourcequota.h @@ -43,7 +43,7 @@ #define CMD_GET_GROUP "cut -d: -f1 /etc/group" typedef char *string; -string version_application = "1.2-35-gb4c4ce6"; +string version_application = "1.2-36-gcc0d328"; static char *local; diff --git a/source/view_add.c b/source/view_add.c index 8c1b388..7e0ceca 100644 --- a/source/view_add.c +++ b/source/view_add.c @@ -77,6 +77,8 @@ void add_init_windows() { philos_set_active_widgets(add_widgets->chkSevereRestrictionAdd, add_widgets->spinSevereRestrictionAdd, add_widgets->cmbSevereRestrictionAdd,0 , CMD_RAW); philos_set_active_widgets(add_widgets->chkPaddingFLAdd, add_widgets->spinPaddingFLAdd, add_widgets->cmbPaddingFLAdd,0 , CMD_SWAP); philos_set_active_widgets(add_widgets->chkCPULimitAdd, add_widgets->spinCPULimitAdd, add_widgets->lblCPULimitAdd,1 , CMD_CPU); + philos_set_active_widgets_device_io(add_widgets->cbtAddDevice,add_widgets->chbAddWrite, add_widgets->spinAddWrite, add_widgets->cbtAddWrite); + philos_set_active_widgets_device_io(add_widgets->cbtAddDevice,add_widgets->chbAddRead, add_widgets->spinAddRead, add_widgets->cbtAddRead); add_generate_cmd(); } else { @@ -128,7 +130,7 @@ void add_del_disk() { } } -char* pard_array_edit_cmd(char* cmd, char* key, char** array_io, int* array_io_pow_size) { +char* pard_array_add_cmd(char* cmd, char* key, char** array_io, int* array_io_pow_size) { char* split_simvol = g_malloc0(sizeof(char)*2); int flag_format = 0; char* cmd_old = yon_char_new(cmd); @@ -270,6 +272,8 @@ void add_disk_all(){ } void event_check_io_device() { + philos_set_active_widgets_device_io(add_widgets->cbtAddDevice,add_widgets->chbAddWrite, add_widgets->spinAddWrite, add_widgets->cbtAddWrite); + philos_set_active_widgets_device_io(add_widgets->cbtAddDevice,add_widgets->chbAddRead, add_widgets->spinAddRead, add_widgets->cbtAddRead); add_del_disk(); add_disk_all(); add_init_windows(); @@ -508,11 +512,8 @@ void add_generate_cmd() { } if (gtk_combo_box_get_active(GTK_COMBO_BOX(add_widgets->cbtAddDevice))!=-1) { if (obj_add_config.size!=0) { - puts(str_cmd); - str_cmd = pard_array_edit_cmd(str_cmd, "IOReadBandwidthMax=", obj_add_config.i_o_limit_read, obj_add_config.i_o_limit_read_size); - puts(str_cmd); - str_cmd = pard_array_edit_cmd(str_cmd, "IOWriteBandwidthMax=", obj_add_config.i_o_limit_write, obj_add_config.i_o_limit_write_size); - puts(str_cmd); + str_cmd = pard_array_add_cmd(str_cmd, "IOReadBandwidthMax=", obj_add_config.i_o_limit_read, obj_add_config.i_o_limit_read_size); + str_cmd = pard_array_add_cmd(str_cmd, "IOWriteBandwidthMax=", obj_add_config.i_o_limit_write, obj_add_config.i_o_limit_write_size); } } -- 2.35.1 From 8643957c5b3652194bb1e8be5663a538bdb751b3 Mon Sep 17 00:00:00 2001 From: Igor Belitskiy Date: Tue, 20 Jun 2023 17:18:34 +0600 Subject: [PATCH 37/91] fix --- source/ubl-settings-resourcequota.c | 4 +-- source/ubl-settings-resourcequota.h | 2 +- source/view_add.c | 49 +++++++++++++++++++++-------- 3 files changed, 38 insertions(+), 17 deletions(-) diff --git a/source/ubl-settings-resourcequota.c b/source/ubl-settings-resourcequota.c index 76ce027..8b52f4a 100644 --- a/source/ubl-settings-resourcequota.c +++ b/source/ubl-settings-resourcequota.c @@ -614,8 +614,7 @@ void tree_view_select(GtkWidget *self, main_window *widgets) { gtk_widget_set_sensitive(widgets->btnDelQuotas,0); gtk_widget_set_sensitive(widgets->btnEdit,0); gtk_widget_set_sensitive(widgets->btnInfo,0); - } - + } } void tree_view_add(int index) { @@ -690,7 +689,6 @@ void fill_tree_view(int start, int size, int flag_gui_add) { 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) { diff --git a/source/ubl-settings-resourcequota.h b/source/ubl-settings-resourcequota.h index 2baa964..630fd5f 100755 --- a/source/ubl-settings-resourcequota.h +++ b/source/ubl-settings-resourcequota.h @@ -43,7 +43,7 @@ #define CMD_GET_GROUP "cut -d: -f1 /etc/group" typedef char *string; -string version_application = "1.2-36-gcc0d328"; +string version_application = "1.2-37-g328deff"; static char *local; diff --git a/source/view_add.c b/source/view_add.c index 7e0ceca..0e82948 100644 --- a/source/view_add.c +++ b/source/view_add.c @@ -52,6 +52,13 @@ add_window *add_setup_window(char* glade_path) { } return add_widgets; } +void update_device_to_entry(GtkWidget *combo_box, GtkWidget *check_button_read, GtkWidget *check_button_write) { + int disk_id = gtk_combo_box_get_active(GTK_COMBO_BOX(combo_box)); + if (disk_id != -1) { + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check_button_read), 0); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check_button_write), 0); + } +} void add_config_init() { if (obj_add_config.size != 0) { @@ -136,6 +143,7 @@ char* pard_array_add_cmd(char* cmd, char* key, char** array_io, int* array_io_po char* cmd_old = yon_char_new(cmd); if (obj_add_config.disk && obj_add_config.size && array_io && array_io_pow_size) { int index_find = 0; + printf("\n%i\n", obj_add_config.size); for (int index = 0; index < obj_add_config.size; index++) { if (index==0) { if (strlen(cmd)>1) { @@ -146,6 +154,8 @@ char* pard_array_add_cmd(char* cmd, char* key, char** array_io, int* array_io_po } } + printf("\n%i\n", array_io_pow_size[index]); + puts(key); if (array_io_pow_size[index] != -1) { cmd = yon_char_unite(cmd, split_simvol, @@ -157,6 +167,7 @@ char* pard_array_add_cmd(char* cmd, char* key, char** array_io, int* array_io_po } } } + puts("================================================"); free(split_simvol); if (flag_format) { return cmd; @@ -184,12 +195,16 @@ void add_disk_all(){ } if (index_find == -1) { // Добавление - obj_add_config.disk = yon_char_parsed_append(obj_add_config.disk,&obj_add_config.size, disk); - obj_add_config.size--; + + if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(add_widgets->chbAddRead)) || + gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(add_widgets->chbAddWrite))) { + obj_add_config.disk = yon_char_parsed_append(obj_add_config.disk,&obj_add_config.size, disk); + obj_add_config.size--; + } if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(add_widgets->chbAddRead))) { obj_add_config.i_o_limit_read_size = philos_int_append(obj_add_config.i_o_limit_read_size,&obj_add_config.size,(int)gtk_combo_box_get_active(GTK_COMBO_BOX(add_widgets->cbtAddRead))); obj_add_config.size--; - obj_add_config.i_o_limit_read = yon_char_parsed_append(obj_add_config.i_o_limit_read,&obj_add_config.size,yon_char_from_int(gtk_spin_button_get_digits(GTK_SPIN_BUTTON(add_widgets->spinAddRead)))); + obj_add_config.i_o_limit_read = yon_char_parsed_append(obj_add_config.i_o_limit_read,&obj_add_config.size,yon_char_from_int(gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(add_widgets->spinAddRead)))); obj_add_config.size--; } else { @@ -201,7 +216,7 @@ void add_disk_all(){ if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(add_widgets->chbAddWrite))) { obj_add_config.i_o_limit_write_size = philos_int_append(obj_add_config.i_o_limit_write_size,&obj_add_config.size,(int)gtk_combo_box_get_active(GTK_COMBO_BOX(add_widgets->cbtAddWrite))); obj_add_config.size--; - obj_add_config.i_o_limit_write = yon_char_parsed_append(obj_add_config.i_o_limit_write,&obj_add_config.size,yon_char_from_int(gtk_spin_button_get_digits(GTK_SPIN_BUTTON(add_widgets->spinAddWrite)))); + obj_add_config.i_o_limit_write = yon_char_parsed_append(obj_add_config.i_o_limit_write,&obj_add_config.size,yon_char_from_int(gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(add_widgets->spinAddWrite)))); obj_add_config.size--; } else { @@ -219,7 +234,6 @@ void add_disk_all(){ if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(add_widgets->chbAddRead))) { obj_add_config.i_o_limit_read_size[index_find] =(int)gtk_combo_box_get_active(GTK_COMBO_BOX(add_widgets->cbtAddRead)); obj_add_config.i_o_limit_read[index_find] = yon_char_from_int(gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(add_widgets->spinAddRead))); - } else { obj_add_config.i_o_limit_read_size[index_find] = -1; @@ -233,19 +247,19 @@ void add_disk_all(){ obj_add_config.i_o_limit_write_size[index_find] = -1; obj_add_config.i_o_limit_write[index_find] = "-"; } - - - } } else { if (bool_read == 1 || bool_write == 1) { - obj_add_config.disk = yon_char_parsed_append(obj_add_config.disk,&obj_add_config.size, disk); - obj_add_config.size--; + if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(add_widgets->chbAddRead)) || + gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(add_widgets->chbAddWrite))) { + obj_add_config.disk = yon_char_parsed_append(obj_add_config.disk,&obj_add_config.size, disk); + obj_add_config.size--; + } if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(add_widgets->chbAddRead))) { obj_add_config.i_o_limit_read_size = philos_int_append(obj_add_config.i_o_limit_read_size,&obj_add_config.size,(int)gtk_combo_box_get_active(GTK_COMBO_BOX(add_widgets->cbtAddRead))); obj_add_config.size--; - obj_add_config.i_o_limit_read = yon_char_parsed_append(obj_add_config.i_o_limit_read,&obj_add_config.size,yon_char_from_int(gtk_spin_button_get_digits(GTK_SPIN_BUTTON(add_widgets->spinAddRead)))); + obj_add_config.i_o_limit_read = yon_char_parsed_append(obj_add_config.i_o_limit_read,&obj_add_config.size,yon_char_from_int(gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(add_widgets->spinAddRead)))); obj_add_config.size--; } else { @@ -257,7 +271,7 @@ void add_disk_all(){ if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(add_widgets->chbAddWrite))) { obj_add_config.i_o_limit_write_size = philos_int_append(obj_add_config.i_o_limit_write_size,&obj_add_config.size,(int)gtk_combo_box_get_active(GTK_COMBO_BOX(add_widgets->cbtAddWrite))); obj_add_config.size--; - obj_add_config.i_o_limit_write = yon_char_parsed_append(obj_add_config.i_o_limit_write,&obj_add_config.size,yon_char_from_int(gtk_spin_button_get_digits(GTK_SPIN_BUTTON(add_widgets->spinAddWrite)))); + obj_add_config.i_o_limit_write = yon_char_parsed_append(obj_add_config.i_o_limit_write,&obj_add_config.size,yon_char_from_int(gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(add_widgets->spinAddWrite)))); obj_add_config.size--; } else { @@ -268,6 +282,9 @@ void add_disk_all(){ } obj_add_config.size++; } + else { + puts("222sdvdfvdvfv\n"); + } } } @@ -279,6 +296,11 @@ void event_check_io_device() { add_init_windows(); } +void combo_box_device() { + update_device_to_entry(add_widgets->cbtAddDevice, add_widgets->chbAddRead, add_widgets->chbAddWrite); + update_device_to_entry(add_widgets->cbtAddDevice, add_widgets->chbAddRead, add_widgets->chbAddWrite); +} + void add_event(add_window *widgets) { g_signal_connect(G_OBJECT(widgets->btnAddCancel),"clicked",G_CALLBACK(add_on_destroy_subwindow),NULL); g_signal_connect(G_OBJECT(widgets->Window), "destroy", G_CALLBACK(add_destroy), NULL); @@ -303,10 +325,11 @@ void add_event(add_window *widgets) { g_signal_connect(G_OBJECT(widgets->cmbPaddingFLAdd),"changed",G_CALLBACK(add_init_windows), NULL); g_signal_connect(G_OBJECT(widgets->cbtAddRead),"changed",G_CALLBACK(event_check_io_device), NULL); g_signal_connect(G_OBJECT(widgets->cbtAddWrite),"changed",G_CALLBACK(event_check_io_device), NULL); - g_signal_connect(G_OBJECT(widgets->cbtAddDevice),"changed",G_CALLBACK(event_check_io_device), NULL); + g_signal_connect(G_OBJECT(widgets->cbtAddDevice),"changed",G_CALLBACK(combo_box_device), NULL); } + void add_get_cmd_group(char* cmd_get_group) { CMD_GET_GROUP = cmd_get_group; } -- 2.35.1 From 71166106d1a1a8823004966e7d425ea6437a5949 Mon Sep 17 00:00:00 2001 From: Igor Belitskiy Date: Thu, 22 Jun 2023 10:43:50 +0600 Subject: [PATCH 38/91] =?UTF-8?q?=D0=A7=D0=B0=D1=81=D1=82=D0=B8=D1=87?= =?UTF-8?q?=D0=BD=D0=BE=20=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=20=D0=B2=D1=8B=D0=B1=D0=BE=D1=80=20=D0=B1=D0=BB=D0=BE?= =?UTF-8?q?=D1=87=D0=BD=D1=8B=D1=85=20=D1=83=D1=81=D1=82=D1=80=D0=BE=D0=B9?= =?UTF-8?q?=D1=81=D1=82=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/ubl-settings-resourcequota.h | 2 +- source/ubl-utils.c | 14 ++--- source/view_add.c | 81 +++++++++++++++++++++-------- 3 files changed, 68 insertions(+), 29 deletions(-) diff --git a/source/ubl-settings-resourcequota.h b/source/ubl-settings-resourcequota.h index 630fd5f..b492141 100755 --- a/source/ubl-settings-resourcequota.h +++ b/source/ubl-settings-resourcequota.h @@ -43,7 +43,7 @@ #define CMD_GET_GROUP "cut -d: -f1 /etc/group" typedef char *string; -string version_application = "1.2-37-g328deff"; +string version_application = "1.2-38-g8643957"; static char *local; diff --git a/source/ubl-utils.c b/source/ubl-utils.c index df891cb..69bb7d6 100644 --- a/source/ubl-utils.c +++ b/source/ubl-utils.c @@ -1586,20 +1586,20 @@ void philos_set_active_widgets_device_io(GtkWidget* combo_to_l2,GtkWidget *check int menu_id = gtk_combo_box_get_active(GTK_COMBO_BOX(combo_to_l2)); if (menu_id != -1) { gboolean active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(check)); - gtk_widget_set_sensitive(spin, active); - gtk_widget_set_sensitive(combo, active); - if (gtk_spin_button_get_digits(GTK_SPIN_BUTTON(spin))>0) { - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check),1); - } - else if (active == 0) { + if (active == 0) { gtk_spin_button_set_digits(GTK_SPIN_BUTTON(spin), 0); } + else if (gtk_spin_button_get_digits(GTK_SPIN_BUTTON(spin))>0) { + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check),1); + } + gtk_widget_set_sensitive(spin, active); + gtk_widget_set_sensitive(combo, active); } else { + gtk_spin_button_set_digits(GTK_SPIN_BUTTON(spin), 0); gtk_widget_set_sensitive(spin, 0); gtk_widget_set_sensitive(combo, 0); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check), 0); - gtk_spin_button_set_digits(GTK_SPIN_BUTTON(spin), 0); } philos_set_spin_adjustment(check, spin, combo, 12582912); } diff --git a/source/view_add.c b/source/view_add.c index 0e82948..726d7b0 100644 --- a/source/view_add.c +++ b/source/view_add.c @@ -52,11 +52,55 @@ add_window *add_setup_window(char* glade_path) { } return add_widgets; } -void update_device_to_entry(GtkWidget *combo_box, GtkWidget *check_button_read, GtkWidget *check_button_write) { +// flag_check_array = 0 READ +// flag_check_array = 1 WRITE +void update_device_to_entry(GtkWidget *combo_box, GtkWidget *check_button, GtkWidget *spin, int flag_check_array) { int disk_id = gtk_combo_box_get_active(GTK_COMBO_BOX(combo_box)); + char* disk = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(add_widgets->cbtAddDevice)); + disk = yon_char_divide_search(disk, " ", -1); if (disk_id != -1) { - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check_button_read), 0); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check_button_write), 0); + int index_find = -1; + for (int index = 0; index < obj_add_config.size; index++) { + char* disk_cfg = yon_char_new(obj_add_config.disk[index]); + if (strstr(disk_cfg, disk) != NULL) { + index_find = index; + break; + } + } + if (index_find != -1) { + if (flag_check_array==0) { + if (strstr(obj_add_config.i_o_limit_read[index_find],"-")) { + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check_button), 0); + gtk_spin_button_set_value(GTK_SPIN_BUTTON(spin), 0); + } + else { + gtk_spin_button_set_value(GTK_SPIN_BUTTON(spin), atoll(obj_add_config.i_o_limit_read[index_find])); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check_button), 1); + } + } + else if (flag_check_array==1) { + if (strstr(obj_add_config.i_o_limit_write[index_find],"-")) { + gtk_spin_button_set_value(GTK_SPIN_BUTTON(spin), 0); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check_button), 0); + } + else { + gtk_spin_button_set_value(GTK_SPIN_BUTTON(spin), atoll(obj_add_config.i_o_limit_write[index_find])); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check_button), 1); + } + } + else { + gtk_spin_button_set_value(GTK_SPIN_BUTTON(spin), 0); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check_button), 0); + } + } + else { + gtk_spin_button_set_value(GTK_SPIN_BUTTON(spin), 0); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check_button), 0); + } + } + else { + gtk_spin_button_set_value(GTK_SPIN_BUTTON(spin), 0); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check_button), 0); } } @@ -116,8 +160,9 @@ void add_del_disk() { } if (obj_add_config.disk && obj_add_config.size) { int index_find = -1; + printf("%d\n", obj_add_config.size); for (int index = 0; index < obj_add_config.size; index++) { - char* disk_cfg = yon_char_new(obj_add_config.disk[index]); + char* disk_cfg = obj_add_config.disk[index]; if (strstr(disk_cfg, disk) != NULL) { index_find = index; break; @@ -154,8 +199,6 @@ char* pard_array_add_cmd(char* cmd, char* key, char** array_io, int* array_io_po } } - printf("\n%i\n", array_io_pow_size[index]); - puts(key); if (array_io_pow_size[index] != -1) { cmd = yon_char_unite(cmd, split_simvol, @@ -167,7 +210,6 @@ char* pard_array_add_cmd(char* cmd, char* key, char** array_io, int* array_io_po } } } - puts("================================================"); free(split_simvol); if (flag_format) { return cmd; @@ -195,12 +237,9 @@ void add_disk_all(){ } if (index_find == -1) { // Добавление - - if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(add_widgets->chbAddRead)) || - gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(add_widgets->chbAddWrite))) { - obj_add_config.disk = yon_char_parsed_append(obj_add_config.disk,&obj_add_config.size, disk); - obj_add_config.size--; - } + puts("hhhhhhh1"); + obj_add_config.disk = yon_char_parsed_append(obj_add_config.disk,&obj_add_config.size, disk); + obj_add_config.size--; if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(add_widgets->chbAddRead))) { obj_add_config.i_o_limit_read_size = philos_int_append(obj_add_config.i_o_limit_read_size,&obj_add_config.size,(int)gtk_combo_box_get_active(GTK_COMBO_BOX(add_widgets->cbtAddRead))); obj_add_config.size--; @@ -208,9 +247,9 @@ void add_disk_all(){ obj_add_config.size--; } else { - obj_add_config.i_o_limit_write_size = philos_int_append(obj_add_config.i_o_limit_write_size,&obj_add_config.size,-1); + obj_add_config.i_o_limit_read_size = philos_int_append(obj_add_config.i_o_limit_read_size,&obj_add_config.size,-1); obj_add_config.size--; - obj_add_config.i_o_limit_write = yon_char_parsed_append(obj_add_config.i_o_limit_write,&obj_add_config.size,"-"); + obj_add_config.i_o_limit_read = yon_char_parsed_append(obj_add_config.i_o_limit_read,&obj_add_config.size,"-"); obj_add_config.size--; } if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(add_widgets->chbAddWrite))) { @@ -231,6 +270,7 @@ void add_disk_all(){ else { // Редактирование //obj_add_config.disk[index_find] = yon_char_new(disk); + puts("hhhhhhh2"); if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(add_widgets->chbAddRead))) { obj_add_config.i_o_limit_read_size[index_find] =(int)gtk_combo_box_get_active(GTK_COMBO_BOX(add_widgets->cbtAddRead)); obj_add_config.i_o_limit_read[index_find] = yon_char_from_int(gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(add_widgets->spinAddRead))); @@ -263,9 +303,9 @@ void add_disk_all(){ obj_add_config.size--; } else { - obj_add_config.i_o_limit_write_size = philos_int_append(obj_add_config.i_o_limit_write_size,&obj_add_config.size,-1); + obj_add_config.i_o_limit_read_size = philos_int_append(obj_add_config.i_o_limit_read_size,&obj_add_config.size,-1); obj_add_config.size--; - obj_add_config.i_o_limit_write = yon_char_parsed_append(obj_add_config.i_o_limit_write,&obj_add_config.size,"-"); + obj_add_config.i_o_limit_read = yon_char_parsed_append(obj_add_config.i_o_limit_read,&obj_add_config.size,"-"); obj_add_config.size--; } if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(add_widgets->chbAddWrite))) { @@ -283,7 +323,6 @@ void add_disk_all(){ obj_add_config.size++; } else { - puts("222sdvdfvdvfv\n"); } } } @@ -291,14 +330,14 @@ void add_disk_all(){ void event_check_io_device() { philos_set_active_widgets_device_io(add_widgets->cbtAddDevice,add_widgets->chbAddWrite, add_widgets->spinAddWrite, add_widgets->cbtAddWrite); philos_set_active_widgets_device_io(add_widgets->cbtAddDevice,add_widgets->chbAddRead, add_widgets->spinAddRead, add_widgets->cbtAddRead); - add_del_disk(); add_disk_all(); + add_del_disk(); add_init_windows(); } void combo_box_device() { - update_device_to_entry(add_widgets->cbtAddDevice, add_widgets->chbAddRead, add_widgets->chbAddWrite); - update_device_to_entry(add_widgets->cbtAddDevice, add_widgets->chbAddRead, add_widgets->chbAddWrite); + update_device_to_entry(add_widgets->cbtAddDevice, add_widgets->chbAddRead, add_widgets->spinAddRead, 0); + update_device_to_entry(add_widgets->cbtAddDevice, add_widgets->chbAddWrite, add_widgets->spinAddWrite, 1); } void add_event(add_window *widgets) { -- 2.35.1 From 9853ebc748c6a250fa7eb4920cdd94c865bdf2d9 Mon Sep 17 00:00:00 2001 From: Igor Belitskiy Date: Thu, 22 Jun 2023 12:57:22 +0600 Subject: [PATCH 39/91] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB=20=D1=83=D1=82=D0=B5=D1=87=D0=BA=D0=B8=20=D0=BF?= =?UTF-8?q?=D0=B0=D0=BC=D1=8F=D1=82=D0=B8=20=D0=BF=D1=80=D0=B8=20=D1=81?= =?UTF-8?q?=D0=BE=D1=85=D1=80=D0=B0=D0=BD=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=B2?= =?UTF-8?q?=20=D1=82=D0=B0=D0=B1=D0=BB=D0=B8=D1=86=D1=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/ubl-settings-resourcequota.c | 3 +- source/ubl-settings-resourcequota.h | 2 +- source/view_add.c | 64 ++++++++++++----------------- 3 files changed, 28 insertions(+), 41 deletions(-) diff --git a/source/ubl-settings-resourcequota.c b/source/ubl-settings-resourcequota.c index 8b52f4a..04ed8ef 100644 --- a/source/ubl-settings-resourcequota.c +++ b/source/ubl-settings-resourcequota.c @@ -643,7 +643,6 @@ void tree_view_add(int index) { main_config.disk = yon_remalloc(main_config.disk, (main_config.size_tree_view + 1) * sizeof(char**)); yon_char_parsed_copy(&main_config.i_o_limit_write[main_config.size_tree_view], add_get_write_device()); philos_array_int_copy(&main_config.i_o_limit_write_size[main_config.size_tree_view], add_get_write_device_size_pow()); - yon_char_parsed_copy(&main_config.disk[main_config.size_tree_view], add_get_select_device()); 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--; @@ -701,7 +700,7 @@ char* format_io_limit_in_tree_view(config_str* disk, config_str* i_o_limit, int* str = yon_char_unite(str, ", ", disk[index][index_to_n2], " ", i_o_limit[index][index_to_n2], NULL); } else if (strstr(disk[index][index_to_n2], "-")){ - str = yon_char_unite(str, "-", NULL); + str = yon_char_unite(str, ",", NULL); } else { str = yon_char_unite(str, disk[index][index_to_n2], " ", i_o_limit[index][index_to_n2], NULL); diff --git a/source/ubl-settings-resourcequota.h b/source/ubl-settings-resourcequota.h index b492141..dced028 100755 --- a/source/ubl-settings-resourcequota.h +++ b/source/ubl-settings-resourcequota.h @@ -43,7 +43,7 @@ #define CMD_GET_GROUP "cut -d: -f1 /etc/group" typedef char *string; -string version_application = "1.2-38-g8643957"; +string version_application = "1.2-39-g7116610"; static char *local; diff --git a/source/view_add.c b/source/view_add.c index 726d7b0..af9d4ce 100644 --- a/source/view_add.c +++ b/source/view_add.c @@ -54,14 +54,14 @@ add_window *add_setup_window(char* glade_path) { } // flag_check_array = 0 READ // flag_check_array = 1 WRITE -void update_device_to_entry(GtkWidget *combo_box, GtkWidget *check_button, GtkWidget *spin, int flag_check_array) { +void update_device_to_entry(GtkWidget *combo_box, GtkWidget *combo_box_size, GtkWidget *check_button, GtkWidget *spin, int flag_check_array) { int disk_id = gtk_combo_box_get_active(GTK_COMBO_BOX(combo_box)); char* disk = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(add_widgets->cbtAddDevice)); disk = yon_char_divide_search(disk, " ", -1); if (disk_id != -1) { int index_find = -1; for (int index = 0; index < obj_add_config.size; index++) { - char* disk_cfg = yon_char_new(obj_add_config.disk[index]); + char* disk_cfg = obj_add_config.disk[index]; if (strstr(disk_cfg, disk) != NULL) { index_find = index; break; @@ -72,35 +72,43 @@ void update_device_to_entry(GtkWidget *combo_box, GtkWidget *check_button, GtkWi if (strstr(obj_add_config.i_o_limit_read[index_find],"-")) { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check_button), 0); gtk_spin_button_set_value(GTK_SPIN_BUTTON(spin), 0); + gtk_combo_box_set_active(GTK_COMBO_BOX(combo_box_size), 0); } else { gtk_spin_button_set_value(GTK_SPIN_BUTTON(spin), atoll(obj_add_config.i_o_limit_read[index_find])); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check_button), 1); + gtk_combo_box_set_active(GTK_COMBO_BOX(combo_box_size), obj_add_config.i_o_limit_read_size[index_find]); + } } else if (flag_check_array==1) { if (strstr(obj_add_config.i_o_limit_write[index_find],"-")) { gtk_spin_button_set_value(GTK_SPIN_BUTTON(spin), 0); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check_button), 0); + gtk_combo_box_set_active(GTK_COMBO_BOX(combo_box_size), 0); } else { gtk_spin_button_set_value(GTK_SPIN_BUTTON(spin), atoll(obj_add_config.i_o_limit_write[index_find])); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check_button), 1); + gtk_combo_box_set_active(GTK_COMBO_BOX(combo_box_size), obj_add_config.i_o_limit_write_size[index_find]); } } else { gtk_spin_button_set_value(GTK_SPIN_BUTTON(spin), 0); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check_button), 0); + gtk_combo_box_set_active(GTK_COMBO_BOX(combo_box_size), 0); } } else { gtk_spin_button_set_value(GTK_SPIN_BUTTON(spin), 0); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check_button), 0); + gtk_combo_box_set_active(GTK_COMBO_BOX(combo_box_size), 0); } } else { gtk_spin_button_set_value(GTK_SPIN_BUTTON(spin), 0); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check_button), 0); + gtk_combo_box_set_active(GTK_COMBO_BOX(combo_box_size), 0); } } @@ -108,8 +116,8 @@ void add_config_init() { if (obj_add_config.size != 0) { philos_free_string_array(&obj_add_config.disk, obj_add_config.size); philos_free_string_array(&obj_add_config.i_o_limit_read, obj_add_config.size); - philos_free_string_array(&obj_add_config.i_o_limit_write, obj_add_config.size); philos_free_int_array(&obj_add_config.i_o_limit_read_size, obj_add_config.size); + philos_free_string_array(&obj_add_config.i_o_limit_write, obj_add_config.size); philos_free_int_array(&obj_add_config.i_o_limit_write_size, obj_add_config.size); } obj_add_config.disk = NULL; @@ -229,7 +237,7 @@ void add_disk_all(){ if (disk_id >= 0 && obj_add_config.size !=0) { int index_find = -1; for (int index = 0; index < obj_add_config.size; index++) { - char* disk_cfg = yon_char_new(obj_add_config.disk[index]); + char* disk_cfg = obj_add_config.disk[index]; if (strstr(disk_cfg, disk) != NULL) { index_find = index; break; @@ -237,7 +245,6 @@ void add_disk_all(){ } if (index_find == -1) { // Добавление - puts("hhhhhhh1"); obj_add_config.disk = yon_char_parsed_append(obj_add_config.disk,&obj_add_config.size, disk); obj_add_config.size--; if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(add_widgets->chbAddRead))) { @@ -270,7 +277,6 @@ void add_disk_all(){ else { // Редактирование //obj_add_config.disk[index_find] = yon_char_new(disk); - puts("hhhhhhh2"); if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(add_widgets->chbAddRead))) { obj_add_config.i_o_limit_read_size[index_find] =(int)gtk_combo_box_get_active(GTK_COMBO_BOX(add_widgets->cbtAddRead)); obj_add_config.i_o_limit_read[index_find] = yon_char_from_int(gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(add_widgets->spinAddRead))); @@ -291,11 +297,8 @@ void add_disk_all(){ } else { if (bool_read == 1 || bool_write == 1) { - if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(add_widgets->chbAddRead)) || - gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(add_widgets->chbAddWrite))) { - obj_add_config.disk = yon_char_parsed_append(obj_add_config.disk,&obj_add_config.size, disk); - obj_add_config.size--; - } + obj_add_config.disk = yon_char_parsed_append(obj_add_config.disk,&obj_add_config.size, disk); + obj_add_config.size--; if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(add_widgets->chbAddRead))) { obj_add_config.i_o_limit_read_size = philos_int_append(obj_add_config.i_o_limit_read_size,&obj_add_config.size,(int)gtk_combo_box_get_active(GTK_COMBO_BOX(add_widgets->cbtAddRead))); obj_add_config.size--; @@ -336,8 +339,8 @@ void event_check_io_device() { } void combo_box_device() { - update_device_to_entry(add_widgets->cbtAddDevice, add_widgets->chbAddRead, add_widgets->spinAddRead, 0); - update_device_to_entry(add_widgets->cbtAddDevice, add_widgets->chbAddWrite, add_widgets->spinAddWrite, 1); + update_device_to_entry(add_widgets->cbtAddDevice,add_widgets->cbtAddRead, add_widgets->chbAddRead, add_widgets->spinAddRead, 0); + update_device_to_entry(add_widgets->cbtAddDevice,add_widgets->cbtAddWrite, add_widgets->chbAddWrite, add_widgets->spinAddWrite, 1); } void add_event(add_window *widgets) { @@ -422,43 +425,28 @@ char* add_get_select_device_to_level_2() { } char*** add_get_read_device() { - int index = 0; - if (!obj_add_config.i_o_limit_read) { - obj_add_config.i_o_limit_read = yon_char_parsed_append(obj_add_config.i_o_limit_read,&index, "-"); - obj_add_config.i_o_limit_read = yon_char_parsed_append(obj_add_config.i_o_limit_read,&index, NULL); - } + obj_add_config.i_o_limit_read = yon_char_parsed_append(obj_add_config.i_o_limit_read,&obj_add_config.size, NULL); + obj_add_config.size--; return &obj_add_config.i_o_limit_read; } int** add_get_read_device_size_pow() { - int index = 0; - if (!obj_add_config.i_o_limit_read_size) { - obj_add_config.i_o_limit_read_size = philos_int_append(obj_add_config.i_o_limit_read_size,&index, -1); - obj_add_config.i_o_limit_read_size = philos_int_append(obj_add_config.i_o_limit_read_size,&index, -2); - } + obj_add_config.i_o_limit_read_size = philos_int_append(obj_add_config.i_o_limit_read_size,&obj_add_config.size, -2); + obj_add_config.size--; return &obj_add_config.i_o_limit_read_size; } char*** add_get_write_device() { - int index = 0; - if (!obj_add_config.i_o_limit_write) { - obj_add_config.i_o_limit_write = yon_char_parsed_append(obj_add_config.i_o_limit_write, &index, "-"); - obj_add_config.i_o_limit_write = yon_char_parsed_append(obj_add_config.i_o_limit_write, &index, NULL); - } + obj_add_config.i_o_limit_write = yon_char_parsed_append(obj_add_config.i_o_limit_write, &obj_add_config.size, NULL); + obj_add_config.size--; return &obj_add_config.i_o_limit_write; } int** add_get_write_device_size_pow() { - int index = 0; - if (!obj_add_config.i_o_limit_write_size) { - obj_add_config.i_o_limit_write_size = philos_int_append(obj_add_config.i_o_limit_write_size,&index, -1); - obj_add_config.i_o_limit_write_size = philos_int_append(obj_add_config.i_o_limit_write_size,&index, -2); - } + obj_add_config.i_o_limit_write_size = philos_int_append(obj_add_config.i_o_limit_write_size,&obj_add_config.size, -2); + obj_add_config.size--; return &obj_add_config.i_o_limit_write_size; } char*** add_get_select_device() { - int index = 0; - if (!obj_add_config.disk) { - obj_add_config.disk = yon_char_parsed_append(obj_add_config.disk,&index, "-"); - obj_add_config.disk = yon_char_parsed_append(obj_add_config.disk,&index, NULL); - } + obj_add_config.disk = yon_char_parsed_append(obj_add_config.disk,&obj_add_config.size, NULL); + obj_add_config.size--; return &obj_add_config.disk; } -- 2.35.1 From b204172fc3608d143b3fcc687a12f3a0e56913be Mon Sep 17 00:00:00 2001 From: Igor Belitskiy Date: Thu, 22 Jun 2023 14:28:26 +0600 Subject: [PATCH 40/91] =?UTF-8?q?=D0=A7=D0=B0=D1=81=D1=82=D0=B8=D1=87?= =?UTF-8?q?=D0=BD=D0=BE=20=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D1=8B=20=D0=B1=D0=B0=D0=B3=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/ubl-settings-resourcequota.h | 2 +- source/ubl-utils.c | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/source/ubl-settings-resourcequota.h b/source/ubl-settings-resourcequota.h index dced028..0216428 100755 --- a/source/ubl-settings-resourcequota.h +++ b/source/ubl-settings-resourcequota.h @@ -43,7 +43,7 @@ #define CMD_GET_GROUP "cut -d: -f1 /etc/group" typedef char *string; -string version_application = "1.2-39-g7116610"; +string version_application = "1.2-40-g9853ebc"; static char *local; diff --git a/source/ubl-utils.c b/source/ubl-utils.c index 69bb7d6..3eca738 100644 --- a/source/ubl-utils.c +++ b/source/ubl-utils.c @@ -1550,7 +1550,7 @@ void philos_set_active_widgets(GtkWidget *check, GtkWidget *spin, GtkWidget *com gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check),1); } else if (active == 0) { - gtk_spin_button_set_digits(GTK_SPIN_BUTTON(spin), 0); + gtk_spin_button_set_value(GTK_SPIN_BUTTON(spin), 0); } if (flag_cpu == 0) { philos_set_spin_adjustment(check, spin, combo, get_resurs_total(cmd)); @@ -1587,7 +1587,7 @@ void philos_set_active_widgets_device_io(GtkWidget* combo_to_l2,GtkWidget *check if (menu_id != -1) { gboolean active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(check)); if (active == 0) { - gtk_spin_button_set_digits(GTK_SPIN_BUTTON(spin), 0); + gtk_spin_button_set_value(GTK_SPIN_BUTTON(spin), 0); } else if (gtk_spin_button_get_digits(GTK_SPIN_BUTTON(spin))>0) { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check),1); @@ -1596,7 +1596,7 @@ void philos_set_active_widgets_device_io(GtkWidget* combo_to_l2,GtkWidget *check gtk_widget_set_sensitive(combo, active); } else { - gtk_spin_button_set_digits(GTK_SPIN_BUTTON(spin), 0); + gtk_spin_button_set_value(GTK_SPIN_BUTTON(spin), 0); gtk_widget_set_sensitive(spin, 0); gtk_widget_set_sensitive(combo, 0); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check), 0); -- 2.35.1 From 505929e69efec03eef83cf9114cf913171a832f8 Mon Sep 17 00:00:00 2001 From: Igor Belitskiy Date: Thu, 22 Jun 2023 15:31:00 +0600 Subject: [PATCH 41/91] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D1=8B=20=D0=B8=D0=B7=D0=B1=D1=8B=D1=82=D0=BE?= =?UTF-8?q?=D1=87=D0=BD=D0=BE=D1=81=D1=82=D0=B8=20=D1=81=D1=82=D1=80=D0=BE?= =?UTF-8?q?=D0=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/ubl-settings-resourcequota.c | 50 ++++++++++++++++++----------- source/ubl-settings-resourcequota.h | 2 +- source/ubl-utils.c | 3 ++ source/view_add.c | 9 ++---- source/view_edit.c | 11 +++---- 5 files changed, 43 insertions(+), 32 deletions(-) diff --git a/source/ubl-settings-resourcequota.c b/source/ubl-settings-resourcequota.c index 04ed8ef..b367595 100644 --- a/source/ubl-settings-resourcequota.c +++ b/source/ubl-settings-resourcequota.c @@ -523,6 +523,12 @@ void get_param_io_limit(char** arr_values, int index_start, int size, int index_ } void set_size_memory_integer(char* str_find, char*** array_data, int index) { + char* simv_del_array[9] = {"K","M","G","T","k","m","g","t","%"}; + for (size_t i = 0; i < 9; i++) { + if (strstr(str_find, simv_del_array[i])) { + str_find = yon_char_divide_search(str_find, simv_del_array[i], -1); + } + } if (strstr(str_find, " ") != NULL) { char* mem_s = yon_char_new(str_find); yon_char_divide_search(mem_s, " ", -1); @@ -674,12 +680,13 @@ void fill_tree_view(int start, int size, int flag_gui_add) { gtk_list_store_append(main_config.list,&iter); char* str_io_read = format_io_limit_in_tree_view(main_config.disk, 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, 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], + 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], + 2,philos_format_cfg_str_size_memory("", main_config.soft_raw_limit[index],main_config.soft_raw_limit_size[index]), + 3,philos_format_cfg_str_size_memory("", main_config.hard_raw_limit[index],main_config.hard_raw_limit_size[index]), + 4,philos_format_cfg_str_size_memory("", main_config.swap[index],main_config.swap_size[index]), + 5,philos_format_cfg_str_size_memory("", main_config.cpu_limit[index], -1), 6,str_io_read, 7,str_io_write,-1); free(str_io_read); @@ -697,13 +704,18 @@ char* format_io_limit_in_tree_view(config_str* disk, config_str* i_o_limit, int* 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], NULL); + str = yon_char_unite(str, ",", + disk[index][index_to_n2], " ", + philos_format_cfg_str_size_memory(" ", i_o_limit[index][index_to_n2], i_o_limit_size[index][index_to_n2]), NULL); } else if (strstr(disk[index][index_to_n2], "-")){ str = yon_char_unite(str, ",", NULL); } - else { - str = yon_char_unite(str, disk[index][index_to_n2], " ", i_o_limit[index][index_to_n2], NULL); + else { + str = yon_char_unite(str, + disk[index][index_to_n2], " ", + philos_format_cfg_str_size_memory(" ", i_o_limit[index][index_to_n2], i_o_limit_size[index][index_to_n2]), NULL); + } index_to_n2++; } @@ -761,12 +773,13 @@ int tree_view_edit() { char* str_io_read = format_io_limit_in_tree_view(main_config.disk, 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, 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], + 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], + 2,philos_format_cfg_str_size_memory("",main_config.soft_raw_limit[index],main_config.soft_raw_limit_size[index]), + 3,philos_format_cfg_str_size_memory("",main_config.hard_raw_limit[index],main_config.hard_raw_limit_size[index]), + 4,philos_format_cfg_str_size_memory("",main_config.swap[index],main_config.swap_size[index]), + 5,philos_format_cfg_str_size_memory("",main_config.cpu_limit[index], -1), 6,str_io_read, 7,str_io_write,-1); return 1; @@ -1129,12 +1142,13 @@ void main_fill_tree_view_after_remove() { gtk_list_store_append(main_config.list,&iter); char* str_io_read = format_io_limit_in_tree_view(main_config.disk, 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, 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], + 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], + 2,philos_format_cfg_str_size_memory("",main_config.soft_raw_limit[index],main_config.soft_raw_limit_size[index]), + 3,philos_format_cfg_str_size_memory("",main_config.hard_raw_limit[index],main_config.hard_raw_limit_size[index]), + 4,philos_format_cfg_str_size_memory("",main_config.swap[index],main_config.swap_size[index]), + 5,philos_format_cfg_str_size_memory("",main_config.cpu_limit[index], -1), 6,str_io_read, 7,str_io_write,-1); } diff --git a/source/ubl-settings-resourcequota.h b/source/ubl-settings-resourcequota.h index 0216428..1a2e410 100755 --- a/source/ubl-settings-resourcequota.h +++ b/source/ubl-settings-resourcequota.h @@ -43,7 +43,7 @@ #define CMD_GET_GROUP "cut -d: -f1 /etc/group" typedef char *string; -string version_application = "1.2-40-g9853ebc"; +string version_application = "1.2-41-gb204172"; static char *local; diff --git a/source/ubl-utils.c b/source/ubl-utils.c index 3eca738..05ec421 100644 --- a/source/ubl-utils.c +++ b/source/ubl-utils.c @@ -672,6 +672,9 @@ void philos_split_size_memory(char* str_value, int* size, char* pow_memory) { char* philos_format_cfg_str_size_memory(char* str_key, char* str_source_value, int pow_size_memory) { char* str_value = yon_char_new(str_source_value); + if (strstr(str_value, "-")) { + return "-"; + } str_value = yon_char_divide_search(str_value, " ", -1); if (pow_size_memory==0) { return yon_char_unite(str_key, str_value, "K" ,NULL); diff --git a/source/view_add.c b/source/view_add.c index af9d4ce..3784bbe 100644 --- a/source/view_add.c +++ b/source/view_add.c @@ -467,12 +467,10 @@ int add_get_quota_object_size() { } char* add_get_soft() { - return philos_get_size_bite(add_widgets->chkSoftRestrictionAdd, add_widgets->spiSevereRestrictionAdd, - add_widgets->cmSevereRestrictionAdd); + return yon_char_from_int(gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(add_widgets->spiSevereRestrictionAdd))); } char* add_get_hard() { - return philos_get_size_bite(add_widgets->chkSevereRestrictionAdd, add_widgets->spinSevereRestrictionAdd, - add_widgets->cmbSevereRestrictionAdd); + return yon_char_from_int(gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(add_widgets->spinSevereRestrictionAdd))); } char* add_get_limit_cpu() { if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(add_widgets->chkCPULimitAdd))) { @@ -487,8 +485,7 @@ char* add_get_limit_cpu() { } } char* add_get_limit_swap() { - return philos_get_size_bite(add_widgets->chkPaddingFLAdd, add_widgets->spinPaddingFLAdd, - add_widgets->cmbPaddingFLAdd); + return yon_char_from_int(gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(add_widgets->spinPaddingFLAdd))); } char* add_get_quota_object() { return gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(add_widgets->cbxAddQuotaObj)); diff --git a/source/view_edit.c b/source/view_edit.c index 958912b..55662c3 100644 --- a/source/view_edit.c +++ b/source/view_edit.c @@ -183,17 +183,15 @@ char*** edit_get_select_device() { return &obj_edit_config.disk; } char* edit_get_soft() { - return philos_get_size_bite(edit_widgets->chkSoftRestrictionEdit, edit_widgets->spiSevereRestrictionEdit, - edit_widgets->cmSevereRestrictionEdit); + return yon_char_from_int(gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(edit_widgets->spiSevereRestrictionEdit))); } char* edit_get_hard() { - return philos_get_size_bite(edit_widgets->chkSevereRestrictionEdit, edit_widgets->spinSevereRestrictionEdit, - edit_widgets->cmbSevereRestrictionEdit); + return yon_char_from_int(gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(edit_widgets->spinSevereRestrictionEdit))); } char* edit_get_limit_cpu() { if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(edit_widgets->chkCPULimitEdit))) { int size_bite = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(edit_widgets->spinCPULimitEdit)); - return yon_char_unite(yon_char_from_int(size_bite), "%" ,NULL); + return yon_char_from_int(size_bite); } else { char* str = (char*)malloc(sizeof(char*)*2); @@ -203,8 +201,7 @@ char* edit_get_limit_cpu() { } } char* edit_get_limit_swap() { - return philos_get_size_bite(edit_widgets->chkPaddingFLEdit, edit_widgets->spinPaddingFLEdit, - edit_widgets->cmbPaddingFLEdit); + return yon_char_from_int(gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(edit_widgets->spinPaddingFLEdit))); } // ================================================================= -- 2.35.1 From 3f8aab0c5850ec4c8cb0d403440713ecb1882530 Mon Sep 17 00:00:00 2001 From: Igor Belitskiy Date: Thu, 22 Jun 2023 17:58:56 +0600 Subject: [PATCH 42/91] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB=20=D1=87=D0=B0=D1=81=D1=82=D1=8C=20=D0=B1=D0=B0?= =?UTF-8?q?=D0=B3=D0=BE=D0=B2=20=D1=81=20=D1=82=D0=B8=D0=BF=D0=B0=D0=BC?= =?UTF-8?q?=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/ubl-settings-resourcequota.c | 117 ++++++++++++++++------------ source/ubl-settings-resourcequota.h | 21 ++--- source/ubl-utils.c | 6 +- source/ubl-utils.h | 2 +- source/view_add.c | 72 ++++++++--------- source/view_add.h | 16 ++-- source/view_edit.c | 94 ++++++++++------------ source/view_edit.h | 30 +++---- 8 files changed, 178 insertions(+), 180 deletions(-) diff --git a/source/ubl-settings-resourcequota.c b/source/ubl-settings-resourcequota.c index b367595..b6858f5 100644 --- a/source/ubl-settings-resourcequota.c +++ b/source/ubl-settings-resourcequota.c @@ -275,12 +275,12 @@ void load_global_cfg() { void clear_array() { philos_free_string_array(&main_config.type_quota, main_config.size_tree_view); philos_free_string_array(&main_config.quota_volume , main_config.size_tree_view); - 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_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_int_array(&main_config.soft_raw_limit, main_config.size_tree_view); + philos_free_int_array(&main_config.hard_raw_limit, main_config.size_tree_view); + philos_free_int_array(&main_config.swap , main_config.size_tree_view); + philos_free_int_array(&main_config.cpu_limit, main_config.size_tree_view); + philos_free_int_array_n2(&main_config.i_o_limit_read, main_config.size_tree_view); + philos_free_int_array_n2(&main_config.i_o_limit_write, main_config.size_tree_view); philos_free_string_array_n3(&main_config.disk, main_config.size_tree_view); philos_free_string_array(&main_config.array_del_line, main_config.size_array_del_line); @@ -335,13 +335,10 @@ void init_cfg_array(int index) { //main_config.disk = yon_char_parsed_append(main_config.disk, &index, "-"); //index--; set_pow_size_memory("-", &main_config.type_quota_size, index); - set_size_memory_integer("-", &main_config.type_quota, index); + set_size_memory_integer_char("-", &main_config.type_quota, index); set_pow_size_memory("-", &main_config.quota_volume_size, index); - set_size_memory_integer("-", &main_config.quota_volume, index); - - set_pow_size_memory("-", &main_config.quota_volume_size, index); - set_size_memory_integer("-", &main_config.quota_volume, index); + set_size_memory_integer_char("-", &main_config.quota_volume, index); set_pow_size_memory("-", &main_config.cpu_limit_size, index); set_size_memory_integer("-", &main_config.cpu_limit, index); @@ -454,7 +451,7 @@ void str_split_value(char* values, int index) { void get_param_io_limit(char** arr_values, int index_start, int size, int index_n1, char *key_find) { - char** array_limit = NULL; + int* array_limit = NULL; char** array_disk = NULL; int* array_limit_size = NULL; int index_n2 = 0; @@ -495,40 +492,61 @@ void get_param_io_limit(char** arr_values, int index_start, int size, int index_ } } if (index_n2 != 0) { - array_limit = yon_char_parsed_append(array_limit, &index_n2, NULL); + array_limit = philos_int_append(array_limit, &index_n2, -2); index_n2--; array_disk = yon_char_parsed_append(array_disk, &index_n2, NULL); index_n2--; array_limit_size = philos_int_append(array_limit_size, &index_n2, -2); 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 = yon_remalloc(main_config.i_o_limit_read, (index_n1 + 1) * sizeof(int)); main_config.i_o_limit_read_size = yon_remalloc(main_config.i_o_limit_read_size, (index_n1 + 1) * sizeof(int*)); main_config.disk = yon_remalloc(main_config.disk, (index_n1 + 1) * sizeof(char**)); - yon_char_parsed_copy(&main_config.i_o_limit_read[index_n1], &array_limit); + philos_array_int_copy(&main_config.i_o_limit_read[index_n1], &array_limit); philos_array_int_copy(&main_config.i_o_limit_read_size[index_n1], &array_limit_size); yon_char_parsed_copy(&main_config.disk[index_n1], &array_disk); } 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 = yon_remalloc(main_config.i_o_limit_write, (index_n1 + 1) * sizeof(int)); main_config.i_o_limit_write_size = yon_remalloc(main_config.i_o_limit_write_size, (index_n1 + 1) * sizeof(int*)); main_config.disk = yon_remalloc(main_config.disk, (index_n1 + 1) * sizeof(char**)); - yon_char_parsed_copy(&main_config.i_o_limit_write[index_n1], &array_limit); + philos_array_int_copy(&main_config.i_o_limit_write[index_n1], &array_limit); philos_array_int_copy(&main_config.i_o_limit_write_size[index_n1], &array_limit_size); yon_char_parsed_copy(&main_config.disk[index_n1], &array_disk); } - philos_free_string_array(&array_limit, index_n2); + philos_free_int_array(&array_limit, index_n2); philos_free_string_array(&array_disk, index_n2); philos_free_int_array(&array_limit_size, index_n2); } } -void set_size_memory_integer(char* str_find, char*** array_data, int index) { +void set_size_memory_integer(char* str_find, int** array_data, int index) { + + if (strstr(str_find, " ")) { + yon_char_divide_search(str_find, " ", -1); + } char* simv_del_array[9] = {"K","M","G","T","k","m","g","t","%"}; for (size_t i = 0; i < 9; i++) { if (strstr(str_find, simv_del_array[i])) { str_find = yon_char_divide_search(str_find, simv_del_array[i], -1); } } + if (strstr(str_find, "-")==NULL) { + // Todo: Баг + puts(str_find); + printf("%d\n", strlen(str_find)); + *array_data = philos_int_append(*array_data, &index, atoi(str_find)); + } + + +} + +void set_size_memory_integer_char(char* str_find, char*** array_data, int index) { + char* simv_del_array[10] = {"K","M","G","T","k","m","g","t"," ","%"}; + for (size_t i = 0; i < 10; i++) { + if (strstr(str_find, simv_del_array[i])) { + str_find = yon_char_divide_search(str_find, simv_del_array[i], -1); + } + } if (strstr(str_find, " ") != NULL) { char* mem_s = yon_char_new(str_find); yon_char_divide_search(mem_s, " ", -1); @@ -549,7 +567,6 @@ void set_size_memory_integer(char* str_find, char*** array_data, int index) { } } - void set_pow_size_memory(char* str_find, int** array_size,int index) { size_t length = strlen(str_find); if (strstr(str_find,"K") != NULL) { @@ -628,26 +645,26 @@ void tree_view_add(int index) { main_config.size_tree_view--; main_config.quota_volume = yon_char_parsed_append(main_config.quota_volume, &main_config.size_tree_view, add_get_select_device_to_level_2()); main_config.size_tree_view--; - main_config.soft_raw_limit = yon_char_parsed_append(main_config.soft_raw_limit, &main_config.size_tree_view, add_get_soft()); + main_config.soft_raw_limit = philos_int_append(main_config.soft_raw_limit, &main_config.size_tree_view, add_get_soft()); main_config.size_tree_view--; - main_config.hard_raw_limit = yon_char_parsed_append(main_config.hard_raw_limit, &main_config.size_tree_view, add_get_hard()); + main_config.hard_raw_limit = philos_int_append(main_config.hard_raw_limit, &main_config.size_tree_view, add_get_hard()); main_config.size_tree_view--; - main_config.swap = yon_char_parsed_append(main_config.swap, &main_config.size_tree_view, add_get_limit_swap()); + main_config.swap = philos_int_append(main_config.swap, &main_config.size_tree_view, add_get_limit_swap()); 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.cpu_limit = philos_int_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_remalloc(main_config.i_o_limit_read, (main_config.size_tree_view + 1) * sizeof(char**)); + main_config.i_o_limit_read = yon_remalloc(main_config.i_o_limit_read, (main_config.size_tree_view + 1) * sizeof(int)); main_config.i_o_limit_read_size = yon_remalloc(main_config.i_o_limit_read_size, (main_config.size_tree_view + 1) * sizeof(int*)); main_config.disk = yon_remalloc(main_config.disk, (main_config.size_tree_view + 1) * sizeof(char**)); - yon_char_parsed_copy(&main_config.i_o_limit_read[main_config.size_tree_view], add_get_read_device()); + philos_array_int_copy(&main_config.i_o_limit_read[main_config.size_tree_view], add_get_read_device()); philos_array_int_copy(&main_config.i_o_limit_read_size[main_config.size_tree_view], add_get_read_device_size_pow()); yon_char_parsed_copy(&main_config.disk[main_config.size_tree_view], add_get_select_device()); - main_config.i_o_limit_write = yon_remalloc(main_config.i_o_limit_write, (main_config.size_tree_view + 1) * sizeof(char**)); + main_config.i_o_limit_write = yon_remalloc(main_config.i_o_limit_write, (main_config.size_tree_view + 1) * sizeof(int)); main_config.i_o_limit_write_size = yon_remalloc(main_config.i_o_limit_write_size, (main_config.size_tree_view + 1) * sizeof(int*)); main_config.disk = yon_remalloc(main_config.disk, (main_config.size_tree_view + 1) * sizeof(char**)); - yon_char_parsed_copy(&main_config.i_o_limit_write[main_config.size_tree_view], add_get_write_device()); + philos_array_int_copy(&main_config.i_o_limit_write[main_config.size_tree_view], add_get_write_device()); philos_array_int_copy(&main_config.i_o_limit_write_size[main_config.size_tree_view], add_get_write_device_size_pow()); main_config.type_quota_size = philos_int_append(main_config.type_quota_size, &main_config.size_tree_view, add_get_quota_object_size()); @@ -697,16 +714,16 @@ void fill_tree_view(int start, int size, int flag_gui_add) { } } -char* format_io_limit_in_tree_view(config_str* disk, config_str* i_o_limit, int** i_o_limit_size, int index) { +char* format_io_limit_in_tree_view(config_str* disk, int** i_o_limit, int** i_o_limit_size, int index) { int index_to_n2 = 0; char* str = ""; while (1) { if (i_o_limit[index]!= NULL) { - if (i_o_limit[index][index_to_n2] != NULL) { + if (i_o_limit[index][index_to_n2] != -2) { if (index_to_n2!=0) { str = yon_char_unite(str, ",", disk[index][index_to_n2], " ", - philos_format_cfg_str_size_memory(" ", i_o_limit[index][index_to_n2], i_o_limit_size[index][index_to_n2]), NULL); + philos_format_cfg_str_size_memory(" ", i_o_limit[index][index_to_n2] , i_o_limit_size[index][index_to_n2]), NULL); } else if (strstr(disk[index][index_to_n2], "-")){ str = yon_char_unite(str, ",", NULL); @@ -758,11 +775,11 @@ int tree_view_edit() { // philos_free_int_array(&main_config.i_o_limit_write_size[index], index); // philos_free_string_array(&main_config.disk[index], index); - yon_char_parsed_copy(&main_config.i_o_limit_read[index], edit_get_read_device()); + philos_array_int_copy(&main_config.i_o_limit_read[index], edit_get_read_device()); philos_array_int_copy(&main_config.i_o_limit_read_size[index], edit_get_read_device_size_pow()); yon_char_parsed_copy(&main_config.disk[index], edit_get_select_device()); - yon_char_parsed_copy(&main_config.i_o_limit_write[index], edit_get_write_device()); + philos_array_int_copy(&main_config.i_o_limit_write[index], edit_get_write_device()); philos_array_int_copy(&main_config.i_o_limit_write_size[index], edit_get_write_device_size_pow()); yon_char_parsed_copy(&main_config.disk[index], edit_get_select_device()); @@ -876,11 +893,11 @@ void wrapper_edit_show() { int index = atoi(str_iter); edit_show(NULL, glade_path); edit_set_select_device(&main_config.disk[index]); - edit_set_read_device(&main_config.i_o_limit_read[index], &main_config.i_o_limit_read_size[index]); + edit_set_read_device(main_config.i_o_limit_read[index], main_config.i_o_limit_read_size[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_write_device(main_config.i_o_limit_write[index], main_config.i_o_limit_write_size[index]); edit_init_windows(); edit_set_limit_swap(main_config.swap[index], main_config.swap_size[index]); edit_event(get_widget_edit()); @@ -916,19 +933,19 @@ void tree_view_del_line() { main_config.size_tree_view++; main_config.quota_volume = yon_char_parsed_shrink(main_config.quota_volume, &main_config.size_tree_view,index); main_config.size_tree_view++; - main_config.soft_raw_limit = yon_char_parsed_shrink(main_config.soft_raw_limit, &main_config.size_tree_view,index); + main_config.soft_raw_limit = remove_element_int_array(main_config.soft_raw_limit, &main_config.size_tree_view,index); main_config.size_tree_view++; - main_config.hard_raw_limit = yon_char_parsed_shrink(main_config.hard_raw_limit, &main_config.size_tree_view,index); + main_config.hard_raw_limit = remove_element_int_array(main_config.hard_raw_limit, &main_config.size_tree_view,index); main_config.size_tree_view++; - main_config.swap = yon_char_parsed_shrink(main_config.swap, &main_config.size_tree_view,index); + main_config.swap = remove_element_int_array(main_config.swap, &main_config.size_tree_view,index); 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.cpu_limit = remove_element_int_array(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_n3(main_config.i_o_limit_read, &main_config.size_tree_view,index); + main_config.i_o_limit_read = remove_element_int_array_n3(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_n3(main_config.i_o_limit_write, &main_config.size_tree_view,index); + main_config.i_o_limit_write = remove_element_int_array_n3(main_config.i_o_limit_write, &main_config.size_tree_view,index); main_config.size_tree_view++; - main_config.i_o_limit_write = yon_char_parsed_shrink_n3(main_config.disk, &main_config.size_tree_view,index); + main_config.disk = yon_char_parsed_shrink_n3(main_config.disk, &main_config.size_tree_view,index); main_config.size_tree_view++; main_config.i_o_limit_read_size = remove_element_int_array_n3(main_config.i_o_limit_read_size, &main_config.size_tree_view,index); @@ -1005,22 +1022,22 @@ char* save_format_value(int index) { char split_simvol[2] = {0}; split_simvol[0] = 0; split_simvol[1] = 0; - if (strstr(main_config.soft_raw_limit[index], "-") == NULL) { + if (main_config.soft_raw_limit[index]==0) { value = yon_char_unite(philos_format_cfg_str_size_memory("MemoryHigh=", main_config.soft_raw_limit[index],main_config.soft_raw_limit_size[index]),NULL); split_simvol[0] = ','; split_simvol[1] = '\0'; } - if (strstr(main_config.hard_raw_limit[index], "-") == NULL) { + if (main_config.hard_raw_limit[index]==0) { value = yon_char_unite(value ,split_simvol, philos_format_cfg_str_size_memory("MemoryMax=", main_config.hard_raw_limit[index],main_config.hard_raw_limit_size[index]), NULL); split_simvol[0] = ','; split_simvol[1] = '\0'; } - if (strstr(main_config.swap[index], "-") == NULL) { + if (main_config.swap[index]==0) { value = yon_char_unite(value ,split_simvol, philos_format_cfg_str_size_memory("MemorySwapMax=", main_config.swap[index],main_config.swap_size[index]), NULL); split_simvol[0] = ','; split_simvol[1] = '\0'; } - if (strstr(main_config.cpu_limit[index], "-") == NULL) { + if (main_config.cpu_limit[index]==0) { value = yon_char_unite(value ,split_simvol,"CPUQuota=", main_config.cpu_limit[index], NULL); split_simvol[0] = ','; split_simvol[1] = '\0'; @@ -1029,18 +1046,18 @@ char* save_format_value(int index) { value = add_io_str_format_ubconfig(value, "IOWriteBandwidthMax", main_config.i_o_limit_write, main_config.disk, index); return value; } -char* add_io_str_format_ubconfig(char* cmd_io, char* key, char*** i_o_limit, char*** disk, int index) { +char* add_io_str_format_ubconfig(char* cmd_io, char* key, int** i_o_limit, char*** disk, int index) { char split_simvol[2] = {0}; if (i_o_limit != NULL) { if (i_o_limit[index] != NULL) { if (i_o_limit[index] != NULL) { - for (int i = 0;i_o_limit[index][i] != NULL; i++) { + for (int i = 0;i_o_limit[index][i] != -2; i++) { if (i==0) { cmd_io = yon_char_unite(cmd_io, ",", key, "="); } - char* read_limit = i_o_limit[index][i]; + int read_limit = i_o_limit[index][i]; char* read_limit_disk = disk[index][i]; - cmd_io = yon_char_unite(cmd_io, split_simvol, read_limit_disk, " ", read_limit); + cmd_io = yon_char_unite(cmd_io, split_simvol, read_limit_disk, " ", yon_char_from_int(read_limit)); split_simvol[0] = ','; split_simvol[1] = '\0'; } diff --git a/source/ubl-settings-resourcequota.h b/source/ubl-settings-resourcequota.h index 1a2e410..1a5e948 100755 --- a/source/ubl-settings-resourcequota.h +++ b/source/ubl-settings-resourcequota.h @@ -43,7 +43,7 @@ #define CMD_GET_GROUP "cut -d: -f1 /etc/group" typedef char *string; -string version_application = "1.2-41-gb204172"; +string version_application = "1.2-42-g505929e"; static char *local; @@ -75,12 +75,12 @@ typedef struct render_data status_render; config_str type_quota; config_str quota_volume; - config_str soft_raw_limit; - config_str hard_raw_limit; - config_str swap; - config_str cpu_limit; - config_str* i_o_limit_read; - config_str* i_o_limit_write; + int* soft_raw_limit; + int* hard_raw_limit; + int* swap; + int* cpu_limit; + int** i_o_limit_read; + int** i_o_limit_write; config_str* disk; config_str array_del_line; int size_array_del_line; @@ -202,7 +202,8 @@ void load_system_cfg(); void load_global_cfg(); void template_load_cfg(char *cmd, dictionary *load_cfg); void str_split_value(char *values, int index); -void set_size_memory_integer(char* str_find, char*** array_data, int index); +void set_size_memory_integer(char* str_find, int** array_data, int index); +void set_size_memory_integer_char(char* str_find, char*** array_data, int index); void set_pow_size_memory(char* str_find, int** array_size, int index); void str_split_key(char *source_value, int index); void fill_tree_view(int start, int size, int flag_gui_add); @@ -217,5 +218,5 @@ char* template_format_str_remove_save(dictionary* load_cfg, char* source_remove_ char* template_format_str_set_save(dictionary* load_cfg, char* source_set_cmd); 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* add_io_str_format_ubconfig(char* cmd_io, char* key, char*** i_o_limit, char*** disk_read, int index); -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 +char* add_io_str_format_ubconfig(char* cmd_io, char* key, int** i_o_limit, char*** disk_read, int index); +char* format_io_limit_in_tree_view(config_str* disk, int** 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 05ec421..92a4a56 100644 --- a/source/ubl-utils.c +++ b/source/ubl-utils.c @@ -670,9 +670,9 @@ void philos_split_size_memory(char* str_value, int* size, char* pow_memory) { (*size) = atoi(yon_char_divide_search(pow_memory, " ", -1)); } -char* philos_format_cfg_str_size_memory(char* str_key, char* str_source_value, int pow_size_memory) { - char* str_value = yon_char_new(str_source_value); - if (strstr(str_value, "-")) { +char* philos_format_cfg_str_size_memory(char* str_key, int value, int pow_size_memory) { + char* str_value = yon_char_from_int(value); + if (value == 0) { return "-"; } str_value = yon_char_divide_search(str_value, " ", -1); diff --git a/source/ubl-utils.h b/source/ubl-utils.h index 8fa037e..5c7f52e 100644 --- a/source/ubl-utils.h +++ b/source/ubl-utils.h @@ -152,7 +152,7 @@ char *yon_char_replace(char *source, char *find, char*replace); void philos_split_size_memory(char* str_value, int* size, char* pow_memory); -char* philos_format_cfg_str_size_memory(char* str_key, char* str_source_value, int pow_size_memory); +char* philos_format_cfg_str_size_memory(char* str_key, int value, int pow_size_memory); char **yon_char_parse(char *parameters, int *size, char *divider); diff --git a/source/view_add.c b/source/view_add.c index 3784bbe..a453137 100644 --- a/source/view_add.c +++ b/source/view_add.c @@ -69,26 +69,26 @@ void update_device_to_entry(GtkWidget *combo_box, GtkWidget *combo_box_size, Gtk } if (index_find != -1) { if (flag_check_array==0) { - if (strstr(obj_add_config.i_o_limit_read[index_find],"-")) { + if (obj_add_config.i_o_limit_read[index_find]==-2) { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check_button), 0); gtk_spin_button_set_value(GTK_SPIN_BUTTON(spin), 0); gtk_combo_box_set_active(GTK_COMBO_BOX(combo_box_size), 0); } else { - gtk_spin_button_set_value(GTK_SPIN_BUTTON(spin), atoll(obj_add_config.i_o_limit_read[index_find])); + gtk_spin_button_set_value(GTK_SPIN_BUTTON(spin), obj_add_config.i_o_limit_read[index_find]); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check_button), 1); gtk_combo_box_set_active(GTK_COMBO_BOX(combo_box_size), obj_add_config.i_o_limit_read_size[index_find]); } } else if (flag_check_array==1) { - if (strstr(obj_add_config.i_o_limit_write[index_find],"-")) { + if (obj_add_config.i_o_limit_write[index_find]==-2) { gtk_spin_button_set_value(GTK_SPIN_BUTTON(spin), 0); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check_button), 0); gtk_combo_box_set_active(GTK_COMBO_BOX(combo_box_size), 0); } else { - gtk_spin_button_set_value(GTK_SPIN_BUTTON(spin), atoll(obj_add_config.i_o_limit_write[index_find])); + gtk_spin_button_set_value(GTK_SPIN_BUTTON(spin), obj_add_config.i_o_limit_write[index_find]); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check_button), 1); gtk_combo_box_set_active(GTK_COMBO_BOX(combo_box_size), obj_add_config.i_o_limit_write_size[index_find]); } @@ -115,9 +115,9 @@ void update_device_to_entry(GtkWidget *combo_box, GtkWidget *combo_box_size, Gtk void add_config_init() { if (obj_add_config.size != 0) { philos_free_string_array(&obj_add_config.disk, obj_add_config.size); - philos_free_string_array(&obj_add_config.i_o_limit_read, obj_add_config.size); + philos_free_int_array(&obj_add_config.i_o_limit_read, obj_add_config.size); philos_free_int_array(&obj_add_config.i_o_limit_read_size, obj_add_config.size); - philos_free_string_array(&obj_add_config.i_o_limit_write, obj_add_config.size); + philos_free_int_array(&obj_add_config.i_o_limit_write, obj_add_config.size); philos_free_int_array(&obj_add_config.i_o_limit_write_size, obj_add_config.size); } obj_add_config.disk = NULL; @@ -183,14 +183,14 @@ void add_del_disk() { obj_add_config.size++; obj_add_config.i_o_limit_write_size = remove_element_int_array(obj_add_config.i_o_limit_write_size,&obj_add_config.size, index_find); obj_add_config.size++; - obj_add_config.i_o_limit_read = yon_char_parsed_shrink(obj_add_config.i_o_limit_read,&obj_add_config.size, index_find); + obj_add_config.i_o_limit_read = remove_element_int_array(obj_add_config.i_o_limit_read,&obj_add_config.size, index_find); obj_add_config.size++; - obj_add_config.i_o_limit_write = yon_char_parsed_shrink(obj_add_config.i_o_limit_write,&obj_add_config.size, index_find); + obj_add_config.i_o_limit_write = remove_element_int_array(obj_add_config.i_o_limit_write,&obj_add_config.size, index_find); } } } -char* pard_array_add_cmd(char* cmd, char* key, char** array_io, int* array_io_pow_size) { +char* pard_array_add_cmd(char* cmd, char* key, int* array_io, int* array_io_pow_size) { char* split_simvol = g_malloc0(sizeof(char)*2); int flag_format = 0; char* cmd_old = yon_char_new(cmd); @@ -250,25 +250,25 @@ void add_disk_all(){ if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(add_widgets->chbAddRead))) { obj_add_config.i_o_limit_read_size = philos_int_append(obj_add_config.i_o_limit_read_size,&obj_add_config.size,(int)gtk_combo_box_get_active(GTK_COMBO_BOX(add_widgets->cbtAddRead))); obj_add_config.size--; - obj_add_config.i_o_limit_read = yon_char_parsed_append(obj_add_config.i_o_limit_read,&obj_add_config.size,yon_char_from_int(gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(add_widgets->spinAddRead)))); + obj_add_config.i_o_limit_read = philos_int_append(obj_add_config.i_o_limit_read,&obj_add_config.size,gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(add_widgets->spinAddRead))); obj_add_config.size--; } else { obj_add_config.i_o_limit_read_size = philos_int_append(obj_add_config.i_o_limit_read_size,&obj_add_config.size,-1); obj_add_config.size--; - obj_add_config.i_o_limit_read = yon_char_parsed_append(obj_add_config.i_o_limit_read,&obj_add_config.size,"-"); + obj_add_config.i_o_limit_read = philos_int_append(obj_add_config.i_o_limit_read,&obj_add_config.size,-1); obj_add_config.size--; } if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(add_widgets->chbAddWrite))) { obj_add_config.i_o_limit_write_size = philos_int_append(obj_add_config.i_o_limit_write_size,&obj_add_config.size,(int)gtk_combo_box_get_active(GTK_COMBO_BOX(add_widgets->cbtAddWrite))); obj_add_config.size--; - obj_add_config.i_o_limit_write = yon_char_parsed_append(obj_add_config.i_o_limit_write,&obj_add_config.size,yon_char_from_int(gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(add_widgets->spinAddWrite)))); + obj_add_config.i_o_limit_write = philos_int_append(obj_add_config.i_o_limit_write,&obj_add_config.size,gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(add_widgets->spinAddWrite))); obj_add_config.size--; } else { obj_add_config.i_o_limit_write_size = philos_int_append(obj_add_config.i_o_limit_write_size,&obj_add_config.size,-1); obj_add_config.size--; - obj_add_config.i_o_limit_write = yon_char_parsed_append(obj_add_config.i_o_limit_write,&obj_add_config.size,"-"); + obj_add_config.i_o_limit_write = philos_int_append(obj_add_config.i_o_limit_write,&obj_add_config.size,-1); obj_add_config.size--; } obj_add_config.size++; @@ -279,19 +279,19 @@ void add_disk_all(){ //obj_add_config.disk[index_find] = yon_char_new(disk); if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(add_widgets->chbAddRead))) { obj_add_config.i_o_limit_read_size[index_find] =(int)gtk_combo_box_get_active(GTK_COMBO_BOX(add_widgets->cbtAddRead)); - obj_add_config.i_o_limit_read[index_find] = yon_char_from_int(gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(add_widgets->spinAddRead))); + obj_add_config.i_o_limit_read[index_find] = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(add_widgets->spinAddRead)); } else { obj_add_config.i_o_limit_read_size[index_find] = -1; - obj_add_config.i_o_limit_read[index_find] = "-"; + obj_add_config.i_o_limit_read[index_find] = -1; } if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(add_widgets->chbAddWrite))) { obj_add_config.i_o_limit_write_size[index_find] = (int)gtk_combo_box_get_active(GTK_COMBO_BOX(add_widgets->cbtAddWrite)); - obj_add_config.i_o_limit_write[index_find] = yon_char_from_int(gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(add_widgets->spinAddWrite))); + obj_add_config.i_o_limit_write[index_find] = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(add_widgets->spinAddWrite)); } else { obj_add_config.i_o_limit_write_size[index_find] = -1; - obj_add_config.i_o_limit_write[index_find] = "-"; + obj_add_config.i_o_limit_write[index_find] = -1; } } } @@ -302,25 +302,25 @@ void add_disk_all(){ if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(add_widgets->chbAddRead))) { obj_add_config.i_o_limit_read_size = philos_int_append(obj_add_config.i_o_limit_read_size,&obj_add_config.size,(int)gtk_combo_box_get_active(GTK_COMBO_BOX(add_widgets->cbtAddRead))); obj_add_config.size--; - obj_add_config.i_o_limit_read = yon_char_parsed_append(obj_add_config.i_o_limit_read,&obj_add_config.size,yon_char_from_int(gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(add_widgets->spinAddRead)))); + obj_add_config.i_o_limit_read = philos_int_append(obj_add_config.i_o_limit_read,&obj_add_config.size,gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(add_widgets->spinAddRead))); obj_add_config.size--; } else { obj_add_config.i_o_limit_read_size = philos_int_append(obj_add_config.i_o_limit_read_size,&obj_add_config.size,-1); obj_add_config.size--; - obj_add_config.i_o_limit_read = yon_char_parsed_append(obj_add_config.i_o_limit_read,&obj_add_config.size,"-"); + obj_add_config.i_o_limit_read = philos_int_append(obj_add_config.i_o_limit_read,&obj_add_config.size,-1); obj_add_config.size--; } if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(add_widgets->chbAddWrite))) { obj_add_config.i_o_limit_write_size = philos_int_append(obj_add_config.i_o_limit_write_size,&obj_add_config.size,(int)gtk_combo_box_get_active(GTK_COMBO_BOX(add_widgets->cbtAddWrite))); obj_add_config.size--; - obj_add_config.i_o_limit_write = yon_char_parsed_append(obj_add_config.i_o_limit_write,&obj_add_config.size,yon_char_from_int(gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(add_widgets->spinAddWrite)))); + obj_add_config.i_o_limit_write = philos_int_append(obj_add_config.i_o_limit_write,&obj_add_config.size,gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(add_widgets->spinAddWrite))); obj_add_config.size--; } else { obj_add_config.i_o_limit_write_size = philos_int_append(obj_add_config.i_o_limit_write_size,&obj_add_config.size,-1); obj_add_config.size--; - obj_add_config.i_o_limit_write = yon_char_parsed_append(obj_add_config.i_o_limit_write,&obj_add_config.size,"-"); + obj_add_config.i_o_limit_write = philos_int_append(obj_add_config.i_o_limit_write,&obj_add_config.size,-1); obj_add_config.size--; } obj_add_config.size++; @@ -424,8 +424,8 @@ char* add_get_select_device_to_level_2() { } } -char*** add_get_read_device() { - obj_add_config.i_o_limit_read = yon_char_parsed_append(obj_add_config.i_o_limit_read,&obj_add_config.size, NULL); +int** add_get_read_device() { + obj_add_config.i_o_limit_read = philos_int_append(obj_add_config.i_o_limit_read,&obj_add_config.size, -2); obj_add_config.size--; return &obj_add_config.i_o_limit_read; } @@ -434,8 +434,8 @@ int** add_get_read_device_size_pow() { obj_add_config.size--; return &obj_add_config.i_o_limit_read_size; } -char*** add_get_write_device() { - obj_add_config.i_o_limit_write = yon_char_parsed_append(obj_add_config.i_o_limit_write, &obj_add_config.size, NULL); +int** add_get_write_device() { + obj_add_config.i_o_limit_write = philos_int_append(obj_add_config.i_o_limit_write, &obj_add_config.size, -2); obj_add_config.size--; return &obj_add_config.i_o_limit_write; } @@ -466,26 +466,22 @@ int add_get_quota_object_size() { return gtk_combo_box_get_active(GTK_COMBO_BOX(add_widgets->cbxAddQuotaObj)); } -char* add_get_soft() { - return yon_char_from_int(gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(add_widgets->spiSevereRestrictionAdd))); +int add_get_soft() { + return gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(add_widgets->spiSevereRestrictionAdd)); } -char* add_get_hard() { - return yon_char_from_int(gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(add_widgets->spinSevereRestrictionAdd))); +int add_get_hard() { + return gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(add_widgets->spinSevereRestrictionAdd)); } -char* add_get_limit_cpu() { +int add_get_limit_cpu() { if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(add_widgets->chkCPULimitAdd))) { - int size_bite = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(add_widgets->spinCPULimitAdd)); - return yon_char_from_int(size_bite); + return gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(add_widgets->spinCPULimitAdd)); } else { - char* str = (char*)malloc(sizeof(char*)*2); - str[0] = '-'; - str[1] = '\0'; - return str; + return 0; } } -char* add_get_limit_swap() { - return yon_char_from_int(gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(add_widgets->spinPaddingFLAdd))); +int add_get_limit_swap() { + return gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(add_widgets->spinPaddingFLAdd)); } char* add_get_quota_object() { return gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(add_widgets->cbxAddQuotaObj)); diff --git a/source/view_add.h b/source/view_add.h index 3a08e3c..a1e1b28 100644 --- a/source/view_add.h +++ b/source/view_add.h @@ -23,8 +23,8 @@ static char* CMD_GET_SLICE_SERVICE; typedef struct { config_str disk; - config_str i_o_limit_read; - config_str i_o_limit_write; + int* i_o_limit_read; + int* i_o_limit_write; int* i_o_limit_read_size; int* i_o_limit_write_size; int size; @@ -78,12 +78,12 @@ void add_set_active_widgets(GtkWidget *check, GtkWidget *spin, GtkWidget *combo, void add_init_windows(); void add_update_combo_box(); char*** add_get_select_device(); -char*** add_get_read_device(); -char*** add_get_write_device(); -char* add_get_soft(); -char* add_get_hard(); -char* add_get_limit_cpu(); -char* add_get_limit_swap(); +int** add_get_read_device(); +int** add_get_write_device(); +int add_get_soft(); +int add_get_hard(); +int add_get_limit_cpu(); +int add_get_limit_swap(); char* add_get_quota_object(); int** add_get_write_device_size_pow(); diff --git a/source/view_edit.c b/source/view_edit.c index 55662c3..6a225be 100644 --- a/source/view_edit.c +++ b/source/view_edit.c @@ -49,8 +49,8 @@ edit_window *edit_setup_window(char* glade_path){ void edit_config_init() { if (obj_edit_config.size != 0) { philos_free_string_array(&obj_edit_config.disk, obj_edit_config.size); - philos_free_string_array(&obj_edit_config.i_o_limit_read, obj_edit_config.size); - philos_free_string_array(&obj_edit_config.i_o_limit_write, obj_edit_config.size); + philos_free_int_array(&obj_edit_config.i_o_limit_read, obj_edit_config.size); + philos_free_int_array(&obj_edit_config.i_o_limit_write, obj_edit_config.size); philos_free_int_array(&obj_edit_config.i_o_limit_read_size, obj_edit_config.size); philos_free_int_array(&obj_edit_config.i_o_limit_write_size, obj_edit_config.size); } @@ -142,36 +142,24 @@ int edit_get_limit_swap_size() { return gtk_combo_box_get_active(GTK_COMBO_BOX(edit_widgets->cmbPaddingFLEdit)); } -char*** edit_get_read_device() { - int index = 0; - if (!obj_edit_config.i_o_limit_read) { - obj_edit_config.i_o_limit_read = yon_char_parsed_append(obj_edit_config.i_o_limit_read,&index, "-"); - obj_edit_config.i_o_limit_read = yon_char_parsed_append(obj_edit_config.i_o_limit_read,&index, NULL); - } +int** edit_get_read_device() { + obj_edit_config.i_o_limit_read = philos_int_append(obj_edit_config.i_o_limit_read,&obj_edit_config.size, -2); + obj_edit_config.size--; return &obj_edit_config.i_o_limit_read; } int** edit_get_read_device_size_pow() { - int index = 0; - if (!obj_edit_config.i_o_limit_read_size) { - obj_edit_config.i_o_limit_read_size = philos_int_append(obj_edit_config.i_o_limit_read_size,&index, -1); - obj_edit_config.i_o_limit_read_size = philos_int_append(obj_edit_config.i_o_limit_read_size,&index, -2); - } + obj_edit_config.i_o_limit_read_size = philos_int_append(obj_edit_config.i_o_limit_read_size,&obj_edit_config.size, -2); + obj_edit_config.size--; return &obj_edit_config.i_o_limit_read_size; } -char*** edit_get_write_device() { - int index = 0; - if (!obj_edit_config.i_o_limit_write) { - obj_edit_config.i_o_limit_write = yon_char_parsed_append(obj_edit_config.i_o_limit_write, &index, "-"); - obj_edit_config.i_o_limit_write = yon_char_parsed_append(obj_edit_config.i_o_limit_write, &index, NULL); - } +int** edit_get_write_device() { + obj_edit_config.i_o_limit_write = philos_int_append(obj_edit_config.i_o_limit_write, &obj_edit_config.size, -2); + obj_edit_config.size--; return &obj_edit_config.i_o_limit_write; } int** edit_get_write_device_size_pow() { - int index = 0; - if (!obj_edit_config.i_o_limit_write_size) { - obj_edit_config.i_o_limit_write_size = philos_int_append(obj_edit_config.i_o_limit_write_size,&index, -1); - obj_edit_config.i_o_limit_write_size = philos_int_append(obj_edit_config.i_o_limit_write_size,&index, -2); - } + obj_edit_config.i_o_limit_write_size = philos_int_append(obj_edit_config.i_o_limit_write_size,&obj_edit_config.size, -2); + obj_edit_config.size--; return &obj_edit_config.i_o_limit_write_size; } char*** edit_get_select_device() { @@ -182,26 +170,22 @@ char*** edit_get_select_device() { } return &obj_edit_config.disk; } -char* edit_get_soft() { - return yon_char_from_int(gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(edit_widgets->spiSevereRestrictionEdit))); +int edit_get_soft() { + return gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(edit_widgets->spiSevereRestrictionEdit)); } -char* edit_get_hard() { - return yon_char_from_int(gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(edit_widgets->spinSevereRestrictionEdit))); +int edit_get_hard() { + return gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(edit_widgets->spinSevereRestrictionEdit)); } -char* edit_get_limit_cpu() { +int edit_get_limit_cpu() { if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(edit_widgets->chkCPULimitEdit))) { - int size_bite = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(edit_widgets->spinCPULimitEdit)); - return yon_char_from_int(size_bite); + return gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(edit_widgets->spinCPULimitEdit)); } else { - char* str = (char*)malloc(sizeof(char*)*2); - str[0] = '-'; - str[1] = '\0'; - return str; + return 0; } } -char* edit_get_limit_swap() { - return yon_char_from_int(gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(edit_widgets->spinPaddingFLEdit))); +int edit_get_limit_swap() { + return gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(edit_widgets->spinPaddingFLEdit)); } // ================================================================= @@ -218,56 +202,56 @@ void edit_set_select_device(char*** str_value) { } -void edit_set_read_device(char*** str_value, int** pow_mem) { - if ((*str_value) == NULL || (*pow_mem) == NULL) { +void edit_set_read_device(int* str_value, int* pow_mem) { + if (str_value == NULL || pow_mem == NULL) { return; } - if ((*str_value)[0] == NULL || (*pow_mem)[0] == -2) { + if (str_value[0] == -2 || pow_mem[0] == -2) { return; } - edit_temp_set((*str_value)[0],(*pow_mem)[0], edit_widgets->chbEditRead, + edit_temp_set(str_value[0],pow_mem[0], edit_widgets->chbEditRead, edit_widgets->spinEditRead, edit_widgets->cbtEditRead); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(edit_widgets->chbEditRead), 1); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(edit_widgets->chbEditWrite), 1); } -void edit_set_write_device(char*** str_value, int** pow_mem) { - if ((*str_value) == NULL || (*pow_mem) == NULL) { +void edit_set_write_device(int* str_value, int* pow_mem) { + if (str_value == NULL || pow_mem == NULL) { return; } - if ((*str_value)[0] == NULL || (*pow_mem)[0] == -2) { + if (str_value[0] == -2 || pow_mem[0] == -2) { return; } else { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(edit_widgets->chbEditWrite), 1); } - edit_temp_set((*str_value)[0],(*pow_mem)[0], edit_widgets->chbEditWrite, + edit_temp_set(str_value[0],pow_mem[0], edit_widgets->chbEditWrite, edit_widgets->spinEditWrite, edit_widgets->cbtEditWrite); } -void edit_set_soft(char* str_value, int pow_mem) { - edit_temp_set(str_value,pow_mem, edit_widgets->chkSoftRestrictionEdit, +void edit_set_soft(int value, int pow_mem) { + edit_temp_set(value,pow_mem, edit_widgets->chkSoftRestrictionEdit, edit_widgets->spiSevereRestrictionEdit, edit_widgets->cmSevereRestrictionEdit); } -void edit_set_hard(char* str_value, int pow_mem) { - edit_temp_set(str_value,pow_mem, edit_widgets->chkSevereRestrictionEdit, +void edit_set_hard(int value, int pow_mem) { + edit_temp_set(value,pow_mem, edit_widgets->chkSevereRestrictionEdit, edit_widgets->spinSevereRestrictionEdit, edit_widgets->cmbSevereRestrictionEdit); } -void edit_set_limit_cpu(char* str_value, int pow_mem) { - edit_temp_set(str_value,pow_mem, edit_widgets->chkCPULimitEdit, +void edit_set_limit_cpu(int value, int pow_mem) { + edit_temp_set(value,pow_mem, edit_widgets->chkCPULimitEdit, edit_widgets->spinCPULimitEdit, NULL); } -void edit_set_limit_swap(char* str_value, int pow_mem) { - edit_temp_set(str_value,pow_mem, edit_widgets->chkPaddingFLEdit, +void edit_set_limit_swap(int value, int pow_mem) { + edit_temp_set(value,pow_mem, edit_widgets->chkPaddingFLEdit, edit_widgets->spinPaddingFLEdit, edit_widgets->cmbPaddingFLEdit); } -void edit_temp_set(char* str_value, int pow_mem, GtkWidget* cheek, GtkWidget* spin, GtkWidget* combo_box_text) { +void edit_temp_set(int value, int pow_mem, GtkWidget* cheek, GtkWidget* spin, GtkWidget* combo_box_text) { char* search = "-"; - char* mem_size_pow = yon_char_new(str_value); + char* mem_size_pow = yon_char_from_int(value); if (strstr(mem_size_pow, search) == 0) { int value = atoi(yon_char_divide_search(mem_size_pow, " ", -1)); gtk_spin_button_set_value(GTK_SPIN_BUTTON(spin), value); diff --git a/source/view_edit.h b/source/view_edit.h index 3a9e066..01a1341 100644 --- a/source/view_edit.h +++ b/source/view_edit.h @@ -19,8 +19,8 @@ // Переменные typedef struct { config_str disk; - config_str i_o_limit_read; - config_str i_o_limit_write; + int* i_o_limit_read; + int* i_o_limit_write; int* i_o_limit_read_size; int* i_o_limit_write_size; int size; @@ -69,22 +69,22 @@ void edit_init_windows(); void wrapper_edit_init_windows_size_memory(GtkWidget *spin); void edit_set_active_widgets(GtkWidget *check, GtkWidget *spin, GtkWidget *combo, int flag_cpu, char* cmd); char*** edit_get_select_device(); -char*** edit_get_read_device(); -char*** edit_get_write_device(); -char* edit_get_soft(); -char* edit_get_hard(); -char* edit_get_limit_cpu(); -char* edit_get_limit_swap(); +int** edit_get_read_device(); +int** edit_get_write_device(); +int edit_get_soft(); +int edit_get_hard(); +int edit_get_limit_cpu(); +int edit_get_limit_swap(); void edit_generate_cmd(); void wrapper_edit_show(); void edit_set_select_device(char*** str_value); -void edit_set_read_device(char*** str_value, int** pow_mem); -void edit_set_write_device(char*** str_value, int** pow_mem); -void edit_set_soft(char* str_value, int pow_mem); -void edit_set_hard(char* str_value, int pow_mem); -void edit_set_limit_cpu(char* str_value, int pow_mem); -void edit_set_limit_swap(char* str_value, int pow_mem); -void edit_temp_set(char* str_value, int pow_mem, GtkWidget* cheek, GtkWidget* spin, GtkWidget* combo_box_text); +void edit_set_read_device(int* str_value, int* pow_mem); +void edit_set_write_device(int* str_value, int* pow_mem); +void edit_set_soft(int value, int pow_mem); +void edit_set_hard(int value, int pow_mem); +void edit_set_limit_cpu(int value, int pow_mem); +void edit_set_limit_swap(int value, int pow_mem); +void edit_temp_set(int value, int pow_mem, GtkWidget* cheek, GtkWidget* spin, GtkWidget* combo_box_text); int** edit_get_read_device_size_pow(); int** edit_get_write_device_size_pow(); -- 2.35.1 From 708ecfc1ea2e7a1cd2c9d8d7f7a640cb88afe7ee Mon Sep 17 00:00:00 2001 From: Igor Belitskiy Date: Fri, 23 Jun 2023 17:54:54 +0600 Subject: [PATCH 43/91] =?UTF-8?q?=D0=A7=D0=B0=D1=81=D1=82=D0=B8=D1=87?= =?UTF-8?q?=D0=BD=D0=BE=20=D0=B3=D0=BE=D1=82=D0=BE=D0=B2=D0=B0=20=D0=B2?= =?UTF-8?q?=D0=B5=D1=80=D1=81=D0=B8=D1=8F=202.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/ubl-settings-resourcequota.c | 138 +++++--- source/ubl-settings-resourcequota.h | 4 +- source/ubl-utils.c | 339 +++++++++++++++++- source/ubl-utils.h | 58 ++++ source/view_add.c | 509 ++++++---------------------- source/view_add.h | 58 +--- source/view_edit.c | 283 +++++++--------- source/view_edit.h | 52 +-- 8 files changed, 730 insertions(+), 711 deletions(-) diff --git a/source/ubl-settings-resourcequota.c b/source/ubl-settings-resourcequota.c index b6858f5..82b7788 100644 --- a/source/ubl-settings-resourcequota.c +++ b/source/ubl-settings-resourcequota.c @@ -498,7 +498,7 @@ void get_param_io_limit(char** arr_values, int index_start, int size, int index_ index_n2--; array_limit_size = philos_int_append(array_limit_size, &index_n2, -2); if (strstr(key_find, "IOReadBandwidthMax")!=NULL) { - main_config.i_o_limit_read = yon_remalloc(main_config.i_o_limit_read, (index_n1 + 1) * sizeof(int)); + main_config.i_o_limit_read = yon_remalloc(main_config.i_o_limit_read, (index_n1 + 1) * sizeof(int*)); main_config.i_o_limit_read_size = yon_remalloc(main_config.i_o_limit_read_size, (index_n1 + 1) * sizeof(int*)); main_config.disk = yon_remalloc(main_config.disk, (index_n1 + 1) * sizeof(char**)); philos_array_int_copy(&main_config.i_o_limit_read[index_n1], &array_limit); @@ -506,7 +506,7 @@ void get_param_io_limit(char** arr_values, int index_start, int size, int index_ yon_char_parsed_copy(&main_config.disk[index_n1], &array_disk); } else { - main_config.i_o_limit_write = yon_remalloc(main_config.i_o_limit_write, (index_n1 + 1) * sizeof(int)); + main_config.i_o_limit_write = yon_remalloc(main_config.i_o_limit_write, (index_n1 + 1) * sizeof(int*)); main_config.i_o_limit_write_size = yon_remalloc(main_config.i_o_limit_write_size, (index_n1 + 1) * sizeof(int*)); main_config.disk = yon_remalloc(main_config.disk, (index_n1 + 1) * sizeof(char**)); philos_array_int_copy(&main_config.i_o_limit_write[index_n1], &array_limit); @@ -520,7 +520,6 @@ void get_param_io_limit(char** arr_values, int index_start, int size, int index_ } void set_size_memory_integer(char* str_find, int** array_data, int index) { - if (strstr(str_find, " ")) { yon_char_divide_search(str_find, " ", -1); } @@ -531,11 +530,11 @@ void set_size_memory_integer(char* str_find, int** array_data, int index) { } } if (strstr(str_find, "-")==NULL) { - // Todo: Баг - puts(str_find); - printf("%d\n", strlen(str_find)); *array_data = philos_int_append(*array_data, &index, atoi(str_find)); } + else { + *array_data = philos_int_append(*array_data, &index, -1); + } } @@ -654,14 +653,14 @@ void tree_view_add(int index) { main_config.cpu_limit = philos_int_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_remalloc(main_config.i_o_limit_read, (main_config.size_tree_view + 1) * sizeof(int)); + main_config.i_o_limit_read = yon_remalloc(main_config.i_o_limit_read, (main_config.size_tree_view + 1) * sizeof(int*)); main_config.i_o_limit_read_size = yon_remalloc(main_config.i_o_limit_read_size, (main_config.size_tree_view + 1) * sizeof(int*)); main_config.disk = yon_remalloc(main_config.disk, (main_config.size_tree_view + 1) * sizeof(char**)); philos_array_int_copy(&main_config.i_o_limit_read[main_config.size_tree_view], add_get_read_device()); philos_array_int_copy(&main_config.i_o_limit_read_size[main_config.size_tree_view], add_get_read_device_size_pow()); yon_char_parsed_copy(&main_config.disk[main_config.size_tree_view], add_get_select_device()); - main_config.i_o_limit_write = yon_remalloc(main_config.i_o_limit_write, (main_config.size_tree_view + 1) * sizeof(int)); + main_config.i_o_limit_write = yon_remalloc(main_config.i_o_limit_write, (main_config.size_tree_view + 1) * sizeof(int*)); main_config.i_o_limit_write_size = yon_remalloc(main_config.i_o_limit_write_size, (main_config.size_tree_view + 1) * sizeof(int*)); main_config.disk = yon_remalloc(main_config.disk, (main_config.size_tree_view + 1) * sizeof(char**)); philos_array_int_copy(&main_config.i_o_limit_write[main_config.size_tree_view], add_get_write_device()); @@ -718,21 +717,34 @@ char* format_io_limit_in_tree_view(config_str* disk, int** i_o_limit, int** i_o_ int index_to_n2 = 0; char* str = ""; while (1) { + if (i_o_limit == NULL) {break;} if (i_o_limit[index]!= NULL) { if (i_o_limit[index][index_to_n2] != -2) { if (index_to_n2!=0) { - str = yon_char_unite(str, ",", - disk[index][index_to_n2], " ", - philos_format_cfg_str_size_memory(" ", i_o_limit[index][index_to_n2] , i_o_limit_size[index][index_to_n2]), NULL); + if (!strstr(str, "-")) { + char* num_and_pow_size = philos_format_cfg_str_size_memory(" ", i_o_limit[index][index_to_n2] , i_o_limit_size[index][index_to_n2]); + if (!strstr(num_and_pow_size, "-")) { + str = yon_char_unite(str, ",", + disk[index][index_to_n2], " ", + num_and_pow_size, NULL); + } + free(num_and_pow_size); + } + } else if (strstr(disk[index][index_to_n2], "-")){ str = yon_char_unite(str, ",", NULL); } - else { - str = yon_char_unite(str, - disk[index][index_to_n2], " ", - philos_format_cfg_str_size_memory(" ", i_o_limit[index][index_to_n2], i_o_limit_size[index][index_to_n2]), NULL); - + else { + if (!strstr(str, "-")) { + char* num_and_pow_size = philos_format_cfg_str_size_memory(" ", i_o_limit[index][index_to_n2], i_o_limit_size[index][index_to_n2]); + if (!strstr(num_and_pow_size, "-")) { + str = yon_char_unite(str, + disk[index][index_to_n2], " ", + num_and_pow_size, NULL); + } + free(num_and_pow_size); + } } index_to_n2++; } @@ -746,10 +758,8 @@ char* format_io_limit_in_tree_view(config_str* disk, int** i_o_limit, int** i_o_ } - if (str == NULL) { - str = (char*)malloc(sizeof(char*)*2); - str[0] = '-'; - str[1] = '\0'; + if (strlen(str)==0) { + return yon_char_new("-"); } return str; } @@ -872,7 +882,7 @@ void main_event(main_window *widgets) { } void wrapper_add_show(GtkWidget *self) { add_show(NULL, glade_path); - g_signal_connect(G_OBJECT(get_widget_add()->btnSaveAddSave), "clicked", G_CALLBACK(main_add_btn_save), NULL); + g_signal_connect(G_OBJECT(get_widget_add()->btnSaveTempSave), "clicked", G_CALLBACK(main_add_btn_save), NULL); } void main_add_btn_save() { tree_view_add(main_config.size_tree_view); @@ -901,7 +911,7 @@ void wrapper_edit_show() { edit_init_windows(); edit_set_limit_swap(main_config.swap[index], main_config.swap_size[index]); edit_event(get_widget_edit()); - g_signal_connect(G_OBJECT(get_widget_edit()->btnSaveEditSave), "clicked", G_CALLBACK(main_edit_btn_save), NULL); + g_signal_connect(G_OBJECT(get_widget_edit()->btnSaveTempSave), "clicked", G_CALLBACK(main_edit_btn_save), NULL); edit_init_windows(); } } @@ -1018,48 +1028,84 @@ char* save_format_key(int index) { } char* save_format_value(int index) { - char* value = NULL; + char* value = ""; char split_simvol[2] = {0}; split_simvol[0] = 0; split_simvol[1] = 0; if (main_config.soft_raw_limit[index]==0) { - value = yon_char_unite(philos_format_cfg_str_size_memory("MemoryHigh=", main_config.soft_raw_limit[index],main_config.soft_raw_limit_size[index]),NULL); - split_simvol[0] = ','; - split_simvol[1] = '\0'; + char* value1 = yon_char_unite(philos_format_cfg_str_size_memory("MemoryHigh=", main_config.soft_raw_limit[index],main_config.soft_raw_limit_size[index]),NULL); + if (strstr(value1,"-")) { + free(value1); + } + else { + value = yon_char_new(value1); + free(value1); + split_simvol[0] = ','; + split_simvol[1] = '\0'; + } } if (main_config.hard_raw_limit[index]==0) { - value = yon_char_unite(value ,split_simvol, philos_format_cfg_str_size_memory("MemoryMax=", main_config.hard_raw_limit[index],main_config.hard_raw_limit_size[index]), NULL); - split_simvol[0] = ','; - split_simvol[1] = '\0'; + char* value1 = yon_char_unite(value ,split_simvol, philos_format_cfg_str_size_memory("MemoryMax=", main_config.hard_raw_limit[index],main_config.hard_raw_limit_size[index]), NULL); + if (strstr(value1,"-")) { + free(value1); + } + else { + value = yon_char_new(value1); + free(value1); + split_simvol[0] = ','; + split_simvol[1] = '\0'; + } } if (main_config.swap[index]==0) { - value = yon_char_unite(value ,split_simvol, philos_format_cfg_str_size_memory("MemorySwapMax=", main_config.swap[index],main_config.swap_size[index]), NULL); - split_simvol[0] = ','; - split_simvol[1] = '\0'; + char* value1 = yon_char_unite(value ,split_simvol, philos_format_cfg_str_size_memory("MemorySwapMax=", main_config.swap[index],main_config.swap_size[index]), NULL); + if (strstr(value1,"-")) { + free(value1); + } + else { + value = yon_char_new(value1); + free(value1); + split_simvol[0] = ','; + split_simvol[1] = '\0'; + } } if (main_config.cpu_limit[index]==0) { - value = yon_char_unite(value ,split_simvol,"CPUQuota=", main_config.cpu_limit[index], NULL); - split_simvol[0] = ','; - split_simvol[1] = '\0'; + char* value1 = yon_char_unite(value ,split_simvol,"CPUQuota=", main_config.cpu_limit[index], NULL); + if (strstr(value1,"-")) { + free(value1); + } + else { + value = yon_char_new(value1); + free(value1); + split_simvol[0] = ','; + split_simvol[1] = '\0'; + } } - value = add_io_str_format_ubconfig(value, "IOReadBandwidthMax", main_config.i_o_limit_read, main_config.disk, index); - value = add_io_str_format_ubconfig(value, "IOWriteBandwidthMax", main_config.i_o_limit_write, main_config.disk, index); + value = add_io_str_format_ubconfig(value, "IOReadBandwidthMax", main_config.i_o_limit_read, main_config.i_o_limit_read_size, main_config.disk, index); + value = add_io_str_format_ubconfig(value, "IOWriteBandwidthMax", main_config.i_o_limit_write, main_config.i_o_limit_write_size, main_config.disk, index); return value; } -char* add_io_str_format_ubconfig(char* cmd_io, char* key, int** i_o_limit, char*** disk, int index) { +char* add_io_str_format_ubconfig(char* cmd_io, char* key, int** i_o_limit, int** i_o_limit_size, char*** disk, int index) { char split_simvol[2] = {0}; - if (i_o_limit != NULL) { + if (i_o_limit) { if (i_o_limit[index] != NULL) { if (i_o_limit[index] != NULL) { for (int i = 0;i_o_limit[index][i] != -2; i++) { - if (i==0) { - cmd_io = yon_char_unite(cmd_io, ",", key, "="); + if (i==0 && strlen(cmd_io) == 0) { + cmd_io = yon_char_unite(cmd_io, ",", key, "=", NULL); + } + if (cmd_io == NULL) { + cmd_io = yon_char_new(""); } int read_limit = i_o_limit[index][i]; - char* read_limit_disk = disk[index][i]; - cmd_io = yon_char_unite(cmd_io, split_simvol, read_limit_disk, " ", yon_char_from_int(read_limit)); - split_simvol[0] = ','; - split_simvol[1] = '\0'; + char* read_disk = disk[index][i]; + int read_limit_size = i_o_limit_size[index][i]; + if (read_limit >= 0 && read_disk && read_limit_size >= 0) { + char* num_and_pow_size = philos_format_cfg_str_size_memory("",read_limit, read_limit_size); + cmd_io = yon_char_unite(cmd_io, split_simvol, read_disk, " ",num_and_pow_size, NULL); + split_simvol[0] = ','; + split_simvol[1] = '\0'; + } + } } } @@ -1112,7 +1158,7 @@ char* template_format_str_set_save(dictionary* load_cfg, char* source_set_cmd) { key = yon_char_new(save_format_key(index)); value = yon_char_new(save_format_value(index)); if (key != NULL && value != NULL) { - cmd = yon_char_unite(cmd, " " , key, "=" , value, NULL); + cmd = yon_char_unite(cmd, " " , key, "=\"" , value, "\"\n", NULL); flag_save = 1; } if (key != NULL) { diff --git a/source/ubl-settings-resourcequota.h b/source/ubl-settings-resourcequota.h index 1a5e948..0a6a4c6 100755 --- a/source/ubl-settings-resourcequota.h +++ b/source/ubl-settings-resourcequota.h @@ -43,7 +43,7 @@ #define CMD_GET_GROUP "cut -d: -f1 /etc/group" typedef char *string; -string version_application = "1.2-42-g505929e"; +string version_application = "1.2-43-g3f8aab0"; static char *local; @@ -218,5 +218,5 @@ char* template_format_str_remove_save(dictionary* load_cfg, char* source_remove_ char* template_format_str_set_save(dictionary* load_cfg, char* source_set_cmd); 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* add_io_str_format_ubconfig(char* cmd_io, char* key, int** i_o_limit, char*** disk_read, int index); +char* add_io_str_format_ubconfig(char* cmd_io, char* key, int** i_o_limit, int** i_o_limit_size, char*** disk_read, int index); char* format_io_limit_in_tree_view(config_str* disk, int** 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 92a4a56..8becf1d 100644 --- a/source/ubl-utils.c +++ b/source/ubl-utils.c @@ -671,10 +671,10 @@ void philos_split_size_memory(char* str_value, int* size, char* pow_memory) { } char* philos_format_cfg_str_size_memory(char* str_key, int value, int pow_size_memory) { - char* str_value = yon_char_from_int(value); - if (value == 0) { - return "-"; + if (value == -1 || pow_size_memory == -3) { + return yon_char_new("-"); } + char* str_value = yon_char_from_int(value); str_value = yon_char_divide_search(str_value, " ", -1); if (pow_size_memory==0) { return yon_char_unite(str_key, str_value, "K" ,NULL); @@ -884,12 +884,18 @@ void yon_int_array_append(int **source, int append){ void philos_array_int_copy(int** source, int** copy) { int * new_int = g_malloc0(sizeof(int)*2); new_int[0] = (*copy)[0]; - new_int[1] = -2; - int i = 2; - for (i=1;(*copy)[i]!=-2;i++) { - yon_int_array_append(&new_int,(*copy)[i]); + if ((*copy)[0] == -2) { + yon_int_array_append(&new_int,(*copy)[0]); + } + else { + new_int[1] = -2; + int i = 2; + for (i=1;(*copy)[i]!=-2;i++) { + yon_int_array_append(&new_int,(*copy)[i]); + } } *source=new_int; + } // parsing functions @@ -1125,7 +1131,326 @@ char** philos_pars_terminal_systemd_cgls(char* CMD_GET_SLICE_SERVICE, char* str_ } return array_data; } +char* philos_pard_array_add_cmd(char* cmd, temp_config* _config, char* key, int* array_io, int* array_io_pow_size) { + char* split_simvol = g_malloc0(sizeof(char)*2); + int flag_format = 0; + char* cmd_old = yon_char_new(cmd); + if (_config->disk && _config->size && array_io && array_io_pow_size) { + int index_find = 0; + for (int index = 0; index < _config->size; index++) { + if (index==0) { + if (strlen(cmd)>1) { + cmd = yon_char_unite(cmd, ",", key, NULL); + } + else { + cmd = yon_char_unite(cmd, key, NULL); + } + + } + if (array_io_pow_size[index] != -1 && array_io[index]!=-2 && array_io[index]!=-1) { + char* num_and_pow_size = philos_format_cfg_str_size_memory(" ", array_io[index], array_io_pow_size[index]); + cmd = yon_char_unite(cmd, + split_simvol, + _config->disk[index], + num_and_pow_size, NULL); + split_simvol[0] = ','; + split_simvol[1] = '\0'; + flag_format = 1; + free(num_and_pow_size); + } + } + } + free(split_simvol); + if (flag_format) { + return cmd; + } + else { + return cmd_old; + } + +} +int philos_check_activ_disk(temp_set_window *widgets, temp_config* _config) { + char* disk = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(widgets->cbtTempDevice)); + disk = yon_char_divide_search(disk," ", -1); + int bool_read = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->chbTempRead)); + int bool_write = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->chbTempWrite)); + if (disk == NULL || _config->size == 0) { + return 0; + } + return 1; +} + +void philos_temp_generate_cmd(temp_set_window *widgets, temp_config* _config) { + char* str_cmd = ""; + char* split_simvol = g_malloc0(sizeof(char)*2); + int size_bite = 0; + if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->chkSoftRestrictionTemp))) { + size_bite = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(widgets->spiSevereRestrictionTemp)); + str_cmd = yon_char_unite(str_cmd, + "MemoryHigh=", + yon_char_from_int(size_bite), + philos_str_size_pow_byte(widgets->cmSevereRestrictionTemp), NULL); + split_simvol[0] = ','; + split_simvol[1] = '\0'; + } + if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->chkSevereRestrictionTemp))) { + size_bite = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(widgets->spinSevereRestrictionTemp)); + str_cmd = yon_char_unite(str_cmd, split_simvol, + "MemoryMax=", + yon_char_from_int(size_bite), + philos_str_size_pow_byte(widgets->cmbSevereRestrictionTemp), NULL); + split_simvol[0] = ','; + split_simvol[1] = '\0'; + } + if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->chkPaddingFLTemp))) { + size_bite = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(widgets->spinPaddingFLTemp)); + str_cmd = yon_char_unite(str_cmd, split_simvol, + "MemorySwapMax=", + yon_char_from_int(size_bite), + philos_str_size_pow_byte(widgets->cmbPaddingFLTemp), NULL); + split_simvol[0] = ','; + split_simvol[1] = '\0'; + } + if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->chkCPULimitTemp))) { + size_bite = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(widgets->spinCPULimitTemp)); + str_cmd = yon_char_unite(str_cmd, split_simvol, + "CPUQuota=", + yon_char_from_int(size_bite), + "%", NULL); + split_simvol[0] = ','; + split_simvol[1] = '\0'; + } + if (gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->cbtTempDevice))!=-1) { + if (_config->size!=0) { + str_cmd = philos_pard_array_add_cmd(str_cmd, _config, "IOReadBandwidthMax=", _config->i_o_limit_read, _config->i_o_limit_read_size); + str_cmd = philos_pard_array_add_cmd(str_cmd, _config, "IOWriteBandwidthMax=", _config->i_o_limit_write, _config->i_o_limit_write_size); + } + + } + + + gtk_entry_set_text(GTK_ENTRY(widgets->entryTempCmd), str_cmd); + free(split_simvol); +} +void philos_temp_del_disk(temp_set_window *widgets, temp_config* _config) { + char* disk = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(widgets->cbtTempDevice)); + disk = yon_char_divide_search(disk, " ", -1); + int bool_read = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->chbTempRead)); + int bool_write = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->chbTempWrite)); + if (philos_check_activ_disk(widgets, _config) == 0) { + return; + } + if (_config->disk && _config->size) { + int index_find = -1; + for (int index = 0; index < _config->size; index++) { + char* disk_cfg = _config->disk[index]; + if (strstr(disk_cfg, disk) != NULL) { + index_find = index; + break; + } + } + if ((bool_read == 0 && bool_write == 0 && index_find != -1)) { + _config->disk = yon_char_parsed_shrink(_config->disk,&_config->size, index_find); + _config->size++; + _config->i_o_limit_read_size = remove_element_int_array(_config->i_o_limit_read_size,&_config->size, index_find); + _config->size++; + _config->i_o_limit_write_size = remove_element_int_array(_config->i_o_limit_write_size,&_config->size, index_find); + _config->size++; + _config->i_o_limit_read = remove_element_int_array(_config->i_o_limit_read,&_config->size, index_find); + _config->size++; + _config->i_o_limit_write = remove_element_int_array(_config->i_o_limit_write,&_config->size, index_find); + } + } +} +void philos_temp_config_init(temp_config* _config) { + if (_config->size != 0) { + philos_free_string_array(&_config->disk, _config->size); + philos_free_int_array(&_config->i_o_limit_read, _config->size); + philos_free_int_array(&_config->i_o_limit_read_size, _config->size); + philos_free_int_array(&_config->i_o_limit_write, _config->size); + philos_free_int_array(&_config->i_o_limit_write_size, _config->size); + } + _config->disk = NULL; + _config->i_o_limit_read = NULL; + _config->i_o_limit_write = NULL; + _config->i_o_limit_read_size = NULL; + _config->i_o_limit_write_size = NULL; + _config->size = 0; +} +// flag_check_array = 0 READ +// flag_check_array = 1 WRITE +void philos_update_device_to_entry(temp_set_window *widgets, temp_config* _config, int flag_check_array) { + int disk_id = gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->cbtTempDevice)); + char* disk = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(widgets->cbtTempDevice)); + disk = yon_char_divide_search(disk, " ", -1); + if (disk_id != -1) { + int index_find = -1; + for (int index = 0; index < _config->size; index++) { + char* disk_cfg = _config->disk[index]; + if (strstr(disk_cfg, disk) != NULL) { + index_find = index; + break; + } + } + printf("%d\n", index_find); + + if (index_find != -1) { + printf("%d\n", _config->i_o_limit_read[index_find]); + if (flag_check_array==0) { + if (_config->i_o_limit_read[index_find]==-2 || _config->i_o_limit_read[index_find]==-1) { + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widgets->chbTempRead), 0); + gtk_spin_button_set_value(GTK_SPIN_BUTTON(widgets->spinTempRead), 0); + gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->cbtTempRead), 0); + } + else { + gtk_spin_button_set_value(GTK_SPIN_BUTTON(widgets->spinTempRead), _config->i_o_limit_read[index_find]); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widgets->chbTempRead), 1); + gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->cbtTempRead), _config->i_o_limit_read_size[index_find]); + + } + } + else if (flag_check_array==1) { + if (_config->i_o_limit_write[index_find]==-2 || _config->i_o_limit_write[index_find]==-1) { + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widgets->chbTempWrite), 0); + gtk_spin_button_set_value(GTK_SPIN_BUTTON(widgets->spinTempWrite), 0); + gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->cbtTempWrite), 0); + } + else { + gtk_spin_button_set_value(GTK_SPIN_BUTTON(widgets->spinTempWrite), _config->i_o_limit_write[index_find]); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widgets->chbTempWrite), 1); + gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->cbtTempWrite), _config->i_o_limit_write_size[index_find]); + } + } + else { + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widgets->chbTempWrite), 0); + gtk_spin_button_set_value(GTK_SPIN_BUTTON(widgets->spinTempWrite), 0); + gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->cbtTempWrite), 0); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widgets->chbTempRead), 0); + gtk_spin_button_set_value(GTK_SPIN_BUTTON(widgets->spinTempRead), 0); + gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->cbtTempRead), 0); + } + } + else { + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widgets->chbTempWrite), 0); + gtk_spin_button_set_value(GTK_SPIN_BUTTON(widgets->spinTempWrite), 0); + gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->cbtTempWrite), 0); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widgets->chbTempRead), 0); + gtk_spin_button_set_value(GTK_SPIN_BUTTON(widgets->spinTempRead), 0); + gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->cbtTempRead), 0); + } + } + else { + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widgets->chbTempWrite), 0); + gtk_spin_button_set_value(GTK_SPIN_BUTTON(widgets->spinTempWrite), 0); + gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->cbtTempWrite), 0); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widgets->chbTempRead), 0); + gtk_spin_button_set_value(GTK_SPIN_BUTTON(widgets->spinTempRead), 0); + gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->cbtTempRead), 0); + } +} + +void philos_temp_add_disk(temp_set_window *widgets, temp_config* _config){ + char* disk = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(widgets->cbtTempDevice)); + disk = yon_char_divide_search(disk, " ", -1); + int disk_id = gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->cbtTempDevice)); + int bool_read = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->chbTempRead)); + int bool_write = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->chbTempWrite)); + if (disk_id >= 0 && _config->size !=0) { + int index_find = -1; + for (int index = 0; index < _config->size; index++) { + char* disk_cfg = _config->disk[index]; + if (strstr(disk_cfg, disk) != NULL) { + index_find = index; + break; + } + } + if (index_find == -1) { + // Добавление + _config->disk = yon_char_parsed_append(_config->disk,&_config->size, disk); + _config->size--; + if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->chbTempRead))) { + _config->i_o_limit_read_size = philos_int_append(_config->i_o_limit_read_size,&_config->size,(int)gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->cbtTempRead))); + _config->size--; + _config->i_o_limit_read = philos_int_append(_config->i_o_limit_read,&_config->size,gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(widgets->spinTempRead))); + _config->size--; + } + else { + _config->i_o_limit_read_size = philos_int_append(_config->i_o_limit_read_size,&_config->size,-1); + _config->size--; + _config->i_o_limit_read = philos_int_append(_config->i_o_limit_read,&_config->size,-1); + _config->size--; + } + if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->chbTempWrite))) { + _config->i_o_limit_write_size = philos_int_append(_config->i_o_limit_write_size,&_config->size,(int)gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->cbtTempWrite))); + _config->size--; + _config->i_o_limit_write = philos_int_append(_config->i_o_limit_write,&_config->size,gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(widgets->spinTempWrite))); + _config->size--; + } + else { + _config->i_o_limit_write_size = philos_int_append(_config->i_o_limit_write_size,&_config->size,-1); + _config->size--; + _config->i_o_limit_write = philos_int_append(_config->i_o_limit_write,&_config->size,-1); + _config->size--; + } + _config->size++; + + } + else { + // Редактирование + //_config->disk[index_find] = yon_char_new(disk); + if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->chbTempRead))) { + _config->i_o_limit_read_size[index_find] =(int)gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->cbtTempRead)); + _config->i_o_limit_read[index_find] = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(widgets->spinTempRead)); + } + else { + _config->i_o_limit_read_size[index_find] = -1; + _config->i_o_limit_read[index_find] = -1; + } + if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->chbTempWrite))) { + _config->i_o_limit_write_size[index_find] = (int)gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->cbtTempWrite)); + _config->i_o_limit_write[index_find] = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(widgets->spinTempWrite)); + } + else { + _config->i_o_limit_write_size[index_find] = -1; + _config->i_o_limit_write[index_find] = -1; + } + } + } + else { + if (bool_read == 1 || bool_write == 1) { + _config->disk = yon_char_parsed_append(_config->disk,&_config->size, disk); + _config->size--; + if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->chbTempRead))) { + _config->i_o_limit_read_size = philos_int_append(_config->i_o_limit_read_size,&_config->size,(int)gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->cbtTempRead))); + _config->size--; + _config->i_o_limit_read = philos_int_append(_config->i_o_limit_read,&_config->size,gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(widgets->spinTempRead))); + _config->size--; + } + else { + _config->i_o_limit_read_size = philos_int_append(_config->i_o_limit_read_size,&_config->size,-1); + _config->size--; + _config->i_o_limit_read = philos_int_append(_config->i_o_limit_read,&_config->size,-1); + _config->size--; + } + if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->chbTempWrite))) { + _config->i_o_limit_write_size = philos_int_append(_config->i_o_limit_write_size,&_config->size,(int)gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->cbtTempWrite))); + _config->size--; + _config->i_o_limit_write = philos_int_append(_config->i_o_limit_write,&_config->size,gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(widgets->spinTempWrite))); + _config->size--; + } + else { + _config->i_o_limit_write_size = philos_int_append(_config->i_o_limit_write_size,&_config->size,-1); + _config->size--; + _config->i_o_limit_write = philos_int_append(_config->i_o_limit_write,&_config->size,-1); + _config->size--; + } + _config->size++; + } + else { + } + } +} int yon_launch_app(char *name) { char *path = name; diff --git a/source/ubl-utils.h b/source/ubl-utils.h index 5c7f52e..58e0b65 100644 --- a/source/ubl-utils.h +++ b/source/ubl-utils.h @@ -53,7 +53,51 @@ typedef struct int *exitcode; } thread_output; +typedef struct { + char** disk; + int* i_o_limit_read; + int* i_o_limit_write; + int* i_o_limit_read_size; + int* i_o_limit_write_size; + int size; +} temp_config; +typedef struct { + + GtkWidget* Window; + GtkWidget* btnSaveTempSave; + GtkWidget* btnTempCancel; + + GtkWidget* entryTempCmd; + GtkWidget* chbTempRead; + GtkWidget* spinTempRead; + GtkWidget* cbtTempRead; + + GtkWidget* chbTempWrite; + GtkWidget* spinTempWrite; + GtkWidget* cbtTempWrite; + + GtkWidget* chkSoftRestrictionTemp; + GtkWidget* spiSevereRestrictionTemp; + GtkWidget* cmSevereRestrictionTemp; + + GtkWidget* chkSevereRestrictionTemp; + GtkWidget* spinSevereRestrictionTemp; + GtkWidget* cmbSevereRestrictionTemp; + + GtkWidget* chkPaddingFLTemp; + GtkWidget* spinPaddingFLTemp; + GtkWidget* cmbPaddingFLTemp; + + GtkWidget* chkCPULimitTemp; + GtkWidget* spinCPULimitTemp; + GtkWidget* lblCPULimitTemp; + + GtkWidget* cbtTempDevice; + GtkWidget* cbxTempQuotaObj; + GtkWidget* cbxTempQuotaLevel2; + GtkWidget* boxBlockGui; +} temp_set_window; typedef struct dictionary { char *key; @@ -205,6 +249,20 @@ char *yon_config_make_save_parameter_with_multiple_arguments(char *parameter_str char** philos_pars_terminal_systemd_cgls(char* CMD_GET_SLICE_SERVICE, char* str_find, int* size_array_data); +char* philos_pard_array_add_cmd(char* cmd, temp_config* _config, char* key, int* array_io, int* array_io_pow_size); + +int philos_check_activ_disk(temp_set_window *widgets, temp_config* _config); + +void philos_temp_generate_cmd(temp_set_window *widgets, temp_config* _config); + +void philos_update_device_to_entry(temp_set_window *widgets, temp_config* _config, int flag_check_array); + +void philos_temp_config_init(temp_config* _config); + +void philos_temp_add_disk(temp_set_window *widgets, temp_config* _config); + +void philos_temp_del_disk(temp_set_window *widgets, temp_config* _config); + int yon_launch_app(char *name); int yon_launch_app_with_arguments(char *name, char *args); diff --git a/source/view_add.c b/source/view_add.c index a453137..31a8419 100644 --- a/source/view_add.c +++ b/source/view_add.c @@ -1,374 +1,116 @@ #include "view_add.h" -#include "ubl-utils.h" -add_window *add_widgets = NULL; -add_config obj_add_config; +temp_set_window *add_widgets = NULL; +temp_config obj_add_config; -add_config* get_add_config() { +temp_config* get_add_config() { return &obj_add_config; } -add_window *add_setup_window(char* glade_path) { +temp_set_window *add_setup_window(char* glade_path) { if (add_widgets == NULL) { - add_widgets = malloc(sizeof(add_window)); + add_widgets = malloc(sizeof(temp_set_window)); GtkBuilder *builder = gtk_builder_new_from_file(glade_path); add_widgets->Window = yon_gtk_builder_get_widget(builder,"wndQuotasAdding"); - add_widgets->btnSaveAddSave = yon_gtk_builder_get_widget(builder,"btnSaveAddSave"); - add_widgets->btnAddCancel = yon_gtk_builder_get_widget(builder,"btnAddCancel"); + add_widgets->btnSaveTempSave = yon_gtk_builder_get_widget(builder,"btnSaveAddSave"); + add_widgets->btnTempCancel = yon_gtk_builder_get_widget(builder,"btnAddCancel"); - add_widgets->entryAddCmd = yon_gtk_builder_get_widget(builder,"entryAddCmd"); - add_widgets->cbxAddQuotaObj = yon_gtk_builder_get_widget(builder,"cbxAddQuotaObj"); - add_widgets->cbxAddQuotaLevel2 = yon_gtk_builder_get_widget(builder,"cbxAddQuotaLevel2"); - add_widgets->cbtAddDevice = yon_gtk_builder_get_widget(builder,"cbtAddDevice"); - add_widgets->lblCPULimitAdd = yon_gtk_builder_get_widget(builder,"lblCPULimitAdd"); - add_widgets->spinCPULimitAdd = yon_gtk_builder_get_widget(builder,"spinCPULimitAdd"); - add_widgets->chkCPULimitAdd = yon_gtk_builder_get_widget(builder,"chkCPULimitAdd"); + add_widgets->entryTempCmd = yon_gtk_builder_get_widget(builder,"entryAddCmd"); + add_widgets->cbxTempQuotaObj = yon_gtk_builder_get_widget(builder,"cbxAddQuotaObj"); + add_widgets->cbxTempQuotaLevel2 = yon_gtk_builder_get_widget(builder,"cbxAddQuotaLevel2"); + add_widgets->cbtTempDevice = yon_gtk_builder_get_widget(builder,"cbtAddDevice"); + add_widgets->lblCPULimitTemp = yon_gtk_builder_get_widget(builder,"lblCPULimitAdd"); + add_widgets->spinCPULimitTemp = yon_gtk_builder_get_widget(builder,"spinCPULimitAdd"); + add_widgets->chkCPULimitTemp = yon_gtk_builder_get_widget(builder,"chkCPULimitAdd"); - add_widgets->chkPaddingFLAdd = yon_gtk_builder_get_widget(builder,"chkPaddingFLAdd"); - add_widgets->spinPaddingFLAdd = yon_gtk_builder_get_widget(builder,"spinPaddingFLAdd"); - add_widgets->cmbPaddingFLAdd = yon_gtk_builder_get_widget(builder,"cmbPaddingFLAdd"); + add_widgets->chkPaddingFLTemp = yon_gtk_builder_get_widget(builder,"chkPaddingFLAdd"); + add_widgets->spinPaddingFLTemp = yon_gtk_builder_get_widget(builder,"spinPaddingFLAdd"); + add_widgets->cmbPaddingFLTemp = yon_gtk_builder_get_widget(builder,"cmbPaddingFLAdd"); - add_widgets->chkSevereRestrictionAdd = yon_gtk_builder_get_widget(builder,"chkSevereRestrictionAdd"); - add_widgets->spinSevereRestrictionAdd = yon_gtk_builder_get_widget(builder,"spinSevereRestrictionAdd"); - add_widgets->cmbSevereRestrictionAdd = yon_gtk_builder_get_widget(builder,"cmbSevereRestrictionAdd"); + add_widgets->chkSevereRestrictionTemp = yon_gtk_builder_get_widget(builder,"chkSevereRestrictionAdd"); + add_widgets->spinSevereRestrictionTemp = yon_gtk_builder_get_widget(builder,"spinSevereRestrictionAdd"); + add_widgets->cmbSevereRestrictionTemp = yon_gtk_builder_get_widget(builder,"cmbSevereRestrictionAdd"); - add_widgets->chkSoftRestrictionAdd = yon_gtk_builder_get_widget(builder,"chkSoftRestrictionAdd"); - add_widgets->spiSevereRestrictionAdd = yon_gtk_builder_get_widget(builder,"spiSevereRestrictionAdd"); - add_widgets->cmSevereRestrictionAdd = yon_gtk_builder_get_widget(builder,"cmSevereRestrictionAdd"); + add_widgets->chkSoftRestrictionTemp = yon_gtk_builder_get_widget(builder,"chkSoftRestrictionAdd"); + add_widgets->spiSevereRestrictionTemp = yon_gtk_builder_get_widget(builder,"spiSevereRestrictionAdd"); + add_widgets->cmSevereRestrictionTemp = yon_gtk_builder_get_widget(builder,"cmSevereRestrictionAdd"); - add_widgets->chbAddRead = yon_gtk_builder_get_widget(builder,"chbAddRead"); - add_widgets->spinAddRead = yon_gtk_builder_get_widget(builder,"spinAddRead"); - add_widgets->cbtAddRead = yon_gtk_builder_get_widget(builder,"cbtAddRead"); + add_widgets->chbTempRead = yon_gtk_builder_get_widget(builder,"chbAddRead"); + add_widgets->spinTempRead = yon_gtk_builder_get_widget(builder,"spinAddRead"); + add_widgets->cbtTempRead = yon_gtk_builder_get_widget(builder,"cbtAddRead"); - add_widgets->spinAddWrite = yon_gtk_builder_get_widget(builder,"spinAddWrite"); - add_widgets->chbAddWrite = yon_gtk_builder_get_widget(builder,"chbAddWrite"); - add_widgets->cbtAddWrite = yon_gtk_builder_get_widget(builder,"cbtAddWrite"); + add_widgets->spinTempWrite = yon_gtk_builder_get_widget(builder,"spinAddWrite"); + add_widgets->chbTempWrite = yon_gtk_builder_get_widget(builder,"chbAddWrite"); + add_widgets->cbtTempWrite = yon_gtk_builder_get_widget(builder,"cbtAddWrite"); add_widgets->boxBlockGui = yon_gtk_builder_get_widget(builder,"boxBlockGui"); - device_fill_disk(add_widgets->cbtAddDevice); + device_fill_disk(add_widgets->cbtTempDevice); add_event(add_widgets); add_init_windows(); add_localization(add_widgets); - add_config_init(); + philos_temp_config_init(&obj_add_config); } return add_widgets; } -// flag_check_array = 0 READ -// flag_check_array = 1 WRITE -void update_device_to_entry(GtkWidget *combo_box, GtkWidget *combo_box_size, GtkWidget *check_button, GtkWidget *spin, int flag_check_array) { - int disk_id = gtk_combo_box_get_active(GTK_COMBO_BOX(combo_box)); - char* disk = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(add_widgets->cbtAddDevice)); - disk = yon_char_divide_search(disk, " ", -1); - if (disk_id != -1) { - int index_find = -1; - for (int index = 0; index < obj_add_config.size; index++) { - char* disk_cfg = obj_add_config.disk[index]; - if (strstr(disk_cfg, disk) != NULL) { - index_find = index; - break; - } - } - if (index_find != -1) { - if (flag_check_array==0) { - if (obj_add_config.i_o_limit_read[index_find]==-2) { - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check_button), 0); - gtk_spin_button_set_value(GTK_SPIN_BUTTON(spin), 0); - gtk_combo_box_set_active(GTK_COMBO_BOX(combo_box_size), 0); - } - else { - gtk_spin_button_set_value(GTK_SPIN_BUTTON(spin), obj_add_config.i_o_limit_read[index_find]); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check_button), 1); - gtk_combo_box_set_active(GTK_COMBO_BOX(combo_box_size), obj_add_config.i_o_limit_read_size[index_find]); - - } - } - else if (flag_check_array==1) { - if (obj_add_config.i_o_limit_write[index_find]==-2) { - gtk_spin_button_set_value(GTK_SPIN_BUTTON(spin), 0); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check_button), 0); - gtk_combo_box_set_active(GTK_COMBO_BOX(combo_box_size), 0); - } - else { - gtk_spin_button_set_value(GTK_SPIN_BUTTON(spin), obj_add_config.i_o_limit_write[index_find]); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check_button), 1); - gtk_combo_box_set_active(GTK_COMBO_BOX(combo_box_size), obj_add_config.i_o_limit_write_size[index_find]); - } - } - else { - gtk_spin_button_set_value(GTK_SPIN_BUTTON(spin), 0); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check_button), 0); - gtk_combo_box_set_active(GTK_COMBO_BOX(combo_box_size), 0); - } - } - else { - gtk_spin_button_set_value(GTK_SPIN_BUTTON(spin), 0); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check_button), 0); - gtk_combo_box_set_active(GTK_COMBO_BOX(combo_box_size), 0); - } - } - else { - gtk_spin_button_set_value(GTK_SPIN_BUTTON(spin), 0); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check_button), 0); - gtk_combo_box_set_active(GTK_COMBO_BOX(combo_box_size), 0); - } -} - -void add_config_init() { - if (obj_add_config.size != 0) { - philos_free_string_array(&obj_add_config.disk, obj_add_config.size); - philos_free_int_array(&obj_add_config.i_o_limit_read, obj_add_config.size); - philos_free_int_array(&obj_add_config.i_o_limit_read_size, obj_add_config.size); - philos_free_int_array(&obj_add_config.i_o_limit_write, obj_add_config.size); - philos_free_int_array(&obj_add_config.i_o_limit_write_size, obj_add_config.size); - } - obj_add_config.disk = NULL; - obj_add_config.i_o_limit_read = NULL; - obj_add_config.i_o_limit_write = NULL; - obj_add_config.i_o_limit_read_size = NULL; - obj_add_config.i_o_limit_write_size = NULL; - obj_add_config.size = 0; -} void add_init_windows() { - if (gtk_combo_box_get_active(GTK_COMBO_BOX(add_widgets->cbxAddQuotaLevel2)) != -1) { + if (gtk_combo_box_get_active(GTK_COMBO_BOX(add_widgets->cbxTempQuotaLevel2)) != -1) { gtk_widget_set_sensitive(add_widgets->boxBlockGui, 1); - gtk_widget_set_sensitive(add_widgets->btnSaveAddSave, 1); - philos_set_active_widgets(add_widgets->chkSoftRestrictionAdd, add_widgets->spiSevereRestrictionAdd, add_widgets->cmSevereRestrictionAdd, 0 , CMD_RAW); - philos_set_active_widgets(add_widgets->chkSevereRestrictionAdd, add_widgets->spinSevereRestrictionAdd, add_widgets->cmbSevereRestrictionAdd,0 , CMD_RAW); - philos_set_active_widgets(add_widgets->chkPaddingFLAdd, add_widgets->spinPaddingFLAdd, add_widgets->cmbPaddingFLAdd,0 , CMD_SWAP); - philos_set_active_widgets(add_widgets->chkCPULimitAdd, add_widgets->spinCPULimitAdd, add_widgets->lblCPULimitAdd,1 , CMD_CPU); - philos_set_active_widgets_device_io(add_widgets->cbtAddDevice,add_widgets->chbAddWrite, add_widgets->spinAddWrite, add_widgets->cbtAddWrite); - philos_set_active_widgets_device_io(add_widgets->cbtAddDevice,add_widgets->chbAddRead, add_widgets->spinAddRead, add_widgets->cbtAddRead); - add_generate_cmd(); + gtk_widget_set_sensitive(add_widgets->btnSaveTempSave, 1); + philos_set_active_widgets(add_widgets->chkSoftRestrictionTemp, add_widgets->spiSevereRestrictionTemp, add_widgets->cmSevereRestrictionTemp, 0 , CMD_RAW); + philos_set_active_widgets(add_widgets->chkSevereRestrictionTemp, add_widgets->spinSevereRestrictionTemp, add_widgets->cmbSevereRestrictionTemp,0 , CMD_RAW); + philos_set_active_widgets(add_widgets->chkPaddingFLTemp, add_widgets->spinPaddingFLTemp, add_widgets->cmbPaddingFLTemp,0 , CMD_SWAP); + philos_set_active_widgets(add_widgets->chkCPULimitTemp, add_widgets->spinCPULimitTemp, add_widgets->lblCPULimitTemp,1 , CMD_CPU); + philos_set_active_widgets_device_io(add_widgets->cbtTempDevice,add_widgets->chbTempWrite, add_widgets->spinTempWrite, add_widgets->cbtTempWrite); + philos_set_active_widgets_device_io(add_widgets->cbtTempDevice,add_widgets->chbTempRead, add_widgets->spinTempRead, add_widgets->cbtTempRead); } else { gtk_widget_set_sensitive(add_widgets->boxBlockGui, 0); - gtk_widget_set_sensitive(add_widgets->btnSaveAddSave, 0); - add_generate_cmd(); - } -} - -int check_activ_disk() { - char* disk = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(add_widgets->cbtAddDevice)); - disk = yon_char_divide_search(disk," ", -1); - int bool_read = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(add_widgets->chbAddRead)); - int bool_write = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(add_widgets->chbAddWrite)); - if (disk == NULL || obj_add_config.size == 0) { - return 0; - } - return 1; -} - -void add_del_disk() { - char* disk = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(add_widgets->cbtAddDevice)); - disk = yon_char_divide_search(disk, " ", -1); - int bool_read = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(add_widgets->chbAddRead)); - int bool_write = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(add_widgets->chbAddWrite)); - if (check_activ_disk() == 0) { - return; - } - if (obj_add_config.disk && obj_add_config.size) { - int index_find = -1; - printf("%d\n", obj_add_config.size); - for (int index = 0; index < obj_add_config.size; index++) { - char* disk_cfg = obj_add_config.disk[index]; - if (strstr(disk_cfg, disk) != NULL) { - index_find = index; - break; - } - } - if ((bool_read == 0 && bool_write == 0 && index_find != -1)) { - obj_add_config.disk = yon_char_parsed_shrink(obj_add_config.disk,&obj_add_config.size, index_find); - obj_add_config.size++; - obj_add_config.i_o_limit_read_size = remove_element_int_array(obj_add_config.i_o_limit_read_size,&obj_add_config.size, index_find); - obj_add_config.size++; - obj_add_config.i_o_limit_write_size = remove_element_int_array(obj_add_config.i_o_limit_write_size,&obj_add_config.size, index_find); - obj_add_config.size++; - obj_add_config.i_o_limit_read = remove_element_int_array(obj_add_config.i_o_limit_read,&obj_add_config.size, index_find); - obj_add_config.size++; - obj_add_config.i_o_limit_write = remove_element_int_array(obj_add_config.i_o_limit_write,&obj_add_config.size, index_find); - } - } -} - -char* pard_array_add_cmd(char* cmd, char* key, int* array_io, int* array_io_pow_size) { - char* split_simvol = g_malloc0(sizeof(char)*2); - int flag_format = 0; - char* cmd_old = yon_char_new(cmd); - if (obj_add_config.disk && obj_add_config.size && array_io && array_io_pow_size) { - int index_find = 0; - printf("\n%i\n", obj_add_config.size); - for (int index = 0; index < obj_add_config.size; index++) { - if (index==0) { - if (strlen(cmd)>1) { - cmd = yon_char_unite(cmd, ",", key, NULL); - } - else { - cmd = yon_char_unite(cmd, key, NULL); - } - - } - if (array_io_pow_size[index] != -1) { - cmd = yon_char_unite(cmd, - split_simvol, - obj_add_config.disk[index], - philos_format_cfg_str_size_memory(" ", array_io[index], array_io_pow_size[index]), NULL); - split_simvol[0] = ','; - split_simvol[1] = '\0'; - flag_format = 1; - } - } - } - free(split_simvol); - if (flag_format) { - return cmd; - } - else { - return cmd_old; - } - -} - -void add_disk_all(){ - char* disk = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(add_widgets->cbtAddDevice)); - disk = yon_char_divide_search(disk, " ", -1); - int disk_id = gtk_combo_box_get_active(GTK_COMBO_BOX(add_widgets->cbtAddDevice)); - int bool_read = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(add_widgets->chbAddRead)); - int bool_write = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(add_widgets->chbAddWrite)); - if (disk_id >= 0 && obj_add_config.size !=0) { - int index_find = -1; - for (int index = 0; index < obj_add_config.size; index++) { - char* disk_cfg = obj_add_config.disk[index]; - if (strstr(disk_cfg, disk) != NULL) { - index_find = index; - break; - } - } - if (index_find == -1) { - // Добавление - obj_add_config.disk = yon_char_parsed_append(obj_add_config.disk,&obj_add_config.size, disk); - obj_add_config.size--; - if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(add_widgets->chbAddRead))) { - obj_add_config.i_o_limit_read_size = philos_int_append(obj_add_config.i_o_limit_read_size,&obj_add_config.size,(int)gtk_combo_box_get_active(GTK_COMBO_BOX(add_widgets->cbtAddRead))); - obj_add_config.size--; - obj_add_config.i_o_limit_read = philos_int_append(obj_add_config.i_o_limit_read,&obj_add_config.size,gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(add_widgets->spinAddRead))); - obj_add_config.size--; - } - else { - obj_add_config.i_o_limit_read_size = philos_int_append(obj_add_config.i_o_limit_read_size,&obj_add_config.size,-1); - obj_add_config.size--; - obj_add_config.i_o_limit_read = philos_int_append(obj_add_config.i_o_limit_read,&obj_add_config.size,-1); - obj_add_config.size--; - } - if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(add_widgets->chbAddWrite))) { - obj_add_config.i_o_limit_write_size = philos_int_append(obj_add_config.i_o_limit_write_size,&obj_add_config.size,(int)gtk_combo_box_get_active(GTK_COMBO_BOX(add_widgets->cbtAddWrite))); - obj_add_config.size--; - obj_add_config.i_o_limit_write = philos_int_append(obj_add_config.i_o_limit_write,&obj_add_config.size,gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(add_widgets->spinAddWrite))); - obj_add_config.size--; - } - else { - obj_add_config.i_o_limit_write_size = philos_int_append(obj_add_config.i_o_limit_write_size,&obj_add_config.size,-1); - obj_add_config.size--; - obj_add_config.i_o_limit_write = philos_int_append(obj_add_config.i_o_limit_write,&obj_add_config.size,-1); - obj_add_config.size--; - } - obj_add_config.size++; - - } - else { - // Редактирование - //obj_add_config.disk[index_find] = yon_char_new(disk); - if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(add_widgets->chbAddRead))) { - obj_add_config.i_o_limit_read_size[index_find] =(int)gtk_combo_box_get_active(GTK_COMBO_BOX(add_widgets->cbtAddRead)); - obj_add_config.i_o_limit_read[index_find] = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(add_widgets->spinAddRead)); - } - else { - obj_add_config.i_o_limit_read_size[index_find] = -1; - obj_add_config.i_o_limit_read[index_find] = -1; - } - if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(add_widgets->chbAddWrite))) { - obj_add_config.i_o_limit_write_size[index_find] = (int)gtk_combo_box_get_active(GTK_COMBO_BOX(add_widgets->cbtAddWrite)); - obj_add_config.i_o_limit_write[index_find] = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(add_widgets->spinAddWrite)); - } - else { - obj_add_config.i_o_limit_write_size[index_find] = -1; - obj_add_config.i_o_limit_write[index_find] = -1; - } - } - } - else { - if (bool_read == 1 || bool_write == 1) { - obj_add_config.disk = yon_char_parsed_append(obj_add_config.disk,&obj_add_config.size, disk); - obj_add_config.size--; - if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(add_widgets->chbAddRead))) { - obj_add_config.i_o_limit_read_size = philos_int_append(obj_add_config.i_o_limit_read_size,&obj_add_config.size,(int)gtk_combo_box_get_active(GTK_COMBO_BOX(add_widgets->cbtAddRead))); - obj_add_config.size--; - obj_add_config.i_o_limit_read = philos_int_append(obj_add_config.i_o_limit_read,&obj_add_config.size,gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(add_widgets->spinAddRead))); - obj_add_config.size--; - } - else { - obj_add_config.i_o_limit_read_size = philos_int_append(obj_add_config.i_o_limit_read_size,&obj_add_config.size,-1); - obj_add_config.size--; - obj_add_config.i_o_limit_read = philos_int_append(obj_add_config.i_o_limit_read,&obj_add_config.size,-1); - obj_add_config.size--; - } - if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(add_widgets->chbAddWrite))) { - obj_add_config.i_o_limit_write_size = philos_int_append(obj_add_config.i_o_limit_write_size,&obj_add_config.size,(int)gtk_combo_box_get_active(GTK_COMBO_BOX(add_widgets->cbtAddWrite))); - obj_add_config.size--; - obj_add_config.i_o_limit_write = philos_int_append(obj_add_config.i_o_limit_write,&obj_add_config.size,gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(add_widgets->spinAddWrite))); - obj_add_config.size--; - } - else { - obj_add_config.i_o_limit_write_size = philos_int_append(obj_add_config.i_o_limit_write_size,&obj_add_config.size,-1); - obj_add_config.size--; - obj_add_config.i_o_limit_write = philos_int_append(obj_add_config.i_o_limit_write,&obj_add_config.size,-1); - obj_add_config.size--; - } - obj_add_config.size++; - } - else { - } + gtk_widget_set_sensitive(add_widgets->btnSaveTempSave, 0); } + philos_temp_generate_cmd(add_widgets, &obj_add_config); } void event_check_io_device() { - philos_set_active_widgets_device_io(add_widgets->cbtAddDevice,add_widgets->chbAddWrite, add_widgets->spinAddWrite, add_widgets->cbtAddWrite); - philos_set_active_widgets_device_io(add_widgets->cbtAddDevice,add_widgets->chbAddRead, add_widgets->spinAddRead, add_widgets->cbtAddRead); - add_disk_all(); - add_del_disk(); + philos_set_active_widgets_device_io(add_widgets->cbtTempDevice,add_widgets->chbTempWrite, add_widgets->spinTempWrite, add_widgets->cbtTempWrite); + philos_set_active_widgets_device_io(add_widgets->cbtTempDevice,add_widgets->chbTempRead, add_widgets->spinTempRead, add_widgets->cbtTempRead); + philos_temp_add_disk(add_widgets, &obj_add_config); + philos_temp_del_disk(add_widgets, &obj_add_config); add_init_windows(); } void combo_box_device() { - update_device_to_entry(add_widgets->cbtAddDevice,add_widgets->cbtAddRead, add_widgets->chbAddRead, add_widgets->spinAddRead, 0); - update_device_to_entry(add_widgets->cbtAddDevice,add_widgets->cbtAddWrite, add_widgets->chbAddWrite, add_widgets->spinAddWrite, 1); + philos_update_device_to_entry(add_widgets, &obj_add_config, 0); + philos_update_device_to_entry(add_widgets, &obj_add_config, 1); } -void add_event(add_window *widgets) { - g_signal_connect(G_OBJECT(widgets->btnAddCancel),"clicked",G_CALLBACK(add_on_destroy_subwindow),NULL); +void add_event(temp_set_window *widgets) { + g_signal_connect(G_OBJECT(widgets->btnTempCancel),"clicked",G_CALLBACK(add_on_destroy_subwindow),NULL); g_signal_connect(G_OBJECT(widgets->Window), "destroy", G_CALLBACK(add_destroy), NULL); - g_signal_connect(G_OBJECT(widgets->chkSoftRestrictionAdd), "toggled", G_CALLBACK(add_init_windows), NULL); - g_signal_connect(G_OBJECT(widgets->chkSevereRestrictionAdd), "toggled", G_CALLBACK(add_init_windows), NULL); - g_signal_connect(G_OBJECT(widgets->chkPaddingFLAdd), "toggled", G_CALLBACK(add_init_windows), NULL); - g_signal_connect(G_OBJECT(widgets->chkCPULimitAdd), "toggled", G_CALLBACK(add_init_windows), NULL); - g_signal_connect(G_OBJECT(widgets->chbAddRead), "toggled", G_CALLBACK(event_check_io_device), NULL); - g_signal_connect(G_OBJECT(widgets->chbAddWrite), "toggled", G_CALLBACK(event_check_io_device), NULL); - g_signal_connect(G_OBJECT(widgets->cbxAddQuotaObj),"changed",G_CALLBACK(add_update_combo_box), NULL); - g_signal_connect(G_OBJECT(widgets->cbxAddQuotaLevel2),"changed",G_CALLBACK(add_init_windows), NULL); + g_signal_connect(G_OBJECT(widgets->chkSoftRestrictionTemp), "toggled", G_CALLBACK(add_init_windows), NULL); + g_signal_connect(G_OBJECT(widgets->chkSevereRestrictionTemp), "toggled", G_CALLBACK(add_init_windows), NULL); + g_signal_connect(G_OBJECT(widgets->chkPaddingFLTemp), "toggled", G_CALLBACK(add_init_windows), NULL); + g_signal_connect(G_OBJECT(widgets->chkCPULimitTemp), "toggled", G_CALLBACK(add_init_windows), NULL); + + g_signal_connect(G_OBJECT(widgets->cbxTempQuotaObj),"changed",G_CALLBACK(add_update_combo_box), NULL); + g_signal_connect(G_OBJECT(widgets->cbxTempQuotaLevel2),"changed",G_CALLBACK(add_init_windows), NULL); + + g_signal_connect(G_OBJECT(widgets->spiSevereRestrictionTemp),"changed",G_CALLBACK(add_init_windows), NULL); + g_signal_connect(G_OBJECT(widgets->spinSevereRestrictionTemp),"changed",G_CALLBACK(add_init_windows), NULL); + g_signal_connect(G_OBJECT(widgets->spinPaddingFLTemp),"changed",G_CALLBACK(add_init_windows), NULL); + g_signal_connect(G_OBJECT(widgets->spinCPULimitTemp),"changed",G_CALLBACK(add_init_windows), NULL); - g_signal_connect(G_OBJECT(widgets->spiSevereRestrictionAdd),"changed",G_CALLBACK(add_init_windows), NULL); - g_signal_connect(G_OBJECT(widgets->spinSevereRestrictionAdd),"changed",G_CALLBACK(add_init_windows), NULL); - g_signal_connect(G_OBJECT(widgets->spinPaddingFLAdd),"changed",G_CALLBACK(add_init_windows), NULL); - g_signal_connect(G_OBJECT(widgets->spinCPULimitAdd),"changed",G_CALLBACK(add_init_windows), NULL); - g_signal_connect(G_OBJECT(widgets->spinAddRead),"changed",G_CALLBACK(event_check_io_device), NULL); - g_signal_connect(G_OBJECT(widgets->spinAddWrite),"changed",G_CALLBACK(event_check_io_device), NULL); - g_signal_connect(G_OBJECT(widgets->cmSevereRestrictionAdd),"changed",G_CALLBACK(add_init_windows), NULL); - g_signal_connect(G_OBJECT(widgets->cmbSevereRestrictionAdd),"changed",G_CALLBACK(add_init_windows), NULL); - g_signal_connect(G_OBJECT(widgets->cmbPaddingFLAdd),"changed",G_CALLBACK(add_init_windows), NULL); - g_signal_connect(G_OBJECT(widgets->cbtAddRead),"changed",G_CALLBACK(event_check_io_device), NULL); - g_signal_connect(G_OBJECT(widgets->cbtAddWrite),"changed",G_CALLBACK(event_check_io_device), NULL); - g_signal_connect(G_OBJECT(widgets->cbtAddDevice),"changed",G_CALLBACK(combo_box_device), NULL); + g_signal_connect(G_OBJECT(widgets->cmSevereRestrictionTemp),"changed",G_CALLBACK(add_init_windows), NULL); + g_signal_connect(G_OBJECT(widgets->cmbSevereRestrictionTemp),"changed",G_CALLBACK(add_init_windows), NULL); + g_signal_connect(G_OBJECT(widgets->cmbPaddingFLTemp),"changed",G_CALLBACK(add_init_windows), NULL); + g_signal_connect(G_OBJECT(widgets->cbtTempDevice),"changed",G_CALLBACK(combo_box_device), NULL); + g_signal_connect(G_OBJECT(widgets->cbtTempRead),"changed",G_CALLBACK(event_check_io_device), NULL); + g_signal_connect(G_OBJECT(widgets->cbtTempWrite),"changed",G_CALLBACK(event_check_io_device), NULL); + g_signal_connect(G_OBJECT(widgets->spinTempRead),"changed",G_CALLBACK(event_check_io_device), NULL); + g_signal_connect(G_OBJECT(widgets->spinTempWrite),"changed",G_CALLBACK(event_check_io_device), NULL); + g_signal_connect(G_OBJECT(widgets->chbTempRead), "toggled", G_CALLBACK(event_check_io_device), NULL); + g_signal_connect(G_OBJECT(widgets->chbTempWrite), "toggled", G_CALLBACK(event_check_io_device), NULL); } @@ -383,7 +125,7 @@ void add_destroy(GtkWidget *self) { add_widgets = NULL; } -void add_localization(add_window *widgets) { +void add_localization(temp_set_window *widgets) { } @@ -393,7 +135,7 @@ void add_on_destroy_subwindow(GtkWidget *self) { } -add_window *get_widget_add() { +temp_set_window *get_widget_add() { return add_widgets; } @@ -412,7 +154,7 @@ void add_show(GtkWidget *self, char* glade_path) { } char* add_get_select_device_to_level_2() { - char* text = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(add_widgets->cbxAddQuotaLevel2)); + char* text = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(add_widgets->cbxTempQuotaLevel2)); if (text != NULL) { return text; } @@ -451,43 +193,65 @@ char*** add_get_select_device() { } int add_get_soft_size() { - return gtk_combo_box_get_active(GTK_COMBO_BOX(add_widgets->cmSevereRestrictionAdd)); + if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(add_widgets->chkSoftRestrictionTemp))) { + return gtk_combo_box_get_active(GTK_COMBO_BOX(add_widgets->cmSevereRestrictionTemp)); + } + else { + return -3; + } + } int add_get_hard_size() { - return gtk_combo_box_get_active(GTK_COMBO_BOX(add_widgets->cmbSevereRestrictionAdd)); + if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(add_widgets->chkSevereRestrictionTemp))) { + return gtk_combo_box_get_active(GTK_COMBO_BOX(add_widgets->cmbSevereRestrictionTemp)); + } + else { + return -3; + } } int add_get_limit_cpu_size() { return -1; } int add_get_limit_swap_size() { - return gtk_combo_box_get_active(GTK_COMBO_BOX(add_widgets->cmbPaddingFLAdd)); + if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(add_widgets->chkPaddingFLTemp))) { + return gtk_combo_box_get_active(GTK_COMBO_BOX(add_widgets->cmbPaddingFLTemp)); + } + else { + return -3; + } + } int add_get_quota_object_size() { - return gtk_combo_box_get_active(GTK_COMBO_BOX(add_widgets->cbxAddQuotaObj)); + if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(add_widgets->chkPaddingFLTemp))) { + return gtk_combo_box_get_active(GTK_COMBO_BOX(add_widgets->cbxTempQuotaObj)); + } + else { + return -3; + } } int add_get_soft() { - return gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(add_widgets->spiSevereRestrictionAdd)); + return gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(add_widgets->spiSevereRestrictionTemp)); } int add_get_hard() { - return gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(add_widgets->spinSevereRestrictionAdd)); + return gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(add_widgets->spinSevereRestrictionTemp)); } int add_get_limit_cpu() { - if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(add_widgets->chkCPULimitAdd))) { - return gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(add_widgets->spinCPULimitAdd)); + if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(add_widgets->chkCPULimitTemp))) { + return gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(add_widgets->spinCPULimitTemp)); } else { - return 0; + return -3; } } int add_get_limit_swap() { - return gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(add_widgets->spinPaddingFLAdd)); + return gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(add_widgets->spinPaddingFLTemp)); } char* add_get_quota_object() { - return gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(add_widgets->cbxAddQuotaObj)); + return gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(add_widgets->cbxTempQuotaObj)); } void add_update_combo_box() { - int menu_id = gtk_combo_box_get_active(GTK_COMBO_BOX(add_widgets->cbxAddQuotaObj)); + int menu_id = gtk_combo_box_get_active(GTK_COMBO_BOX(add_widgets->cbxTempQuotaObj)); char* cmd = NULL; config_str fill_cmb_2 = NULL; int size = 0; @@ -508,60 +272,9 @@ void add_update_combo_box() { philos_array_string_remove_char(&fill_cmb_2, "\n", size); } if (menu_id >= 0) { - gtk_combo_box_text_remove_all(GTK_COMBO_BOX_TEXT(add_widgets->cbxAddQuotaLevel2)); - philos_fill_combo_box_text(add_widgets->cbxAddQuotaLevel2, fill_cmb_2, size); + gtk_combo_box_text_remove_all(GTK_COMBO_BOX_TEXT(add_widgets->cbxTempQuotaLevel2)); + philos_fill_combo_box_text(add_widgets->cbxTempQuotaLevel2, fill_cmb_2, size); // yon_terminal_integrated_launch(widgets->vteProcesses, cmd, NULL, NULL); } } -void add_generate_cmd() { - char* str_cmd = ""; - char* split_simvol = g_malloc0(sizeof(char)*2); - int size_bite = 0; - if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(add_widgets->chkSoftRestrictionAdd))) { - size_bite = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(add_widgets->spiSevereRestrictionAdd)); - str_cmd = yon_char_unite(str_cmd, - "MemoryHigh=", - yon_char_from_int(size_bite), - philos_str_size_pow_byte(add_widgets->cmSevereRestrictionAdd), NULL); - split_simvol[0] = ','; - split_simvol[1] = '\0'; - } - if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(add_widgets->chkSevereRestrictionAdd))) { - size_bite = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(add_widgets->spinSevereRestrictionAdd)); - str_cmd = yon_char_unite(str_cmd, split_simvol, - "MemoryMax=", - yon_char_from_int(size_bite), - philos_str_size_pow_byte(add_widgets->cmbSevereRestrictionAdd), NULL); - split_simvol[0] = ','; - split_simvol[1] = '\0'; - } - if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(add_widgets->chkPaddingFLAdd))) { - size_bite = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(add_widgets->spinPaddingFLAdd)); - str_cmd = yon_char_unite(str_cmd, split_simvol, - "MemorySwapMax=", - yon_char_from_int(size_bite), - philos_str_size_pow_byte(add_widgets->cmbPaddingFLAdd), NULL); - split_simvol[0] = ','; - split_simvol[1] = '\0'; - } - if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(add_widgets->chkCPULimitAdd))) { - size_bite = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(add_widgets->spinCPULimitAdd)); - str_cmd = yon_char_unite(str_cmd, split_simvol, - "CPUQuota=", - yon_char_from_int(size_bite), - "%", NULL); - split_simvol[0] = ','; - split_simvol[1] = '\0'; - } - if (gtk_combo_box_get_active(GTK_COMBO_BOX(add_widgets->cbtAddDevice))!=-1) { - if (obj_add_config.size!=0) { - str_cmd = pard_array_add_cmd(str_cmd, "IOReadBandwidthMax=", obj_add_config.i_o_limit_read, obj_add_config.i_o_limit_read_size); - str_cmd = pard_array_add_cmd(str_cmd, "IOWriteBandwidthMax=", obj_add_config.i_o_limit_write, obj_add_config.i_o_limit_write_size); - } - - } - - - gtk_entry_set_text(GTK_ENTRY(add_widgets->entryAddCmd), str_cmd); - free(split_simvol); -} + diff --git a/source/view_add.h b/source/view_add.h index a1e1b28..64bedd7 100644 --- a/source/view_add.h +++ b/source/view_add.h @@ -21,57 +21,12 @@ static char* CMD_GET_GROUP; static char* CMD_GET_SLICE_SERVICE; -typedef struct { - config_str disk; - int* i_o_limit_read; - int* i_o_limit_write; - int* i_o_limit_read_size; - int* i_o_limit_write_size; - int size; -} add_config; -// Переменные -typedef struct { - - GtkWidget* Window; - GtkWidget* btnSaveAddSave; - GtkWidget* btnAddCancel; - GtkWidget* entryAddCmd; - GtkWidget* chbAddRead; - GtkWidget* spinAddRead; - GtkWidget* cbtAddRead; - - GtkWidget* chbAddWrite; - GtkWidget* spinAddWrite; - GtkWidget* cbtAddWrite; - - GtkWidget* chkSoftRestrictionAdd; - GtkWidget* spiSevereRestrictionAdd; - GtkWidget* cmSevereRestrictionAdd; - - GtkWidget* chkSevereRestrictionAdd; - GtkWidget* spinSevereRestrictionAdd; - GtkWidget* cmbSevereRestrictionAdd; - - GtkWidget* chkPaddingFLAdd; - GtkWidget* spinPaddingFLAdd; - GtkWidget* cmbPaddingFLAdd; - - GtkWidget* chkCPULimitAdd; - GtkWidget* spinCPULimitAdd; - GtkWidget* lblCPULimitAdd; - - GtkWidget* cbtAddDevice; - GtkWidget* cbxAddQuotaObj; - GtkWidget* cbxAddQuotaLevel2; - GtkWidget* boxBlockGui; -} add_window; -// Функции -add_window *add_setup_window(char* glade_path); -void add_event(add_window *widgets); -void add_localization(add_window *widgets); +temp_set_window *add_setup_window(char* glade_path); +void add_event(temp_set_window *widgets); +void add_localization(temp_set_window *widgets); void add_on_destroy_subwindow(GtkWidget *self); -add_window *get_widget_add(); +temp_set_window *get_widget_add(); void add_show(GtkWidget *self, char* glade_path); void add_destroy(GtkWidget *self); void add_set_active_widgets(GtkWidget *check, GtkWidget *spin, GtkWidget *combo, int flag_cpu, char* cmd); @@ -93,13 +48,10 @@ int add_get_hard_size(); int add_get_limit_cpu_size(); int add_get_limit_swap_size(); int add_get_quota_object_size(); -add_config* get_add_config(); -void add_config_init(); -void add_disk_all(); +temp_config* get_add_config(); void add_set_active_widgets_device_io(GtkWidget *check, GtkWidget *spin, GtkWidget *combo); void add_get_cmd_group(char* cmd_get_group); char* add_get_select_device_to_level_2(); -void add_generate_cmd(); void add_get_systemd_cgls(char* cmd_systemd_cgls); void add_set_spin_adjustment(GtkWidget *check, GtkWidget *spin, GtkWidget *combo, size_t value); #endif \ No newline at end of file diff --git a/source/view_edit.c b/source/view_edit.c index 6a225be..3e824fe 100644 --- a/source/view_edit.c +++ b/source/view_edit.c @@ -1,48 +1,49 @@ #include "view_edit.h" -edit_window *edit_widgets = NULL; -edit_config obj_edit_config; +temp_set_window *edit_widgets = NULL; +temp_config obj_edit_config; -edit_config* get_edit_config() { +temp_config* get_edit_config() { return &obj_edit_config; } -edit_window *edit_setup_window(char* glade_path){ +temp_set_window *edit_setup_window(char* glade_path){ if (edit_widgets == NULL) { - edit_widgets = malloc(sizeof(edit_window)); + edit_widgets = malloc(sizeof(temp_set_window)); GtkBuilder *builder = gtk_builder_new_from_file(glade_path); edit_widgets->Window = yon_gtk_builder_get_widget(builder,"wndQuotasEdit"); - edit_widgets->btnEditCancel = yon_gtk_builder_get_widget(builder,"btnEditCancel"); - edit_widgets->btnSaveEditSave = yon_gtk_builder_get_widget(builder,"btnSaveEditSave"); + edit_widgets->btnTempCancel = yon_gtk_builder_get_widget(builder,"btnEditCancel"); + edit_widgets->btnSaveTempSave = yon_gtk_builder_get_widget(builder,"btnSaveEditSave"); - edit_widgets->cbtEditDevice = yon_gtk_builder_get_widget(builder,"cbtEditDevice"); - edit_widgets->lblCPULimitEdit = yon_gtk_builder_get_widget(builder,"lblCPULimitEdit"); - edit_widgets->spinCPULimitEdit = yon_gtk_builder_get_widget(builder,"spinCPULimitEdit"); - edit_widgets->chkCPULimitEdit = yon_gtk_builder_get_widget(builder,"chkCPULimitEdit"); + edit_widgets->cbtTempDevice = yon_gtk_builder_get_widget(builder,"cbtEditDevice"); + edit_widgets->lblCPULimitTemp = yon_gtk_builder_get_widget(builder,"lblCPULimitEdit"); + edit_widgets->spinCPULimitTemp = yon_gtk_builder_get_widget(builder,"spinCPULimitEdit"); + edit_widgets->chkCPULimitTemp = yon_gtk_builder_get_widget(builder,"chkCPULimitEdit"); - edit_widgets->chkPaddingFLEdit = yon_gtk_builder_get_widget(builder,"chkPaddingFLEdit"); - edit_widgets->spinPaddingFLEdit = yon_gtk_builder_get_widget(builder,"spinPaddingFLEdit"); - edit_widgets->cmbPaddingFLEdit = yon_gtk_builder_get_widget(builder,"cmbPaddingFLEdit"); + edit_widgets->chkPaddingFLTemp = yon_gtk_builder_get_widget(builder,"chkPaddingFLEdit"); + edit_widgets->spinPaddingFLTemp = yon_gtk_builder_get_widget(builder,"spinPaddingFLEdit"); + edit_widgets->cmbPaddingFLTemp = yon_gtk_builder_get_widget(builder,"cmbPaddingFLEdit"); - edit_widgets->chkSevereRestrictionEdit = yon_gtk_builder_get_widget(builder,"chkSevereRestrictionEdit"); - edit_widgets->spinSevereRestrictionEdit = yon_gtk_builder_get_widget(builder,"spinSevereRestrictionEdit"); - edit_widgets->cmbSevereRestrictionEdit = yon_gtk_builder_get_widget(builder,"cmbSevereRestrictionEdit"); + edit_widgets->chkSevereRestrictionTemp = yon_gtk_builder_get_widget(builder,"chkSevereRestrictionEdit"); + edit_widgets->spinSevereRestrictionTemp = yon_gtk_builder_get_widget(builder,"spinSevereRestrictionEdit"); + edit_widgets->cmbSevereRestrictionTemp = yon_gtk_builder_get_widget(builder,"cmbSevereRestrictionEdit"); - edit_widgets->chkSoftRestrictionEdit = yon_gtk_builder_get_widget(builder,"chkSoftRestrictionEdit"); - edit_widgets->spiSevereRestrictionEdit = yon_gtk_builder_get_widget(builder,"spiSevereRestrictionEdit"); - edit_widgets->cmSevereRestrictionEdit = yon_gtk_builder_get_widget(builder,"cmSevereRestrictionEdit"); + edit_widgets->chkSoftRestrictionTemp = yon_gtk_builder_get_widget(builder,"chkSoftRestrictionEdit"); + edit_widgets->spiSevereRestrictionTemp = yon_gtk_builder_get_widget(builder,"spiSevereRestrictionEdit"); + edit_widgets->cmSevereRestrictionTemp = yon_gtk_builder_get_widget(builder,"cmSevereRestrictionEdit"); - edit_widgets->chbEditRead = yon_gtk_builder_get_widget(builder,"chbEditRead"); - edit_widgets->spinEditRead = yon_gtk_builder_get_widget(builder,"spinEditRead"); - edit_widgets->cbtEditRead = yon_gtk_builder_get_widget(builder,"cbtEditRead"); + edit_widgets->chbTempRead = yon_gtk_builder_get_widget(builder,"chbEditRead"); + edit_widgets->spinTempRead = yon_gtk_builder_get_widget(builder,"spinEditRead"); + edit_widgets->cbtTempRead = yon_gtk_builder_get_widget(builder,"cbtEditRead"); - edit_widgets->spinEditWrite = yon_gtk_builder_get_widget(builder,"spinEditWrite"); - edit_widgets->chbEditWrite = yon_gtk_builder_get_widget(builder,"chbEditWrite"); - edit_widgets->cbtEditWrite = yon_gtk_builder_get_widget(builder,"cbtEditWrite"); - edit_widgets->entryEditCmd = yon_gtk_builder_get_widget(builder,"entryEditCmd"); + edit_widgets->spinTempWrite = yon_gtk_builder_get_widget(builder,"spinEditWrite"); + edit_widgets->chbTempWrite = yon_gtk_builder_get_widget(builder,"chbEditWrite"); + edit_widgets->cbtTempWrite = yon_gtk_builder_get_widget(builder,"cbtEditWrite"); + edit_widgets->entryTempCmd = yon_gtk_builder_get_widget(builder,"entryEditCmd"); edit_config_init(); - device_fill_disk(edit_widgets->cbtEditDevice); + device_fill_disk(edit_widgets->cbtTempDevice); // edit_event(edit_widgets); edit_localization(edit_widgets); + philos_temp_config_init(&obj_edit_config); } return edit_widgets; } @@ -61,35 +62,35 @@ void edit_config_init() { obj_edit_config.i_o_limit_write_size = NULL; obj_edit_config.size = 0; } -void edit_event(edit_window *widgets) { - g_signal_connect(G_OBJECT(widgets->btnEditCancel),"clicked",G_CALLBACK(edit_on_hide_subwindow),NULL); +void edit_event(temp_set_window *widgets) { + g_signal_connect(G_OBJECT(widgets->btnTempCancel),"clicked",G_CALLBACK(edit_on_hide_subwindow),NULL); g_signal_connect(G_OBJECT(widgets->Window), "destroy", G_CALLBACK(edit_destroy), NULL); - g_signal_connect(G_OBJECT(widgets->chkSoftRestrictionEdit), "toggled", G_CALLBACK(edit_init_windows), NULL); - g_signal_connect(G_OBJECT(widgets->chkSevereRestrictionEdit), "toggled", G_CALLBACK(edit_init_windows), NULL); - g_signal_connect(G_OBJECT(widgets->chkPaddingFLEdit), "toggled", G_CALLBACK(edit_init_windows), NULL); - g_signal_connect(G_OBJECT(widgets->chkCPULimitEdit), "toggled", G_CALLBACK(edit_init_windows), NULL); - g_signal_connect(G_OBJECT(widgets->chbEditRead), "toggled", G_CALLBACK(edit_init_windows), NULL); - g_signal_connect(G_OBJECT(widgets->chbEditWrite), "toggled", G_CALLBACK(edit_init_windows), NULL); + g_signal_connect(G_OBJECT(widgets->chkSoftRestrictionTemp), "toggled", G_CALLBACK(edit_init_windows), NULL); + g_signal_connect(G_OBJECT(widgets->chkSevereRestrictionTemp), "toggled", G_CALLBACK(edit_init_windows), NULL); + g_signal_connect(G_OBJECT(widgets->chkPaddingFLTemp), "toggled", G_CALLBACK(edit_init_windows), NULL); + g_signal_connect(G_OBJECT(widgets->chkCPULimitTemp), "toggled", G_CALLBACK(edit_init_windows), NULL); + g_signal_connect(G_OBJECT(widgets->chbTempRead), "toggled", G_CALLBACK(edit_init_windows), NULL); + g_signal_connect(G_OBJECT(widgets->chbTempWrite), "toggled", G_CALLBACK(edit_init_windows), NULL); - g_signal_connect(G_OBJECT(widgets->spiSevereRestrictionEdit),"value-changed",G_CALLBACK(edit_init_windows), NULL); - g_signal_connect(G_OBJECT(widgets->spinSevereRestrictionEdit),"value-changed",G_CALLBACK(edit_init_windows), NULL); - g_signal_connect(G_OBJECT(widgets->spinPaddingFLEdit),"value-changed",G_CALLBACK(edit_init_windows), NULL); - g_signal_connect(G_OBJECT(widgets->spinCPULimitEdit),"value-changed",G_CALLBACK(edit_init_windows), NULL); - g_signal_connect(G_OBJECT(widgets->spinEditRead),"value-changed",G_CALLBACK(edit_init_windows), NULL); - g_signal_connect(G_OBJECT(widgets->spinEditWrite),"value-changed",G_CALLBACK(edit_init_windows), NULL); - g_signal_connect(G_OBJECT(widgets->cmSevereRestrictionEdit),"changed",G_CALLBACK(wrapper_edit_init_windows_size_memory), widgets->spiSevereRestrictionEdit); - g_signal_connect(G_OBJECT(widgets->cmbSevereRestrictionEdit),"changed",G_CALLBACK(wrapper_edit_init_windows_size_memory), widgets->spinSevereRestrictionEdit); - g_signal_connect(G_OBJECT(widgets->cmbPaddingFLEdit),"changed",G_CALLBACK(wrapper_edit_init_windows_size_memory), widgets->spinPaddingFLEdit); - g_signal_connect(G_OBJECT(widgets->cbtEditRead),"changed",G_CALLBACK(wrapper_edit_init_windows_size_memory), widgets->spinEditRead); - g_signal_connect(G_OBJECT(widgets->cbtEditWrite),"changed",G_CALLBACK(wrapper_edit_init_windows_size_memory), widgets->spinEditWrite); - g_signal_connect(G_OBJECT(widgets->cbtEditDevice),"changed",G_CALLBACK(edit_init_windows), NULL); + g_signal_connect(G_OBJECT(widgets->spiSevereRestrictionTemp),"value-changed",G_CALLBACK(edit_init_windows), NULL); + g_signal_connect(G_OBJECT(widgets->spinSevereRestrictionTemp),"value-changed",G_CALLBACK(edit_init_windows), NULL); + g_signal_connect(G_OBJECT(widgets->spinPaddingFLTemp),"value-changed",G_CALLBACK(edit_init_windows), NULL); + g_signal_connect(G_OBJECT(widgets->spinCPULimitTemp),"value-changed",G_CALLBACK(edit_init_windows), NULL); + g_signal_connect(G_OBJECT(widgets->spinTempRead),"value-changed",G_CALLBACK(wrapper_edit_init_windows_size_memory), NULL); + g_signal_connect(G_OBJECT(widgets->spinTempWrite),"value-changed",G_CALLBACK(wrapper_edit_init_windows_size_memory), NULL); + g_signal_connect(G_OBJECT(widgets->cmSevereRestrictionTemp),"changed",G_CALLBACK(wrapper_edit_init_windows_size_memory), widgets->spiSevereRestrictionTemp); + g_signal_connect(G_OBJECT(widgets->cmbSevereRestrictionTemp),"changed",G_CALLBACK(wrapper_edit_init_windows_size_memory), widgets->spinSevereRestrictionTemp); + g_signal_connect(G_OBJECT(widgets->cmbPaddingFLTemp),"changed",G_CALLBACK(wrapper_edit_init_windows_size_memory), widgets->spinPaddingFLTemp); + g_signal_connect(G_OBJECT(widgets->cbtTempRead),"changed",G_CALLBACK(wrapper_edit_init_windows_size_memory), widgets->spinTempRead); + g_signal_connect(G_OBJECT(widgets->cbtTempWrite),"changed",G_CALLBACK(wrapper_edit_init_windows_size_memory), widgets->spinTempWrite); + g_signal_connect(G_OBJECT(widgets->cbtTempDevice),"changed",G_CALLBACK(combo_box_device_edit), NULL); } void edit_destroy(GtkWidget *self) { edit_widgets = NULL; } -void edit_localization(edit_window *widgets) { +void edit_localization(temp_set_window *widgets) { } @@ -98,7 +99,7 @@ void edit_on_hide_subwindow(GtkWidget *self) { edit_widgets = NULL; } -edit_window *get_widget_edit() { +temp_set_window *get_widget_edit() { return edit_widgets; } @@ -116,30 +117,64 @@ void wrapper_edit_init_windows_size_memory(GtkWidget *spin) { if (spin != NULL) { // gtk_spin_button_set_digits(GTK_SPIN_BUTTON(spin), 0); } + philos_set_active_widgets_device_io(edit_widgets->cbtTempDevice,edit_widgets->chbTempWrite, edit_widgets->spinTempWrite, edit_widgets->cbtTempWrite); + philos_set_active_widgets_device_io(edit_widgets->cbtTempDevice,edit_widgets->chbTempRead, edit_widgets->spinTempRead, edit_widgets->cbtTempRead); + philos_temp_add_disk(edit_widgets, &obj_edit_config); + philos_temp_del_disk(edit_widgets, &obj_edit_config); edit_init_windows(); } void edit_init_windows() { - philos_set_active_widgets(edit_widgets->chkSoftRestrictionEdit, edit_widgets->spiSevereRestrictionEdit, edit_widgets->cmSevereRestrictionEdit,0 ,CMD_RAW); - philos_set_active_widgets(edit_widgets->chkSevereRestrictionEdit, edit_widgets->spinSevereRestrictionEdit, edit_widgets->cmbSevereRestrictionEdit,0 , CMD_RAW); - philos_set_active_widgets(edit_widgets->chkPaddingFLEdit, edit_widgets->spinPaddingFLEdit, edit_widgets->cmbPaddingFLEdit,0 , CMD_SWAP); - philos_set_active_widgets(edit_widgets->chkCPULimitEdit, edit_widgets->spinCPULimitEdit, edit_widgets->lblCPULimitEdit,1 ,CMD_CPU); - philos_set_active_widgets_device_io(edit_widgets->cbtEditDevice,edit_widgets->chbEditWrite, edit_widgets->spinEditWrite, edit_widgets->cbtEditWrite); - philos_set_active_widgets_device_io(edit_widgets->cbtEditDevice,edit_widgets->chbEditRead, edit_widgets->spinEditRead, edit_widgets->cbtEditRead); - edit_generate_cmd(); + philos_set_active_widgets(edit_widgets->chkSoftRestrictionTemp, edit_widgets->spiSevereRestrictionTemp, edit_widgets->cmSevereRestrictionTemp,0 ,CMD_RAW); + philos_set_active_widgets(edit_widgets->chkSevereRestrictionTemp, edit_widgets->spinSevereRestrictionTemp, edit_widgets->cmbSevereRestrictionTemp,0 , CMD_RAW); + philos_set_active_widgets(edit_widgets->chkPaddingFLTemp, edit_widgets->spinPaddingFLTemp, edit_widgets->cmbPaddingFLTemp,0 , CMD_SWAP); + philos_set_active_widgets(edit_widgets->chkCPULimitTemp, edit_widgets->spinCPULimitTemp, edit_widgets->lblCPULimitTemp,1 ,CMD_CPU); + philos_set_active_widgets_device_io(edit_widgets->cbtTempDevice,edit_widgets->chbTempWrite, edit_widgets->spinTempWrite, edit_widgets->cbtTempWrite); + philos_set_active_widgets_device_io(edit_widgets->cbtTempDevice,edit_widgets->chbTempRead, edit_widgets->spinTempRead, edit_widgets->cbtTempRead); + philos_temp_generate_cmd(edit_widgets, &obj_edit_config); +} + +void combo_box_device_edit() { + philos_update_device_to_entry(edit_widgets, &obj_edit_config, 0); + philos_update_device_to_entry(edit_widgets, &obj_edit_config, 1); } int edit_get_soft_size() { - return gtk_combo_box_get_active(GTK_COMBO_BOX(edit_widgets->cmSevereRestrictionEdit)); + if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(edit_widgets->chkSoftRestrictionTemp))) { + return gtk_combo_box_get_active(GTK_COMBO_BOX(edit_widgets->cmSevereRestrictionTemp)); + } + else { + return -3; + } + } int edit_get_hard_size() { - return gtk_combo_box_get_active(GTK_COMBO_BOX(edit_widgets->cmbSevereRestrictionEdit)); + if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(edit_widgets->chkSevereRestrictionTemp))) { + return gtk_combo_box_get_active(GTK_COMBO_BOX(edit_widgets->cmbSevereRestrictionTemp)); + } + else { + return -3; + } } int edit_get_limit_cpu_size() { return -1; } int edit_get_limit_swap_size() { - return gtk_combo_box_get_active(GTK_COMBO_BOX(edit_widgets->cmbPaddingFLEdit)); + if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(edit_widgets->chkPaddingFLTemp))) { + return gtk_combo_box_get_active(GTK_COMBO_BOX(edit_widgets->cmbPaddingFLTemp)); + } + else { + return -3; + } + +} +int edit_get_quota_object_size() { + if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(edit_widgets->chkPaddingFLTemp))) { + return gtk_combo_box_get_active(GTK_COMBO_BOX(edit_widgets->cbxTempQuotaObj)); + } + else { + return -3; + } } int** edit_get_read_device() { @@ -171,21 +206,21 @@ char*** edit_get_select_device() { return &obj_edit_config.disk; } int edit_get_soft() { - return gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(edit_widgets->spiSevereRestrictionEdit)); + return gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(edit_widgets->spiSevereRestrictionTemp)); } int edit_get_hard() { - return gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(edit_widgets->spinSevereRestrictionEdit)); + return gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(edit_widgets->spinSevereRestrictionTemp)); } int edit_get_limit_cpu() { - if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(edit_widgets->chkCPULimitEdit))) { - return gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(edit_widgets->spinCPULimitEdit)); + if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(edit_widgets->chkCPULimitTemp))) { + return gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(edit_widgets->spinCPULimitTemp)); } else { return 0; } } int edit_get_limit_swap() { - return gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(edit_widgets->spinPaddingFLEdit)); + return gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(edit_widgets->spinPaddingFLTemp)); } // ================================================================= @@ -196,8 +231,8 @@ void edit_set_select_device(char*** str_value) { if ((*str_value)[0] == NULL) { return; } - int index = yon_gtk_combo_box_text_find(edit_widgets->cbtEditDevice, (*str_value)[0]); - gtk_combo_box_set_active(GTK_COMBO_BOX(edit_widgets->cbtEditDevice), index); + int index = yon_gtk_combo_box_text_find(edit_widgets->cbtTempDevice, (*str_value)[0]); + gtk_combo_box_set_active(GTK_COMBO_BOX(edit_widgets->cbtTempDevice), index); @@ -209,11 +244,11 @@ void edit_set_read_device(int* str_value, int* pow_mem) { if (str_value[0] == -2 || pow_mem[0] == -2) { return; } - edit_temp_set(str_value[0],pow_mem[0], edit_widgets->chbEditRead, - edit_widgets->spinEditRead, - edit_widgets->cbtEditRead); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(edit_widgets->chbEditRead), 1); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(edit_widgets->chbEditWrite), 1); + edit_temp_set(str_value[0],pow_mem[0], edit_widgets->chbTempRead, + edit_widgets->spinTempRead, + edit_widgets->cbtTempRead); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(edit_widgets->chbTempRead), 1); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(edit_widgets->chbTempWrite), 1); } void edit_set_write_device(int* str_value, int* pow_mem) { if (str_value == NULL || pow_mem == NULL) { @@ -223,41 +258,42 @@ void edit_set_write_device(int* str_value, int* pow_mem) { return; } else { - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(edit_widgets->chbEditWrite), 1); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(edit_widgets->chbTempWrite), 1); } - edit_temp_set(str_value[0],pow_mem[0], edit_widgets->chbEditWrite, - edit_widgets->spinEditWrite, - edit_widgets->cbtEditWrite); + edit_temp_set(str_value[0],pow_mem[0], edit_widgets->chbTempWrite, + edit_widgets->spinTempWrite, + edit_widgets->cbtTempWrite); } void edit_set_soft(int value, int pow_mem) { - edit_temp_set(value,pow_mem, edit_widgets->chkSoftRestrictionEdit, - edit_widgets->spiSevereRestrictionEdit, - edit_widgets->cmSevereRestrictionEdit); + edit_temp_set(value,pow_mem, edit_widgets->chkSoftRestrictionTemp, + edit_widgets->spiSevereRestrictionTemp, + edit_widgets->cmSevereRestrictionTemp); } void edit_set_hard(int value, int pow_mem) { - edit_temp_set(value,pow_mem, edit_widgets->chkSevereRestrictionEdit, - edit_widgets->spinSevereRestrictionEdit, - edit_widgets->cmbSevereRestrictionEdit); + edit_temp_set(value,pow_mem, edit_widgets->chkSevereRestrictionTemp, + edit_widgets->spinSevereRestrictionTemp, + edit_widgets->cmbSevereRestrictionTemp); } void edit_set_limit_cpu(int value, int pow_mem) { - edit_temp_set(value,pow_mem, edit_widgets->chkCPULimitEdit, - edit_widgets->spinCPULimitEdit, + edit_temp_set(value,pow_mem, edit_widgets->chkCPULimitTemp, + edit_widgets->spinCPULimitTemp, NULL); } void edit_set_limit_swap(int value, int pow_mem) { - edit_temp_set(value,pow_mem, edit_widgets->chkPaddingFLEdit, - edit_widgets->spinPaddingFLEdit, - edit_widgets->cmbPaddingFLEdit); + edit_temp_set(value,pow_mem, edit_widgets->chkPaddingFLTemp, + edit_widgets->spinPaddingFLTemp, + edit_widgets->cmbPaddingFLTemp); } void edit_temp_set(int value, int pow_mem, GtkWidget* cheek, GtkWidget* spin, GtkWidget* combo_box_text) { char* search = "-"; char* mem_size_pow = yon_char_from_int(value); - if (strstr(mem_size_pow, search) == 0) { + if (strstr(mem_size_pow, search) == 0 && pow_mem!=-3 && pow_mem>=-1) { int value = atoi(yon_char_divide_search(mem_size_pow, " ", -1)); gtk_spin_button_set_value(GTK_SPIN_BUTTON(spin), value); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(cheek), 1); if (combo_box_text != NULL) { // Todo: add code + printf("%d", pow_mem); gtk_combo_box_set_active(GTK_COMBO_BOX(combo_box_text), pow_mem); } } @@ -265,75 +301,4 @@ void edit_temp_set(int value, int pow_mem, GtkWidget* cheek, GtkWidget* spin, Gt gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(cheek), 0); } } -void edit_generate_cmd() { - - char* str_cmd = " "; - char* split_simvol = g_malloc0(sizeof(char)*2); - int size_bite = 0; - if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(edit_widgets->chkSoftRestrictionEdit))) { - size_bite = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(edit_widgets->spiSevereRestrictionEdit)); - str_cmd = yon_char_unite(str_cmd, - "MemoryHigh=", - yon_char_from_int(size_bite), - philos_str_size_pow_byte(edit_widgets->cmSevereRestrictionEdit), NULL); - split_simvol[0] = ','; - split_simvol[1] = '\0'; - } - if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(edit_widgets->chkSevereRestrictionEdit))) { - size_bite = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(edit_widgets->spinSevereRestrictionEdit)); - str_cmd = yon_char_unite(str_cmd, split_simvol, - "MemoryMax=", - yon_char_from_int(size_bite), - philos_str_size_pow_byte(edit_widgets->cmbSevereRestrictionEdit), NULL); - split_simvol[0] = ','; - split_simvol[1] = '\0'; - } - if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(edit_widgets->chkPaddingFLEdit))) { - size_bite = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(edit_widgets->spinPaddingFLEdit)); - str_cmd = yon_char_unite(str_cmd, split_simvol, - "MemorySwapMax=", - yon_char_from_int(size_bite), - philos_str_size_pow_byte(edit_widgets->cmbPaddingFLEdit), NULL); - split_simvol[0] = ','; - split_simvol[1] = '\0'; - } - if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(edit_widgets->chkCPULimitEdit))) { - size_bite = (int)gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(edit_widgets->spinCPULimitEdit)); - str_cmd = yon_char_unite(str_cmd, split_simvol, - "CPUQuota=", - yon_char_from_int(size_bite), - "%", NULL); - split_simvol[0] = ','; - split_simvol[1] = '\0'; - } - if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(edit_widgets->chbEditRead))) { - int menu_id = gtk_combo_box_get_active(GTK_COMBO_BOX(edit_widgets->cbtEditDevice)); - if (menu_id != -1) { - size_bite = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(edit_widgets->spinEditRead)); - str_cmd = yon_char_unite(str_cmd, split_simvol, - "IOReadBandwidthMax=\"", - get_device_cfg()->name_disk[menu_id], - " ", - yon_char_from_int(size_bite), - philos_str_size_pow_byte(edit_widgets->cbtEditRead),"\"", NULL); - } - split_simvol[0] = ','; - split_simvol[1] = '\0'; - - } - if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(edit_widgets->chbEditWrite))) { - int menu_id = gtk_combo_box_get_active(GTK_COMBO_BOX(edit_widgets->cbtEditDevice)); - if (menu_id != -1) { - size_bite = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(edit_widgets->spinEditWrite)); - str_cmd = yon_char_unite(str_cmd, split_simvol, - "IOWriteBandwidthMax=\"", - get_device_cfg()->name_disk[menu_id], - " ", - yon_char_from_int(size_bite), - philos_str_size_pow_byte(edit_widgets->cbtEditWrite),"\"", NULL); - } - } - gtk_entry_set_text(GTK_ENTRY(edit_widgets->entryEditCmd), str_cmd); - free(split_simvol); -} diff --git a/source/view_edit.h b/source/view_edit.h index 01a1341..d110191 100644 --- a/source/view_edit.h +++ b/source/view_edit.h @@ -16,53 +16,14 @@ #define CMD_CPU "lscpu | grep \"CPU(s):\" |grep -oE \"[0-9]{1,}\"" #define CMD_SWAP "grep '^Swap' /proc/meminfo | grep \"SwapTotal\" |grep -oE \"[0-9]{1,}\"" #define CMD_RAW "cat /proc/meminfo | grep \"MemTotal\" |grep -oE \"[0-9]{1,}\"" -// Переменные -typedef struct { - config_str disk; - int* i_o_limit_read; - int* i_o_limit_write; - int* i_o_limit_read_size; - int* i_o_limit_write_size; - int size; -} edit_config; -typedef struct { - GtkWidget* Window; - GtkWidget* btnSaveEditSave; - GtkWidget* btnEditCancel; - - GtkWidget* entryEditCmd; - GtkWidget* chbEditRead; - GtkWidget* spinEditRead; - GtkWidget* cbtEditRead; - - GtkWidget* chbEditWrite; - GtkWidget* spinEditWrite; - GtkWidget* cbtEditWrite; - - GtkWidget* chkSoftRestrictionEdit; - GtkWidget* spiSevereRestrictionEdit; - GtkWidget* cmSevereRestrictionEdit; - - GtkWidget* chkSevereRestrictionEdit; - GtkWidget* spinSevereRestrictionEdit; - GtkWidget* cmbSevereRestrictionEdit; - - GtkWidget* chkPaddingFLEdit; - GtkWidget* spinPaddingFLEdit; - GtkWidget* cmbPaddingFLEdit; - - GtkWidget* chkCPULimitEdit; - GtkWidget* spinCPULimitEdit; - GtkWidget* lblCPULimitEdit; - GtkWidget* cbtEditDevice; -} edit_window; // Функции -edit_window *edit_setup_window(char* glade_path); -void edit_event(edit_window *widgets); -void edit_localization(edit_window *widgets); +temp_set_window *edit_setup_window(char* glade_path); +void edit_event(temp_set_window *widgets); +void edit_localization(temp_set_window *widgets); void edit_on_hide_subwindow(GtkWidget *self); -edit_window *get_widget_edit(); +temp_set_window *get_widget_edit(); +void combo_box_device_edit(); void edit_show(GtkWidget *self, char* glade_path); void edit_destroy(GtkWidget *self); void edit_init_windows(); @@ -75,7 +36,6 @@ int edit_get_soft(); int edit_get_hard(); int edit_get_limit_cpu(); int edit_get_limit_swap(); -void edit_generate_cmd(); void wrapper_edit_show(); void edit_set_select_device(char*** str_value); void edit_set_read_device(int* str_value, int* pow_mem); @@ -93,7 +53,7 @@ int edit_get_hard_size(); int edit_get_limit_cpu_size(); int edit_get_limit_swap_size(); void edit_config_init(); -edit_config* get_edit_config(); +temp_config* get_edit_config(); void edit_set_active_widgets_device_io(GtkWidget *check, GtkWidget *spin, GtkWidget *combo); void edit_set_spin_adjustment(GtkWidget *check, GtkWidget *spin, GtkWidget *combo, size_t value); #endif \ No newline at end of file -- 2.35.1 From 1c055b09226bdf20035400fbb7269a0927b30ad1 Mon Sep 17 00:00:00 2001 From: Igor Belitskiy Date: Mon, 26 Jun 2023 10:22:24 +0600 Subject: [PATCH 44/91] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB=20=D0=B1=D0=B0=D0=B3=20=D1=81=20=D1=83=D0=B4=D0=B0?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5=D0=BC=20=D0=B8=D0=B7=20=D1=82?= =?UTF-8?q?=D0=B0=D0=B1=D0=BB=D0=B8=D1=86=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/ubl-settings-resourcequota.h | 2 +- source/ubl-utils.c | 24 +++++++++--------------- 2 files changed, 10 insertions(+), 16 deletions(-) diff --git a/source/ubl-settings-resourcequota.h b/source/ubl-settings-resourcequota.h index 0a6a4c6..04e9aad 100755 --- a/source/ubl-settings-resourcequota.h +++ b/source/ubl-settings-resourcequota.h @@ -43,7 +43,7 @@ #define CMD_GET_GROUP "cut -d: -f1 /etc/group" typedef char *string; -string version_application = "1.2-43-g3f8aab0"; +string version_application = "1.2-44-g708ecfc"; static char *local; diff --git a/source/ubl-utils.c b/source/ubl-utils.c index 8becf1d..f3ebf2a 100644 --- a/source/ubl-utils.c +++ b/source/ubl-utils.c @@ -671,7 +671,7 @@ void philos_split_size_memory(char* str_value, int* size, char* pow_memory) { } char* philos_format_cfg_str_size_memory(char* str_key, int value, int pow_size_memory) { - if (value == -1 || pow_size_memory == -3) { + if (value == -1 || value == -3 || pow_size_memory == -3) { return yon_char_new("-"); } char* str_value = yon_char_from_int(value); @@ -768,10 +768,10 @@ char*** yon_char_parsed_shrink_n3(char ***char_string, int *size, int item_to_de flag = 1; } if (flag == 0) { - yon_char_parsed_copy(&char_string[i], &new_char_parsed[i]); + yon_char_parsed_copy(&new_char_parsed[i],&char_string[i]); } else if (flag == 1 && i!=item_to_delete) { - yon_char_parsed_copy(&char_string[i], &new_char_parsed[i-1]); + yon_char_parsed_copy(&new_char_parsed[i-1], &char_string[i]); } } (*size)=(*size)-1; @@ -884,18 +884,12 @@ void yon_int_array_append(int **source, int append){ void philos_array_int_copy(int** source, int** copy) { int * new_int = g_malloc0(sizeof(int)*2); new_int[0] = (*copy)[0]; - if ((*copy)[0] == -2) { - yon_int_array_append(&new_int,(*copy)[0]); - } - else { - new_int[1] = -2; - int i = 2; - for (i=1;(*copy)[i]!=-2;i++) { - yon_int_array_append(&new_int,(*copy)[i]); - } + new_int[1] = -2; + int i = 2; + for (i=1;(*copy)[i]!=-2;i++) { + yon_int_array_append(&new_int,(*copy)[i]); } *source=new_int; - } // parsing functions @@ -1519,10 +1513,10 @@ int** remove_element_int_array_n3(int** array, int* size, int item_to_delete) { flag = 1; } if (flag == 0) { - philos_array_int_copy(&array[i],&new_int_parsed[i]); + philos_array_int_copy(&new_int_parsed[i],&array[i]); } else if (flag == 1 && i!=item_to_delete) { - philos_array_int_copy(&array[i],&new_int_parsed[i-1]); + philos_array_int_copy(&new_int_parsed[i-1],&array[i]); } } (*size)=(*size)-1; -- 2.35.1 From fe494e33214bf92b9fd0e8583972019426a675d9 Mon Sep 17 00:00:00 2001 From: Igor Belitskiy Date: Mon, 26 Jun 2023 15:02:48 +0600 Subject: [PATCH 45/91] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB=20=D0=B1=D0=B0=D0=B3=20=D1=81=20=D0=B7=D0=B0=D0=BF?= =?UTF-8?q?=D0=B8=D1=81=D1=8C=D1=8E=20=D0=B2=20=D0=BA=D0=BE=D0=BD=D1=84?= =?UTF-8?q?=D0=B8=D0=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/ubl-settings-resourcequota.c | 197 +++++++++------------------- source/ubl-settings-resourcequota.h | 2 +- source/ubl-utils.c | 100 ++++++++++++-- source/ubl-utils.h | 7 +- source/view_edit.c | 7 +- 5 files changed, 161 insertions(+), 152 deletions(-) diff --git a/source/ubl-settings-resourcequota.c b/source/ubl-settings-resourcequota.c index 82b7788..3fc1733 100644 --- a/source/ubl-settings-resourcequota.c +++ b/source/ubl-settings-resourcequota.c @@ -334,24 +334,23 @@ 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--; - set_pow_size_memory("-", &main_config.type_quota_size, index); - set_size_memory_integer_char("-", &main_config.type_quota, index); + philos_set_pow_size_memory("-", &main_config.type_quota_size, index, array_size_pow); + philos_set_size_memory_integer_char("-", &main_config.type_quota, index); - set_pow_size_memory("-", &main_config.quota_volume_size, index); - set_size_memory_integer_char("-", &main_config.quota_volume, index); + philos_set_pow_size_memory("-", &main_config.quota_volume_size, index, array_size_pow); + philos_set_size_memory_integer_char("-", &main_config.quota_volume, index); - set_pow_size_memory("-", &main_config.cpu_limit_size, index); + philos_set_pow_size_memory("-", &main_config.cpu_limit_size, index, array_size_pow); set_size_memory_integer("-", &main_config.cpu_limit, index); - set_pow_size_memory("-", &main_config.soft_raw_limit_size, index); + philos_set_pow_size_memory("-", &main_config.soft_raw_limit_size, index, array_size_pow); set_size_memory_integer("-", &main_config.soft_raw_limit, index); - set_pow_size_memory("-", &main_config.hard_raw_limit_size, index); + philos_set_pow_size_memory("-", &main_config.hard_raw_limit_size, index, array_size_pow); set_size_memory_integer("-", &main_config.hard_raw_limit, index); - set_pow_size_memory("-", &main_config.swap_size, index); + philos_set_pow_size_memory("-", &main_config.swap_size, index, array_size_pow); set_size_memory_integer("-",&main_config.swap , index); - } void str_split_key(char* source_value, int index) { @@ -431,19 +430,19 @@ void str_split_value(char* values, int index) { get_param_io_limit(arr_values, index_1, size,index, "IOWriteBandwidthMax"); } if (yon_char_find_count(key, "MemoryHigh") != 0) { - set_pow_size_memory(yon_char_new(value), &main_config.soft_raw_limit_size, index); + philos_set_pow_size_memory(yon_char_new(value), &main_config.soft_raw_limit_size, index, array_size_pow); set_size_memory_integer(yon_char_new(value), &main_config.soft_raw_limit, index); } if (yon_char_find_count(key, "MemoryMax") != 0) { - set_pow_size_memory(yon_char_new(value), &main_config.hard_raw_limit_size, index); + philos_set_pow_size_memory(yon_char_new(value), &main_config.hard_raw_limit_size, index, array_size_pow); set_size_memory_integer(yon_char_new(value), &main_config.hard_raw_limit, index); } if (yon_char_find_count(key, "MemorySwapMax") != 0) { - set_pow_size_memory(yon_char_new(value), &main_config.swap_size, index); + philos_set_pow_size_memory(yon_char_new(value), &main_config.swap_size, index, array_size_pow); set_size_memory_integer(yon_char_new(value), &main_config.swap, index); } if (yon_char_find_count(key, "CPUQuota") != 0) { - set_pow_size_memory(yon_char_new(value), &main_config.cpu_limit_size, index); + philos_set_pow_size_memory(yon_char_new(value), &main_config.cpu_limit_size, index, array_size_pow); set_size_memory_integer(yon_char_new(value), &main_config.cpu_limit, index); } } @@ -466,7 +465,7 @@ void get_param_io_limit(char** arr_values, int index_start, int size, int index_ char* disk = yon_char_divide_search(yon_char_new(value), " ", -1); array_disk = yon_char_parsed_append(array_disk, &index_n2, disk); index_n2--; - set_pow_size_memory(yon_char_new(value), &array_limit_size, index_n2); + philos_set_pow_size_memory(yon_char_new(value), &array_limit_size, index_n2, array_size_pow); set_size_memory_integer(yon_char_new(value), &array_limit, index_n2); flag_parsed = 1; index_n2++; @@ -483,7 +482,7 @@ void get_param_io_limit(char** arr_values, int index_start, int size, int index_ char* disk = yon_char_divide_search(yon_char_new(arr_values[i]), " ", -1); array_disk = yon_char_parsed_append(array_disk, &index_n2, disk); index_n2--; - set_pow_size_memory(yon_char_new(arr_values[i]), &array_limit_size, index_n2); + philos_set_pow_size_memory(yon_char_new(arr_values[i]), &array_limit_size, index_n2, array_size_pow); set_size_memory_integer(yon_char_new(arr_values[i]), &array_limit, index_n2); index_n2++; } @@ -539,72 +538,6 @@ void set_size_memory_integer(char* str_find, int** array_data, int index) { } -void set_size_memory_integer_char(char* str_find, char*** array_data, int index) { - char* simv_del_array[10] = {"K","M","G","T","k","m","g","t"," ","%"}; - for (size_t i = 0; i < 10; i++) { - if (strstr(str_find, simv_del_array[i])) { - str_find = yon_char_divide_search(str_find, simv_del_array[i], -1); - } - } - if (strstr(str_find, " ") != NULL) { - char* mem_s = yon_char_new(str_find); - yon_char_divide_search(mem_s, " ", -1); - *array_data = yon_char_parsed_append(*array_data, &index, mem_s); - } - if (strstr(str_find, "-") != NULL) { - *array_data = yon_char_parsed_append(*array_data, &index, "-"); - } - else { - if (str_find[0] == '\"') { - yon_char_divide(str_find, 0); - size_t length = strlen(str_find); - str_find = yon_char_divide(str_find, length-2); - } - if (strstr(str_find, " ") == NULL) { - *array_data = yon_char_parsed_append(*array_data, &index, str_find); - } - - } -} -void set_pow_size_memory(char* str_find, int** array_size,int index) { - size_t length = strlen(str_find); - if (strstr(str_find,"K") != NULL) { - *array_size = philos_int_append(*array_size, &index, 0); - str_find = yon_char_divide(str_find, length-1); - str_find = yon_char_unite(str_find, " ", STR_KB, NULL); - index--; - } - else if (strstr(str_find,"M") != NULL) { - *array_size = philos_int_append(*array_size, &index, 1); - str_find = yon_char_divide(str_find, length-1); - str_find = yon_char_unite(str_find," ", STR_MB, NULL); - index--; - } - else if (strstr(str_find,"G") != NULL) { - *array_size = philos_int_append(*array_size, &index, 2); - str_find = yon_char_divide(str_find, length-1); - str_find = yon_char_unite(str_find," ", STR_GB, NULL); - index--; - } - else if (strstr(str_find,"T") != NULL) { - *array_size = philos_int_append(*array_size, &index, 3); - str_find = yon_char_divide(str_find, length-1); - - str_find = yon_char_unite(str_find," ", STR_TB, NULL); - index--; - } - else if (strstr(str_find,"%%") != NULL) { - *array_size = philos_int_append(*array_size, &index, -1); - str_find = yon_char_divide(str_find, length-1); - index--; - } - else if (strstr(str_find,"-") != NULL) { - *array_size = philos_int_append(*array_size, &index, -1); - index--; - } - -} - void main_cbx_2_event() { int menu_id = gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->cbtMainInfoLevel2)); char* cmd_text_param = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(widgets->cbtMainInfoLevel2)); @@ -1033,52 +966,36 @@ char* save_format_value(int index) { split_simvol[0] = 0; split_simvol[1] = 0; if (main_config.soft_raw_limit[index]==0) { - char* value1 = yon_char_unite(philos_format_cfg_str_size_memory("MemoryHigh=", main_config.soft_raw_limit[index],main_config.soft_raw_limit_size[index]),NULL); - if (strstr(value1,"-")) { - free(value1); - } - else { - value = yon_char_new(value1); - free(value1); + char* value_size = philos_format_cfg_str_size_memory("MemoryHigh=", main_config.soft_raw_limit[index],main_config.soft_raw_limit_size[index]); + if (!strstr(value_size,"-")) { + value = yon_char_unite(value ,split_simvol, value_size, NULL); split_simvol[0] = ','; split_simvol[1] = '\0'; } + free(value_size); } if (main_config.hard_raw_limit[index]==0) { - char* value1 = yon_char_unite(value ,split_simvol, philos_format_cfg_str_size_memory("MemoryMax=", main_config.hard_raw_limit[index],main_config.hard_raw_limit_size[index]), NULL); - if (strstr(value1,"-")) { - free(value1); - } - else { - value = yon_char_new(value1); - free(value1); + char* value_size = philos_format_cfg_str_size_memory("MemoryMax=", main_config.hard_raw_limit[index],main_config.hard_raw_limit_size[index]); + if (!strstr(value_size,"-")) { + value = yon_char_unite(value ,split_simvol, value_size, NULL); split_simvol[0] = ','; split_simvol[1] = '\0'; } + free(value_size); } if (main_config.swap[index]==0) { - char* value1 = yon_char_unite(value ,split_simvol, philos_format_cfg_str_size_memory("MemorySwapMax=", main_config.swap[index],main_config.swap_size[index]), NULL); - if (strstr(value1,"-")) { - free(value1); - } - else { - value = yon_char_new(value1); - free(value1); + char* value_size = philos_format_cfg_str_size_memory("MemorySwapMax=", main_config.swap[index],main_config.swap_size[index]); + if (!strstr(value_size,"-")) { + value = yon_char_unite(value ,split_simvol, value_size, NULL); split_simvol[0] = ','; split_simvol[1] = '\0'; } + free(value_size); } - if (main_config.cpu_limit[index]==0) { - char* value1 = yon_char_unite(value ,split_simvol,"CPUQuota=", main_config.cpu_limit[index], NULL); - if (strstr(value1,"-")) { - free(value1); - } - else { - value = yon_char_new(value1); - free(value1); - split_simvol[0] = ','; - split_simvol[1] = '\0'; - } + if (main_config.cpu_limit[index]>=0) { + value = yon_char_unite(value ,split_simvol,"CPUQuota=", yon_char_from_int(main_config.cpu_limit[index]), "%", NULL); + split_simvol[0] = ','; + split_simvol[1] = '\0'; } value = add_io_str_format_ubconfig(value, "IOReadBandwidthMax", main_config.i_o_limit_read, main_config.i_o_limit_read_size, main_config.disk, index); value = add_io_str_format_ubconfig(value, "IOWriteBandwidthMax", main_config.i_o_limit_write, main_config.i_o_limit_write_size, main_config.disk, index); @@ -1086,33 +1003,36 @@ char* save_format_value(int index) { } char* add_io_str_format_ubconfig(char* cmd_io, char* key, int** i_o_limit, int** i_o_limit_size, char*** disk, int index) { char split_simvol[2] = {0}; - if (i_o_limit) { - if (i_o_limit[index] != NULL) { - if (i_o_limit[index] != NULL) { - for (int i = 0;i_o_limit[index][i] != -2; i++) { - if (i==0 && strlen(cmd_io) == 0) { - cmd_io = yon_char_unite(cmd_io, ",", key, "=", NULL); - } - if (cmd_io == NULL) { - cmd_io = yon_char_new(""); - } - int read_limit = i_o_limit[index][i]; - char* read_disk = disk[index][i]; - int read_limit_size = i_o_limit_size[index][i]; - if (read_limit >= 0 && read_disk && read_limit_size >= 0) { - char* num_and_pow_size = philos_format_cfg_str_size_memory("",read_limit, read_limit_size); - cmd_io = yon_char_unite(cmd_io, split_simvol, read_disk, " ",num_and_pow_size, NULL); - split_simvol[0] = ','; - split_simvol[1] = '\0'; - } - - } - } + if (i_o_limit== NULL) {return cmd_io;} + if (i_o_limit_size[index] == NULL) {return cmd_io;} + if (i_o_limit[index] == NULL) {return cmd_io;} + int len_array = 0; + for (int i = 0;i_o_limit[index][i] != -2; i++) { + len_array += 1; + } + for (int i=0; i0) { + size_t resurs = get_resurs_total(cmd); + if (value_spin>0) { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check),1); } else if (active == 0) { gtk_spin_button_set_value(GTK_SPIN_BUTTON(spin), 0); } if (flag_cpu == 0) { - philos_set_spin_adjustment(check, spin, combo, get_resurs_total(cmd)); + philos_set_spin_adjustment(check, spin, combo, resurs); + if (value_spin>resurs) { + gtk_spin_button_set_value(GTK_SPIN_BUTTON(spin), resurs); + } } else { - philos_set_spin_adjustment(check, spin, NULL, get_resurs_total(cmd)); + philos_set_spin_adjustment(check, spin, NULL, resurs); } } diff --git a/source/ubl-utils.h b/source/ubl-utils.h index 58e0b65..27c2baa 100644 --- a/source/ubl-utils.h +++ b/source/ubl-utils.h @@ -14,6 +14,7 @@ #include #include #include "ubl-cmake.h" + #ifdef WEBKIT_FOUND #include #endif @@ -37,7 +38,7 @@ #define catch(x) ExitJmp:if(__HadError) #define throw(x) {__HadError=true;goto ExitJmp;} #define file_source_login_min_max "/etc/login.defs" - +static char** array_size_pow; typedef enum { #ifdef __GTK_H__ @@ -204,6 +205,10 @@ char** philos_str_split(char *parameters, int *size, char *divider); void philos_array_string_remove_char(char*** array, char* str_remove, int size); +void philos_set_pow_size_memory(char* str_find, int** array_size,int index, char** array_size_pow); + +void philos_set_size_memory_integer_char(char* str_find, char*** array_data, int index); + char **yon_char_parsed_shrink(char **char_string, int *size, int item_to_delete); char*** yon_char_parsed_shrink_n3(char ***char_string, int *size, int item_to_delete); diff --git a/source/view_edit.c b/source/view_edit.c index 3e824fe..c141e18 100644 --- a/source/view_edit.c +++ b/source/view_edit.c @@ -285,15 +285,10 @@ void edit_set_limit_swap(int value, int pow_mem) { edit_widgets->cmbPaddingFLTemp); } void edit_temp_set(int value, int pow_mem, GtkWidget* cheek, GtkWidget* spin, GtkWidget* combo_box_text) { - char* search = "-"; - char* mem_size_pow = yon_char_from_int(value); - if (strstr(mem_size_pow, search) == 0 && pow_mem!=-3 && pow_mem>=-1) { - int value = atoi(yon_char_divide_search(mem_size_pow, " ", -1)); + if (pow_mem!=-3 && pow_mem>=-1 && value>=1) { gtk_spin_button_set_value(GTK_SPIN_BUTTON(spin), value); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(cheek), 1); if (combo_box_text != NULL) { - // Todo: add code - printf("%d", pow_mem); gtk_combo_box_set_active(GTK_COMBO_BOX(combo_box_text), pow_mem); } } -- 2.35.1 From a9ac7370c608030b6c58163a97ac56813def0c88 Mon Sep 17 00:00:00 2001 From: Igor Belitskiy Date: Mon, 26 Jun 2023 17:56:59 +0600 Subject: [PATCH 46/91] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=20=D0=B1=D0=B0=D0=B3=20=D1=81=20=D0=B2=D1=8B?= =?UTF-8?q?=D0=B1=D0=BE=D1=80=D0=BE=D0=BC=20=D0=B1=D0=BB=D0=BE=D1=87=D0=BD?= =?UTF-8?q?=D1=8B=D1=85=20=D1=83=D1=81=D1=82=D1=80=D0=BE=D0=B9=D1=81=D1=82?= =?UTF-8?q?=D0=B2=20=D0=BF=D1=80=D0=B8=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/ubl-settings-resourcequota.c | 7 +++---- source/ubl-settings-resourcequota.h | 2 +- source/ubl-utils.c | 6 ++---- source/view_add.c | 22 ++++++++++++++++++++-- source/view_edit.c | 19 +++++++++++++++++-- ubl-settings-resourcequota.glade | 1 + 6 files changed, 44 insertions(+), 13 deletions(-) diff --git a/source/ubl-settings-resourcequota.c b/source/ubl-settings-resourcequota.c index 3fc1733..fa8cc31 100644 --- a/source/ubl-settings-resourcequota.c +++ b/source/ubl-settings-resourcequota.c @@ -836,12 +836,11 @@ void wrapper_edit_show() { int index = atoi(str_iter); edit_show(NULL, glade_path); edit_set_select_device(&main_config.disk[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_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_init_windows(); edit_set_limit_swap(main_config.swap[index], main_config.swap_size[index]); edit_event(get_widget_edit()); g_signal_connect(G_OBJECT(get_widget_edit()->btnSaveTempSave), "clicked", G_CALLBACK(main_edit_btn_save), NULL); @@ -1017,7 +1016,6 @@ char* add_io_str_format_ubconfig(char* cmd_io, char* key, int** i_o_limit, int else if (i==0 && strlen(cmd_io) > 3) { cmd_io = yon_char_unite(cmd_io, ",", key, "=", NULL); } - puts(cmd_io); int read_limit = i_o_limit[index][i]; char* read_disk = disk[index][i]; int read_limit_size = i_o_limit_size[index][i]; @@ -1078,7 +1076,7 @@ char* template_format_str_set_save(dictionary* load_cfg, char* source_set_cmd) { key = yon_char_new(save_format_key(index)); value = yon_char_new(save_format_value(index)); if (key != NULL && value != NULL) { - cmd = yon_char_unite(cmd, " " , key, "=\"" , value, "\"\n", NULL); + cmd = yon_char_unite(cmd, " " , key, "=\"" , value, "\" ", NULL); puts(cmd); flag_save = 1; } @@ -1091,6 +1089,7 @@ char* template_format_str_set_save(dictionary* load_cfg, char* source_set_cmd) { } if (flag_save && check_save(load_cfg)== 0) { + cmd = yon_char_unite(cmd, "\"", NULL); return cmd; } free(cmd); diff --git a/source/ubl-settings-resourcequota.h b/source/ubl-settings-resourcequota.h index fb361b9..0ed5af7 100755 --- a/source/ubl-settings-resourcequota.h +++ b/source/ubl-settings-resourcequota.h @@ -43,7 +43,7 @@ #define CMD_GET_GROUP "cut -d: -f1 /etc/group" typedef char *string; -string version_application = "1.2-45-g1c055b0"; +string version_application = "1.2-46-gfe494e3"; static char *local; diff --git a/source/ubl-utils.c b/source/ubl-utils.c index 8697289..cd5f4a4 100644 --- a/source/ubl-utils.c +++ b/source/ubl-utils.c @@ -1299,7 +1299,7 @@ void philos_temp_generate_cmd(temp_set_window *widgets, temp_config* _config) { } - + puts(str_cmd); gtk_entry_set_text(GTK_ENTRY(widgets->entryTempCmd), str_cmd); free(split_simvol); } @@ -1364,10 +1364,7 @@ void philos_update_device_to_entry(temp_set_window *widgets, temp_config* _confi break; } } - printf("%d\n", index_find); - if (index_find != -1) { - printf("%d\n", _config->i_o_limit_read[index_find]); if (flag_check_array==0) { if (_config->i_o_limit_read[index_find]==-2 || _config->i_o_limit_read[index_find]==-1) { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widgets->chbTempRead), 0); @@ -1486,6 +1483,7 @@ void philos_temp_add_disk(temp_set_window *widgets, temp_config* _config){ _config->i_o_limit_write_size[index_find] = -1; _config->i_o_limit_write[index_find] = -1; } + } } else { diff --git a/source/view_add.c b/source/view_add.c index 31a8419..398380e 100644 --- a/source/view_add.c +++ b/source/view_add.c @@ -79,8 +79,22 @@ void event_check_io_device() { } void combo_box_device() { + g_signal_handlers_block_by_func(G_OBJECT(add_widgets->cbtTempDevice), G_CALLBACK(combo_box_device), NULL); + g_signal_handlers_block_by_func(G_OBJECT(add_widgets->cbtTempRead), G_CALLBACK(event_check_io_device), NULL); + g_signal_handlers_block_by_func(G_OBJECT(add_widgets->cbtTempWrite), G_CALLBACK(event_check_io_device), NULL); + g_signal_handlers_block_by_func(G_OBJECT(add_widgets->spinTempRead), G_CALLBACK(event_check_io_device), NULL); + g_signal_handlers_block_by_func(G_OBJECT(add_widgets->spinTempWrite), G_CALLBACK(event_check_io_device), NULL); + g_signal_handlers_block_by_func(G_OBJECT(add_widgets->chbTempRead), G_CALLBACK(event_check_io_device), NULL); + g_signal_handlers_block_by_func(G_OBJECT(add_widgets->chbTempWrite), G_CALLBACK(event_check_io_device), NULL); philos_update_device_to_entry(add_widgets, &obj_add_config, 0); philos_update_device_to_entry(add_widgets, &obj_add_config, 1); + g_signal_handlers_unblock_by_func(G_OBJECT(add_widgets->cbtTempDevice), G_CALLBACK(combo_box_device), NULL); + g_signal_handlers_unblock_by_func(G_OBJECT(add_widgets->cbtTempRead), G_CALLBACK(event_check_io_device), NULL); + g_signal_handlers_unblock_by_func(G_OBJECT(add_widgets->cbtTempWrite), G_CALLBACK(event_check_io_device), NULL); + g_signal_handlers_unblock_by_func(G_OBJECT(add_widgets->spinTempRead), G_CALLBACK(event_check_io_device), NULL); + g_signal_handlers_unblock_by_func(G_OBJECT(add_widgets->spinTempWrite), G_CALLBACK(event_check_io_device), NULL); + g_signal_handlers_unblock_by_func(G_OBJECT(add_widgets->chbTempRead), G_CALLBACK(event_check_io_device), NULL); + g_signal_handlers_unblock_by_func(G_OBJECT(add_widgets->chbTempWrite), G_CALLBACK(event_check_io_device), NULL); } void add_event(temp_set_window *widgets) { @@ -155,7 +169,8 @@ void add_show(GtkWidget *self, char* glade_path) { char* add_get_select_device_to_level_2() { char* text = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(add_widgets->cbxTempQuotaLevel2)); - if (text != NULL) { + int disk_id = gtk_combo_box_get_active(GTK_COMBO_BOX(add_widgets->cbxTempQuotaLevel2)); + if (disk_id != -1) { return text; } else { @@ -187,8 +202,11 @@ int** add_get_write_device_size_pow() { return &obj_add_config.i_o_limit_write_size; } char*** add_get_select_device() { + if (obj_add_config.size == 0) { + obj_add_config.disk = yon_char_parsed_append(obj_add_config.disk,&obj_add_config.size, "-"); + } obj_add_config.disk = yon_char_parsed_append(obj_add_config.disk,&obj_add_config.size, NULL); - obj_add_config.size--; + obj_add_config.size-=2; return &obj_add_config.disk; } diff --git a/source/view_edit.c b/source/view_edit.c index c141e18..c7a54cb 100644 --- a/source/view_edit.c +++ b/source/view_edit.c @@ -119,6 +119,7 @@ void wrapper_edit_init_windows_size_memory(GtkWidget *spin) { } philos_set_active_widgets_device_io(edit_widgets->cbtTempDevice,edit_widgets->chbTempWrite, edit_widgets->spinTempWrite, edit_widgets->cbtTempWrite); philos_set_active_widgets_device_io(edit_widgets->cbtTempDevice,edit_widgets->chbTempRead, edit_widgets->spinTempRead, edit_widgets->cbtTempRead); + philos_temp_add_disk(edit_widgets, &obj_edit_config); philos_temp_del_disk(edit_widgets, &obj_edit_config); edit_init_windows(); @@ -135,8 +136,22 @@ void edit_init_windows() { } void combo_box_device_edit() { + g_signal_handlers_block_by_func(G_OBJECT(edit_widgets->cbtTempDevice), G_CALLBACK(combo_box_device_edit), NULL); + g_signal_handlers_block_by_func(G_OBJECT(edit_widgets->cbtTempRead), G_CALLBACK(wrapper_edit_init_windows_size_memory), NULL); + g_signal_handlers_block_by_func(G_OBJECT(edit_widgets->cbtTempWrite), G_CALLBACK(wrapper_edit_init_windows_size_memory), NULL); + g_signal_handlers_block_by_func(G_OBJECT(edit_widgets->spinTempRead), G_CALLBACK(wrapper_edit_init_windows_size_memory), NULL); + g_signal_handlers_block_by_func(G_OBJECT(edit_widgets->spinTempWrite), G_CALLBACK(wrapper_edit_init_windows_size_memory), NULL); + g_signal_handlers_block_by_func(G_OBJECT(edit_widgets->chbTempRead), G_CALLBACK(wrapper_edit_init_windows_size_memory), NULL); + g_signal_handlers_block_by_func(G_OBJECT(edit_widgets->chbTempWrite), G_CALLBACK(wrapper_edit_init_windows_size_memory), NULL); philos_update_device_to_entry(edit_widgets, &obj_edit_config, 0); philos_update_device_to_entry(edit_widgets, &obj_edit_config, 1); + g_signal_handlers_unblock_by_func(G_OBJECT(edit_widgets->cbtTempDevice), G_CALLBACK(combo_box_device_edit), NULL); + g_signal_handlers_unblock_by_func(G_OBJECT(edit_widgets->cbtTempRead), G_CALLBACK(wrapper_edit_init_windows_size_memory), NULL); + g_signal_handlers_unblock_by_func(G_OBJECT(edit_widgets->cbtTempWrite), G_CALLBACK(wrapper_edit_init_windows_size_memory), NULL); + g_signal_handlers_unblock_by_func(G_OBJECT(edit_widgets->spinTempRead), G_CALLBACK(wrapper_edit_init_windows_size_memory), NULL); + g_signal_handlers_unblock_by_func(G_OBJECT(edit_widgets->spinTempWrite), G_CALLBACK(wrapper_edit_init_windows_size_memory), NULL); + g_signal_handlers_unblock_by_func(G_OBJECT(edit_widgets->chbTempRead), G_CALLBACK(wrapper_edit_init_windows_size_memory), NULL); + g_signal_handlers_unblock_by_func(G_OBJECT(edit_widgets->chbTempWrite), G_CALLBACK(wrapper_edit_init_windows_size_memory), NULL); } int edit_get_soft_size() { @@ -285,10 +300,10 @@ void edit_set_limit_swap(int value, int pow_mem) { edit_widgets->cmbPaddingFLTemp); } void edit_temp_set(int value, int pow_mem, GtkWidget* cheek, GtkWidget* spin, GtkWidget* combo_box_text) { - if (pow_mem!=-3 && pow_mem>=-1 && value>=1) { + if (pow_mem!=-3 && pow_mem>=-1 && value>=0) { gtk_spin_button_set_value(GTK_SPIN_BUTTON(spin), value); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(cheek), 1); - if (combo_box_text != NULL) { + if (combo_box_text) { gtk_combo_box_set_active(GTK_COMBO_BOX(combo_box_text), pow_mem); } } diff --git a/ubl-settings-resourcequota.glade b/ubl-settings-resourcequota.glade index 182e604..68a9cd0 100644 --- a/ubl-settings-resourcequota.glade +++ b/ubl-settings-resourcequota.glade @@ -1936,6 +1936,7 @@ True + True False 5 5 -- 2.35.1 From 1dfc1c2d78c9fc44dcc240726f1796b3ef3346e6 Mon Sep 17 00:00:00 2001 From: Igor Belitskiy Date: Tue, 27 Jun 2023 11:09:53 +0600 Subject: [PATCH 47/91] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=20=D0=B1=D0=B0=D0=B3=20=D0=BF=D1=80=D0=B8=20?= =?UTF-8?q?=D0=BE=D1=82=D0=BA=D1=80=D1=8B=D1=82=D0=B8=D0=B5=20=D0=BE=D0=BA?= =?UTF-8?q?=D0=BD=D0=B0=20=D1=80=D0=B5=D0=B4=D0=B0=D0=BA=D1=82=D0=B8=D1=80?= =?UTF-8?q?=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/ubl-settings-resourcequota.c | 8 ++++++++ source/ubl-settings-resourcequota.h | 2 +- source/view_edit.c | 9 ++++++++- source/view_edit.h | 1 + 4 files changed, 18 insertions(+), 2 deletions(-) diff --git a/source/ubl-settings-resourcequota.c b/source/ubl-settings-resourcequota.c index fa8cc31..12f81e9 100644 --- a/source/ubl-settings-resourcequota.c +++ b/source/ubl-settings-resourcequota.c @@ -834,7 +834,14 @@ void wrapper_edit_show() { if(gtk_tree_selection_get_selected(selection, &model, &iter)) { char* str_iter = gtk_tree_model_get_string_from_iter(model, &iter); int index = atoi(str_iter); + size_t size_disk_array = 0; + if (main_config.disk) { + for (size_disk_array; main_config.disk[index][size_disk_array]; size_disk_array++) { + puts(main_config.disk[index][size_disk_array]); + } + } edit_show(NULL, glade_path); + edit_set_size_arrays(size_disk_array); edit_set_select_device(&main_config.disk[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]); @@ -842,6 +849,7 @@ void wrapper_edit_show() { 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_limit_swap(main_config.swap[index], main_config.swap_size[index]); + edit_event(get_widget_edit()); g_signal_connect(G_OBJECT(get_widget_edit()->btnSaveTempSave), "clicked", G_CALLBACK(main_edit_btn_save), NULL); edit_init_windows(); diff --git a/source/ubl-settings-resourcequota.h b/source/ubl-settings-resourcequota.h index 0ed5af7..bb412ce 100755 --- a/source/ubl-settings-resourcequota.h +++ b/source/ubl-settings-resourcequota.h @@ -43,7 +43,7 @@ #define CMD_GET_GROUP "cut -d: -f1 /etc/group" typedef char *string; -string version_application = "1.2-46-gfe494e3"; +string version_application = "1.2-47-ga9ac737"; static char *local; diff --git a/source/view_edit.c b/source/view_edit.c index c7a54cb..d6716bd 100644 --- a/source/view_edit.c +++ b/source/view_edit.c @@ -39,7 +39,6 @@ temp_set_window *edit_setup_window(char* glade_path){ edit_widgets->chbTempWrite = yon_gtk_builder_get_widget(builder,"chbEditWrite"); edit_widgets->cbtTempWrite = yon_gtk_builder_get_widget(builder,"cbtEditWrite"); edit_widgets->entryTempCmd = yon_gtk_builder_get_widget(builder,"entryEditCmd"); - edit_config_init(); device_fill_disk(edit_widgets->cbtTempDevice); // edit_event(edit_widgets); edit_localization(edit_widgets); @@ -246,6 +245,7 @@ void edit_set_select_device(char*** str_value) { if ((*str_value)[0] == NULL) { return; } + yon_char_parsed_copy(&obj_edit_config.disk, str_value); int index = yon_gtk_combo_box_text_find(edit_widgets->cbtTempDevice, (*str_value)[0]); gtk_combo_box_set_active(GTK_COMBO_BOX(edit_widgets->cbtTempDevice), index); @@ -264,6 +264,8 @@ void edit_set_read_device(int* str_value, int* pow_mem) { edit_widgets->cbtTempRead); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(edit_widgets->chbTempRead), 1); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(edit_widgets->chbTempWrite), 1); + philos_array_int_copy(&obj_edit_config.i_o_limit_read, &str_value); + philos_array_int_copy(&obj_edit_config.i_o_limit_read_size, &pow_mem); } void edit_set_write_device(int* str_value, int* pow_mem) { if (str_value == NULL || pow_mem == NULL) { @@ -278,6 +280,11 @@ void edit_set_write_device(int* str_value, int* pow_mem) { edit_temp_set(str_value[0],pow_mem[0], edit_widgets->chbTempWrite, edit_widgets->spinTempWrite, edit_widgets->cbtTempWrite); + philos_array_int_copy(&obj_edit_config.i_o_limit_write, &str_value); + philos_array_int_copy(&obj_edit_config.i_o_limit_write_size, &pow_mem); +} +void edit_set_size_arrays(size_t size_array) { + obj_edit_config.size = size_array; } void edit_set_soft(int value, int pow_mem) { edit_temp_set(value,pow_mem, edit_widgets->chkSoftRestrictionTemp, diff --git a/source/view_edit.h b/source/view_edit.h index d110191..6c09a41 100644 --- a/source/view_edit.h +++ b/source/view_edit.h @@ -48,6 +48,7 @@ void edit_temp_set(int value, int pow_mem, GtkWidget* cheek, GtkWidget* spin, Gt int** edit_get_read_device_size_pow(); int** edit_get_write_device_size_pow(); +void edit_set_size_arrays(size_t size_array); int edit_get_soft_size(); int edit_get_hard_size(); int edit_get_limit_cpu_size(); -- 2.35.1 From 2883b81cc3c6c223713ae7464a7a80b76d311ecb Mon Sep 17 00:00:00 2001 From: Igor Belitskiy Date: Tue, 27 Jun 2023 12:23:15 +0600 Subject: [PATCH 48/91] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=B0=20=D0=BF=D1=80=D0=BE=D0=B1=D0=BB=D0=B5?= =?UTF-8?q?=D0=BC=D0=B0=20=D1=81=20=D0=B7=D0=B0=D0=BF=D0=B8=D1=81=D1=8C?= =?UTF-8?q?=D1=8E=20=D0=BF=D0=B0=D1=80=D0=B0=D0=BC=D0=B5=D1=82=D1=80=20wri?= =?UTF-8?q?te=20=D0=BF=D1=80=D0=B8=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B8=20=D0=B4=D0=B8=D1=81=D0=BA=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/ubl-settings-resourcequota.c | 16 +--------------- source/ubl-settings-resourcequota.h | 2 +- source/ubl-utils.c | 26 ++++++++++++-------------- source/view_add.c | 14 ++++++++++---- source/view_add.h | 1 + source/view_edit.c | 3 +-- 6 files changed, 26 insertions(+), 36 deletions(-) diff --git a/source/ubl-settings-resourcequota.c b/source/ubl-settings-resourcequota.c index 12f81e9..bb41243 100644 --- a/source/ubl-settings-resourcequota.c +++ b/source/ubl-settings-resourcequota.c @@ -610,10 +610,6 @@ 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()); fill_tree_view(main_config.size_tree_view-1, main_config.size_tree_view, 1); main_config.flag_set_data = 1; } @@ -687,9 +683,7 @@ char* format_io_limit_in_tree_view(config_str* disk, int** i_o_limit, int** i_o_ } else { break; - } - - + } } if (strlen(str)==0) { return yon_char_new("-"); @@ -712,12 +706,6 @@ int tree_view_edit() { main_config.swap[index] = edit_get_limit_swap(); main_config.cpu_limit[index] = edit_get_limit_cpu(); - // philos_free_string_array(&main_config.i_o_limit_read[index], index); - // philos_free_int_array(&main_config.i_o_limit_read_size[index], index); - // philos_free_string_array(&main_config.i_o_limit_write[index], index); - // philos_free_int_array(&main_config.i_o_limit_write_size[index], index); - // philos_free_string_array(&main_config.disk[index], index); - philos_array_int_copy(&main_config.i_o_limit_read[index], edit_get_read_device()); philos_array_int_copy(&main_config.i_o_limit_read_size[index], edit_get_read_device_size_pow()); yon_char_parsed_copy(&main_config.disk[index], edit_get_select_device()); @@ -837,7 +825,6 @@ void wrapper_edit_show() { size_t size_disk_array = 0; if (main_config.disk) { for (size_disk_array; main_config.disk[index][size_disk_array]; size_disk_array++) { - puts(main_config.disk[index][size_disk_array]); } } edit_show(NULL, glade_path); @@ -1085,7 +1072,6 @@ char* template_format_str_set_save(dictionary* load_cfg, char* source_set_cmd) { value = yon_char_new(save_format_value(index)); if (key != NULL && value != NULL) { cmd = yon_char_unite(cmd, " " , key, "=\"" , value, "\" ", NULL); - puts(cmd); flag_save = 1; } if (key != NULL) { diff --git a/source/ubl-settings-resourcequota.h b/source/ubl-settings-resourcequota.h index bb412ce..85774f2 100755 --- a/source/ubl-settings-resourcequota.h +++ b/source/ubl-settings-resourcequota.h @@ -43,7 +43,7 @@ #define CMD_GET_GROUP "cut -d: -f1 /etc/group" typedef char *string; -string version_application = "1.2-47-ga9ac737"; +string version_application = "1.2-48-g1dfc1c2"; static char *local; diff --git a/source/ubl-utils.c b/source/ubl-utils.c index cd5f4a4..6838589 100644 --- a/source/ubl-utils.c +++ b/source/ubl-utils.c @@ -1298,8 +1298,6 @@ void philos_temp_generate_cmd(temp_set_window *widgets, temp_config* _config) { } } - - puts(str_cmd); gtk_entry_set_text(GTK_ENTRY(widgets->entryTempCmd), str_cmd); free(split_simvol); } @@ -1444,9 +1442,9 @@ void philos_temp_add_disk(temp_set_window *widgets, temp_config* _config){ _config->size--; } else { - _config->i_o_limit_read_size = philos_int_append(_config->i_o_limit_read_size,&_config->size,-1); + _config->i_o_limit_read_size = philos_int_append(_config->i_o_limit_read_size,&_config->size,-3); _config->size--; - _config->i_o_limit_read = philos_int_append(_config->i_o_limit_read,&_config->size,-1); + _config->i_o_limit_read = philos_int_append(_config->i_o_limit_read,&_config->size,-3); _config->size--; } if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->chbTempWrite))) { @@ -1456,9 +1454,9 @@ void philos_temp_add_disk(temp_set_window *widgets, temp_config* _config){ _config->size--; } else { - _config->i_o_limit_write_size = philos_int_append(_config->i_o_limit_write_size,&_config->size,-1); + _config->i_o_limit_write_size = philos_int_append(_config->i_o_limit_write_size,&_config->size,-3); _config->size--; - _config->i_o_limit_write = philos_int_append(_config->i_o_limit_write,&_config->size,-1); + _config->i_o_limit_write = philos_int_append(_config->i_o_limit_write,&_config->size,-3); _config->size--; } _config->size++; @@ -1472,16 +1470,16 @@ void philos_temp_add_disk(temp_set_window *widgets, temp_config* _config){ _config->i_o_limit_read[index_find] = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(widgets->spinTempRead)); } else { - _config->i_o_limit_read_size[index_find] = -1; - _config->i_o_limit_read[index_find] = -1; + _config->i_o_limit_read_size[index_find] = -3; + _config->i_o_limit_read[index_find] = -3; } if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->chbTempWrite))) { _config->i_o_limit_write_size[index_find] = (int)gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->cbtTempWrite)); _config->i_o_limit_write[index_find] = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(widgets->spinTempWrite)); } else { - _config->i_o_limit_write_size[index_find] = -1; - _config->i_o_limit_write[index_find] = -1; + _config->i_o_limit_write_size[index_find] = -3; + _config->i_o_limit_write[index_find] = -3; } } @@ -1497,9 +1495,9 @@ void philos_temp_add_disk(temp_set_window *widgets, temp_config* _config){ _config->size--; } else { - _config->i_o_limit_read_size = philos_int_append(_config->i_o_limit_read_size,&_config->size,-1); + _config->i_o_limit_read_size = philos_int_append(_config->i_o_limit_read_size,&_config->size,-3); _config->size--; - _config->i_o_limit_read = philos_int_append(_config->i_o_limit_read,&_config->size,-1); + _config->i_o_limit_read = philos_int_append(_config->i_o_limit_read,&_config->size,-3); _config->size--; } if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->chbTempWrite))) { @@ -1509,9 +1507,9 @@ void philos_temp_add_disk(temp_set_window *widgets, temp_config* _config){ _config->size--; } else { - _config->i_o_limit_write_size = philos_int_append(_config->i_o_limit_write_size,&_config->size,-1); + _config->i_o_limit_write_size = philos_int_append(_config->i_o_limit_write_size,&_config->size,-3); _config->size--; - _config->i_o_limit_write = philos_int_append(_config->i_o_limit_write,&_config->size,-1); + _config->i_o_limit_write = philos_int_append(_config->i_o_limit_write,&_config->size,-3); _config->size--; } _config->size++; diff --git a/source/view_add.c b/source/view_add.c index 398380e..00d6d32 100644 --- a/source/view_add.c +++ b/source/view_add.c @@ -121,8 +121,8 @@ void add_event(temp_set_window *widgets) { g_signal_connect(G_OBJECT(widgets->cbtTempDevice),"changed",G_CALLBACK(combo_box_device), NULL); g_signal_connect(G_OBJECT(widgets->cbtTempRead),"changed",G_CALLBACK(event_check_io_device), NULL); g_signal_connect(G_OBJECT(widgets->cbtTempWrite),"changed",G_CALLBACK(event_check_io_device), NULL); - g_signal_connect(G_OBJECT(widgets->spinTempRead),"changed",G_CALLBACK(event_check_io_device), NULL); - g_signal_connect(G_OBJECT(widgets->spinTempWrite),"changed",G_CALLBACK(event_check_io_device), NULL); + g_signal_connect(G_OBJECT(widgets->spinTempRead),"value-changed",G_CALLBACK(event_check_io_device), NULL); + g_signal_connect(G_OBJECT(widgets->spinTempWrite),"value-changed",G_CALLBACK(event_check_io_device), NULL); g_signal_connect(G_OBJECT(widgets->chbTempRead), "toggled", G_CALLBACK(event_check_io_device), NULL); g_signal_connect(G_OBJECT(widgets->chbTempWrite), "toggled", G_CALLBACK(event_check_io_device), NULL); } @@ -202,11 +202,18 @@ int** add_get_write_device_size_pow() { return &obj_add_config.i_o_limit_write_size; } char*** add_get_select_device() { + int flag = 0; if (obj_add_config.size == 0) { obj_add_config.disk = yon_char_parsed_append(obj_add_config.disk,&obj_add_config.size, "-"); + flag = 1; } obj_add_config.disk = yon_char_parsed_append(obj_add_config.disk,&obj_add_config.size, NULL); - obj_add_config.size-=2; + if (flag == 1) { + obj_add_config.size-=2; + } + else { + obj_add_config.size-=1; + } return &obj_add_config.disk; } @@ -237,7 +244,6 @@ int add_get_limit_swap_size() { else { return -3; } - } int add_get_quota_object_size() { if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(add_widgets->chkPaddingFLTemp))) { diff --git a/source/view_add.h b/source/view_add.h index 64bedd7..2b5e06f 100644 --- a/source/view_add.h +++ b/source/view_add.h @@ -41,6 +41,7 @@ int add_get_limit_cpu(); int add_get_limit_swap(); char* add_get_quota_object(); +void combo_box_device(); int** add_get_write_device_size_pow(); int** add_get_read_device_size_pow(); int add_get_soft_size(); diff --git a/source/view_edit.c b/source/view_edit.c index d6716bd..889b0fc 100644 --- a/source/view_edit.c +++ b/source/view_edit.c @@ -180,7 +180,6 @@ int edit_get_limit_swap_size() { else { return -3; } - } int edit_get_quota_object_size() { if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(edit_widgets->chkPaddingFLTemp))) { @@ -230,7 +229,7 @@ int edit_get_limit_cpu() { return gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(edit_widgets->spinCPULimitTemp)); } else { - return 0; + return -3; } } int edit_get_limit_swap() { -- 2.35.1 From 05008594c12d500c01d2d6ca61b577aa8b4b3336 Mon Sep 17 00:00:00 2001 From: Igor Belitskiy Date: Tue, 27 Jun 2023 16:09:58 +0600 Subject: [PATCH 49/91] =?UTF-8?q?=D0=9F=D0=B5=D1=80=D0=B5=D0=BD=D0=B5?= =?UTF-8?q?=D1=81=20=D0=BA=D0=BE=D0=B4=20=D0=B2=20=D0=BD=D0=BE=D0=B2=D1=83?= =?UTF-8?q?=D1=8E=20=D0=B2=D0=B5=D1=80=D1=81=D0=B8=D1=8E=20=D1=88=D0=B0?= =?UTF-8?q?=D0=B1=D0=BB=D0=BE=D0=BD=D0=B0=20=D0=BF=D1=80=D0=BE=D0=B3=D1=80?= =?UTF-8?q?=D0=B0=D0=BC=D0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Makefile | 45 +- gresource.xml | 12 + source/CMakeLists.txt | 66 +- source/filters.c | 2 +- source/filters.h | 2 +- source/my_device.h | 1 + source/philos_utils.c | 969 ++++++++++++++++ source/philos_utils.h | 111 ++ source/ubl-cmake.h.in | 1 - source/ubl-cmake.in | 1 + source/ubl-settings-resourcequota.c | 65 +- source/ubl-settings-resourcequota.h | 11 +- source/ubl-strings.h | 4 +- source/ubl-utils.c | 1650 +++++++++++---------------- source/ubl-utils.h | 216 ++-- source/view_add.c | 6 +- source/view_add.h | 1 + source/view_edit.c | 30 +- source/view_edit.h | 1 + ubl-settings-resourcequota.pot | 3 + ubl-settings-resourcequota_ru.po | 3 + 21 files changed, 1964 insertions(+), 1236 deletions(-) create mode 100644 gresource.xml create mode 100644 source/philos_utils.c create mode 100644 source/philos_utils.h delete mode 100644 source/ubl-cmake.h.in create mode 100644 source/ubl-cmake.in mode change 100755 => 100644 source/ubl-settings-resourcequota.h diff --git a/Makefile b/Makefile index 2ec93b6..9b35b7b 100644 --- a/Makefile +++ b/Makefile @@ -8,10 +8,13 @@ MAKEFILE_PATH := $(dir $(MAKEFILE_FILEPATH)) CMAKE_COMMAND = cmake CMAKE_SOURCE_DIR = $(MAKEFILE_PATH)source CMAKE_BUILD_DIR = $(MAKEFILE_PATH)compile +#CMAKE_SOURCE_DIR = ./source +#CMAKE_BUILD_DIR = ./compile DEPENDS = /bin/cmake PREFIX ?= /usr PKGNAME = $(MAKEFILE_DIR) - +#PKGNAME = ubl-settings-manager +LATEST_TAG= default_target: all .PHONY: all init depend debug prepare check build uninstall install clean help @@ -21,11 +24,11 @@ all: init build init: @echo "Initialize ..."; \ if [ -d ".git" ]; then \ - LATEST_TAG=$$(git describe --tags | sed 's/^v//'); \ + LATEST_TAG=$$(git describe --tags | sed 's/^v//'|grep -oE "^[0-9]{1,}.[0-9]{1,}"); \ else \ LATEST_TAG="0.0"; \ fi; \ - sed -r "s/^(string version_application = ).*/\1\"$${LATEST_TAG}\";/" -i source/${PKGNAME}.h; \ + sed -r "s/^(string version_application).*/\1=\"$${LATEST_TAG}\";/" -i source/${PKGNAME}.h; \ echo "-- Build path: ${CMAKE_BUILD_DIR}" depend: @@ -36,14 +39,16 @@ depend: exit 1; \ fi; \ done; \ - $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B${CMAKE_BUILD_DIR} --check-build-system CMakeFiles/Makefile.cmake 1 || exit 1; \ echo "Check depends: OK" +# $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1 -debug: - @echo "Debug ..." +debug: init build + @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}"; \ fi; \ + echo "${CMAKE_BUILD_DIR}/${PKGNAME}"; \ + cp ${CMAKE_BUILD_DIR}/${PKGNAME} ./; \ echo "Debug: OK" prepare: @@ -87,7 +92,9 @@ uninstall: @$(RM) "${DESTDIR}${PREFIX}/bin/${PKGNAME}" @$(RM) "${DESTDIR}${PREFIX}/share/applications/${PKGNAME}.desktop" @$(RM) "${DESTDIR}${PREFIX}/share/icons/hicolor/scalable/apps/com.ublinux.${PKGNAME}.svg" - @$(RM) -rd "${DESTDIR}${PREFIX}/share/${PKGNAME}" + @$(RM) "${DESTDIR}${PREFIX}/share/icons/hicolor/scalable/apps/com.ublinux.${PKGNAME}.checked.svg" + @$(RM) "${DESTDIR}${PREFIX}/share/icons/hicolor/scalable/apps/com.ublinux.${PKGNAME}.warning.svg" + @$(RM) "${DESTDIR}${PREFIX}/share/polkit-1/actions/com.ublinux.${PKGNAME}.policy" @if [ -z ${DESTDIR} ]; then \ [ -d "${DESTDIR}${PREFIX}/share/icons/hicolor/" ] && gtk-update-icon-cache -fiq "${DESTDIR}${PREFIX}/share/icons/hicolor/" &>/dev/null || true; \ update-desktop-database --quiet &>/dev/null || true; \ @@ -96,8 +103,10 @@ uninstall: @echo "Uninstall: OK" install: check uninstall - @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 @echo "Install ..." +#################################################### УДАЛИТЬ ПЕРЕД КОММИТОМ ################################################################################ + @gcc compile/resources.c source/my_device.c source/philos_utils.c source/philos_utils.h 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 +#################################################### УДАЛИТЬ ПЕРЕД КОММИТОМ ################################################################################ @for FILE_PO in $(wildcard *.po); do \ LANG=$${FILE_PO##*_};LANG=$${LANG%.*}; \ install -dm755 "${DESTDIR}${PREFIX}/share/locale/$${LANG}/LC_MESSAGES"; \ @@ -112,14 +121,12 @@ install: check uninstall done @install -dm755 "${DESTDIR}${PREFIX}/share/icons/hicolor/scalable/apps" @install -Dm644 -t "${DESTDIR}${PREFIX}/share/icons/hicolor/scalable/apps/" "com.ublinux.${PKGNAME}.svg" + @install -dm755 "${DESTDIR}${PREFIX}/share/polkit-1/actions" + @install -Dm644 -t "${DESTDIR}${PREFIX}/share/polkit-1/actions/" "com.ublinux.${PKGNAME}.policy" @install -Dm755 -t "${DESTDIR}${PREFIX}/bin/" "${CMAKE_BUILD_DIR}/${PKGNAME}" + @install -dm755 "${DESTDIR}/etc/xdg" @install -dm755 "${DESTDIR}${PREFIX}/share/applications" @install -Dm644 -t "${DESTDIR}${PREFIX}/share/applications/" "${PKGNAME}.desktop" - @install -dm755 "${DESTDIR}${PREFIX}/share/${PKGNAME}"/{ui,css,images} - @install -Dm644 -t "${DESTDIR}${PREFIX}/share/${PKGNAME}/ui/" "${PKGNAME}.glade" - @install -Dm644 -t "${DESTDIR}${PREFIX}/share/${PKGNAME}/css/" "${PKGNAME}.css" - @install -dm755 -d "${DESTDIR}${PREFIX}/share/${PKGNAME}/images" - @install -Dm644 -t "${DESTDIR}${PREFIX}/share/${PKGNAME}/images/" "${PKGNAME}-banner.png" @install -Dm644 -t "${DESTDIR}${PREFIX}/share/icons/hicolor/scalable/status/" "com.ublinux.${PKGNAME}.checked.svg" @install -Dm644 -t "${DESTDIR}${PREFIX}/share/icons/hicolor/scalable/status/" "com.ublinux.${PKGNAME}.warning.svg" @install -Dm644 -t "${DESTDIR}${PREFIX}/share/icons/hicolor/scalable/status/" "com.ublinux.${PKGNAME}.funnel.svg" @@ -129,6 +136,7 @@ install: check uninstall [ -d "${DESTDIR}${PREFIX}/share/applications" ] && touch "${DESTDIR}${PREFIX}/share/applications" &>/dev/null || true; \ fi @echo "Install: OK" + @sed -r "s/^(string version_application=\"*\").*/string version_application;/" -i source/${PKGNAME}.h; \ clean: @echo "Clean ..." @@ -139,6 +147,14 @@ clean: echo "Clean: OK"; \ fi +up_ver: + @CURRENT=$$(grep 'VERSION' ${FILE_VERSION} | cut -d" " -f2); \ + MAJOR=$$(cut -d. -f1 <<< $${CURRENT}); \ + MINOR=$$(cut -d. -f2 <<< $${CURRENT}); \ + VER="$${MAJOR}.$$(($${MINOR}+1))"; \ + sed "s/VERSION *[[:digit:]]*.*/VERSION $${VER}/" -i ${FILE_VERSION}; \ + echo "Updated version to VERSION.md: $${CURRENT} to $${VER}" + help: @echo "The following are some of the valid targets for this Makefile:"; \ echo "... all (the default if no target is provided)"; \ @@ -148,4 +164,5 @@ help: echo "... compile"; \ echo "... install"; \ echo "... uninstall"; \ - echo "... clean" + echo "... clean"; \ + echo "... up_ver" \ No newline at end of file diff --git a/gresource.xml b/gresource.xml new file mode 100644 index 0000000..ed4693e --- /dev/null +++ b/gresource.xml @@ -0,0 +1,12 @@ + + + + ubl-settings-resourcequota.glade + + + ubl-settings-resourcequota.css + + + ubl-settings-resourcequota-banner.png + + \ No newline at end of file diff --git a/source/CMakeLists.txt b/source/CMakeLists.txt index b61aca0..5202797 100644 --- a/source/CMakeLists.txt +++ b/source/CMakeLists.txt @@ -1,12 +1,12 @@ -cmake_minimum_required(VERSION 3.23) +cmake_minimum_required(VERSION 3.7) project(ubl-settings-resourcequota) find_package(PkgConfig REQUIRED) -pkg_check_modules(GTK3 REQUIRED gtk+-3.0) -include_directories(${GTK3_INCLUDE_DIRS}) -link_directories(${GTK3_LIBRARY_DIRS}) -add_definitions(${GTK3_CFLAGS_OTHER}) +pkg_check_modules(GTK REQUIRED gtk+-3.0) +include_directories(${GTK_INCLUDE_DIRS}) +link_directories(${GTK_LIBRARY_DIRS}) +add_definitions(${GTK_CFLAGS_OTHER}) pkg_check_modules(VTE291 REQUIRED vte-2.91) include_directories(${VTE291_INCLUDE_DIRS}) @@ -24,7 +24,42 @@ if(WEBKIT_LIBRARIES_FOUND) add_definitions(${WEBKIT_CFLAGS_OTHER}) endif() -configure_file(ubl-cmake.h.in ubl-cmake.h) +configure_file(ubl-cmake.in ubl-cmake.h) + +file(COPY ${CMAKE_CURRENT_BINARY_DIR}/ubl-cmake.h DESTINATION ./) + +set(GRESOURCE_C resources.c) +set(GRESOURCE_XML gresource.xml) + +find_program(GLIB_COMPILE_RESOURCES NAMES glib-compile-resources REQUIRED) +add_custom_target(GLADE ubl-settings-resourcequota.glade) + +set(DEPENDFILES + ../ubl-settings-resourcequota.glade + ../gresource.xml + ../ubl-settings-resourcequota-banner.png + ../ubl-settings-resourcequota.css + ) + +file(COPY ${DEPENDFILES} DESTINATION ${CMAKE_CURRENT_BINARY_DIR}) + +add_custom_command( + OUTPUT ${GRESOURCE_C} + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} + COMMAND ${GLIB_COMPILE_RESOURCES} + ARGS + --generate-source + --target=${CMAKE_CURRENT_BINARY_DIR}/${GRESOURCE_C} + ${GRESOURCE_XML} + VERBATIM + MAIN_DEPENDENCY ${GRESOURCE_XML} + DEPENDS + ${GLADE} +) +add_custom_target( + dummy-resource + DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${GRESOURCE_C} +) #set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pedantic -Wall -Wextra -Werror -Wmissing-declarations -fdiagnostics-color=always -std=c++2a") #set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pedantic -Wall -Wextra -Werror -Wmissing-declarations -fdiagnostics-color=always -lm") @@ -32,6 +67,7 @@ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pedantic -Wall -Wextra -Werror -Wmissin -O2 -pipe -fno-plt -fexceptions \ -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security \ -fstack-clash-protection -fcf-protection") + set(SOURCE_FILES ubl-settings-resourcequota.c @@ -47,15 +83,25 @@ set(SOURCE_FILES ubl-strings.h ubl-utils.h ubl-utils.c - ubl-cmake.h) + ubl-cmake.h + philos_utils.c + philos_utils.h + ${CMAKE_CURRENT_BINARY_DIR}/ubl-cmake.h + ) set(LIBRARIES - ${GTK3_LIBRARIES} + ${GTK_LIBRARIES} ${WEBKIT_LIBRARIES} ${VTE291_LIBRARIES} pthread) -add_executable(${PROJECT_NAME} ${SOURCE_FILES}) + +add_executable(${PROJECT_NAME} ${SOURCE_FILES} ${CMAKE_CURRENT_BINARY_DIR}/${GRESOURCE_C}) target_link_libraries(${PROJECT_NAME} PUBLIC ${LIBRARIES}) target_include_directories(${PROJECT_NAME} PUBLIC ${PROJECT_BINARY_DIR}) -install(TARGETS ${PROJECT_NAME} DESTINATION bin) \ No newline at end of file +set_source_files_properties( + ${CMAKE_CURRENT_BINARY_DIR}/${GRESOURCE_C} + PROPERTIES GENERATED TRUE +) +install(TARGETS ${PROJECT_NAME} DESTINATION bin) +add_dependencies(${PROJECT_NAME} dummy-resource) \ No newline at end of file diff --git a/source/filters.c b/source/filters.c index c5f816e..f4397b9 100644 --- a/source/filters.c +++ b/source/filters.c @@ -5,7 +5,7 @@ gboolean flag_filters[8]; filters_window *filters_setup_window(char* glade_path){ if (filters_widgets == NULL) { filters_widgets = malloc(sizeof(filters_window)); - GtkBuilder *builder = gtk_builder_new_from_file(glade_path); + GtkBuilder *builder = gtk_builder_new_from_resource(glade_path); filters_widgets->Window = yon_gtk_builder_get_widget(builder,"wndFilters"); filters_widgets->chbFilterTypeQouota = yon_gtk_builder_get_widget(builder,"chbFilterTypeQouota"); filters_widgets->chbQuotaVolume = yon_gtk_builder_get_widget(builder,"chbQuotaVolume"); diff --git a/source/filters.h b/source/filters.h index 96025df..8dd6a40 100644 --- a/source/filters.h +++ b/source/filters.h @@ -11,7 +11,7 @@ #include #include #include - +#include "philos_utils.h" // Переменные typedef struct { diff --git a/source/my_device.h b/source/my_device.h index 67d2211..c2ef0e6 100644 --- a/source/my_device.h +++ b/source/my_device.h @@ -4,6 +4,7 @@ #include #include #include +#include "philos_utils.h" typedef struct { char** name_disk; char** file_system; diff --git a/source/philos_utils.c b/source/philos_utils.c new file mode 100644 index 0000000..a3d6e4e --- /dev/null +++ b/source/philos_utils.c @@ -0,0 +1,969 @@ +#include "philos_utils.h" + +void philos_array_string_remove_char(char*** array, char* str_remove, int size) { + for (int index = 0; index < size; index++) { + (*array)[index] = yon_char_divide_search((*array)[index], str_remove, -1); + } + +} + +void philos_set_pow_size_memory(char* str_find, int** array_size,int index, char** array_size_pow) { + char* STR_KB = array_size_pow[0]; + char* STR_MB = array_size_pow[1]; + char* STR_GB = array_size_pow[2]; + char* STR_TB = array_size_pow[3]; + size_t length = strlen(str_find); + if (strstr(str_find,"K") != NULL) { + *array_size = philos_int_append(*array_size, &index, 0); + str_find = yon_char_divide(str_find, length-1); + str_find = yon_char_unite(str_find, " ", STR_KB, NULL); + index--; + } + else if (strstr(str_find,"M") != NULL) { + *array_size = philos_int_append(*array_size, &index, 1); + str_find = yon_char_divide(str_find, length-1); + str_find = yon_char_unite(str_find," ", STR_MB, NULL); + index--; + } + else if (strstr(str_find,"G") != NULL) { + *array_size = philos_int_append(*array_size, &index, 2); + str_find = yon_char_divide(str_find, length-1); + str_find = yon_char_unite(str_find," ", STR_GB, NULL); + index--; + } + else if (strstr(str_find,"T") != NULL) { + *array_size = philos_int_append(*array_size, &index, 3); + str_find = yon_char_divide(str_find, length-1); + + str_find = yon_char_unite(str_find," ", STR_TB, NULL); + index--; + } + else if (strstr(str_find,"%%") != NULL) { + *array_size = philos_int_append(*array_size, &index, -1); + str_find = yon_char_divide(str_find, length-1); + index--; + } + else if (strstr(str_find,"-") != NULL) { + *array_size = philos_int_append(*array_size, &index, -1); + index--; + } + +} + +void philos_set_size_memory_integer_char(char* str_find, char*** array_data, int index) { + char* simv_del_array[10] = {"K","M","G","T","k","m","g","t"," ","%"}; + for (size_t i = 0; i < 10; i++) { + if (strstr(str_find, simv_del_array[i])) { + str_find = yon_char_divide_search(str_find, simv_del_array[i], -1); + } + } + if (strstr(str_find, " ") != NULL) { + char* mem_s = yon_char_new(str_find); + yon_char_divide_search(mem_s, " ", -1); + *array_data = yon_char_parsed_append(*array_data, &index, mem_s); + } + if (strstr(str_find, "-") != NULL) { + *array_data = yon_char_parsed_append(*array_data, &index, "-"); + } + else { + if (str_find[0] == '\"') { + yon_char_divide(str_find, 0); + size_t length = strlen(str_find); + str_find = yon_char_divide(str_find, length-2); + } + if (strstr(str_find, " ") == NULL) { + *array_data = yon_char_parsed_append(*array_data, &index, str_find); + } + + } +} + +void philos_free_string_array(char ***array, int size) { + if ((*array) == NULL) { + return; + } + for (int i = 0; i < size; i++){ + free((*array)[i]); + } + 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; + } +} + +config_str philos_list_group(int* size) { + char* str_uid_min = "UID_MIN"; + char* str_uid_max = "UID_MAX"; + unsigned short uid_min = philos_read_uid_min_max(file_source_login_min_max, str_uid_min); + unsigned short uid_max = philos_read_uid_min_max(file_source_login_min_max, str_uid_max); + config_str str_users = malloc(1); + while (1) { + errno = 0; // so we can distinguish errors from no more entries + struct passwd* entry = getpwent(); + if (!entry) { + if (errno) { + return str_users; + } + break; + } + if ((entry->pw_uid >= uid_min && entry->pw_uid < uid_max) || entry->pw_uid == 0) { + str_users = yon_char_parsed_append(str_users, size, entry->pw_name); + } + } + endpwent(); + return str_users; +} + +unsigned short philos_read_uid_min_max(char* filename, char* search) { + int uid = 0; + char* remove_tab = "\t"; + char* remove_space = " "; + char* search_uid_min = "UID_MIN"; + int buff_size = 255; + char* line = g_malloc0(buff_size); + char* search_true = yon_char_get_augumented("SYS_", search); + FILE *fp = fopen(filename, "r"); + if(fp) { + while((fgets(line, buff_size, fp)) != NULL) { + try{ + if (yon_char_find_count(line, search) != 0 && yon_char_find_count(line, search_true) == 0) { + line = philos_str_remove(line, search); + line = philos_str_remove(line, remove_space); + line = philos_str_remove(line, remove_tab); + uid = atoi(line); + + } + } + catch (...) { + if (yon_char_find_count(search, search_uid_min) != 0){ + uid = 1000; + } + else{ + uid = 65534; + } + } + } + } + else{ + if (yon_char_find_count(search, search_uid_min) != 0) { + uid = 1000; + } + else{ + uid = 65534; + } + } + fclose(fp); + free(line); + free(search_true); + return uid; + +} + + +config_str philos_list_user(int* size) { + char* str_uid_min = "UID_MIN"; + char* str_uid_max = "UID_MAX"; + unsigned short uid_min = philos_read_uid_min_max(file_source_login_min_max, str_uid_min); + unsigned short uid_max = philos_read_uid_min_max(file_source_login_min_max, str_uid_max); + config_str str_users = malloc(1); + while (1) { + errno = 0; // so we can distinguish errors from no more entries + struct passwd* entry = getpwent(); + if (!entry) { + if (errno) { + return str_users; + } + break; + } + //if ((entry->pw_uid >= uid_min && entry->pw_uid < uid_max) || entry->pw_uid == 0) { + str_users = yon_char_parsed_append(str_users, size, entry->pw_name); + //} + } + endpwent(); + return str_users; +} + +char* philos_str_size_pow_byte(GtkWidget *combo_box_text) { + int menu_id = gtk_combo_box_get_active(GTK_COMBO_BOX(combo_box_text)); + if (menu_id == 0) { + return "K"; + } + else if (menu_id == 1) { + return "M"; + } + else if (menu_id == 2) { + return "G"; + } + else if (menu_id == 3) { + return "T"; + } + else { + return " "; + } +} + +char* philos_str_remove(char *str, const char *sub) { + size_t len = strlen(sub); + if (len > 0) { + char *p = str; + size_t size = 0; + while ((p = strstr(p, sub)) != NULL) { + size = (size == 0) ? (p - str) + strlen(p + len) + 1 : size - len; + memmove(p, p + len, size - (p - str)); + } + } + return str; +} + + +void philos_split_size_memory(char* str_value, int* size, char* pow_memory) { + // pow_memory = yon_char_new(str_value); + (*size) = atoi(yon_char_divide_search(pow_memory, " ", -1)); +} + +char* philos_format_cfg_str_size_memory(char* str_key, int value, int pow_size_memory) { + if (value == -1 || value == -3 || pow_size_memory == -3) { + return yon_char_new("-"); + } + char* str_value = yon_char_from_int(value); + str_value = yon_char_divide_search(str_value, " ", -1); + if (pow_size_memory==0) { + return yon_char_unite(str_key, str_value, "K" ,NULL); + } + else if (pow_size_memory==1) { + return yon_char_unite(str_key, str_value, "M" ,NULL); + } + else if (pow_size_memory==2){ + return yon_char_unite(str_key, str_value, "G" ,NULL); + } + else if (pow_size_memory== 3) { + return yon_char_unite(str_key, str_value, "T" ,NULL); + } + else if (pow_size_memory== -1) { + return yon_char_unite(str_key, str_value, "%" ,NULL); + } + else { + return yon_char_unite(str_key, str_value, "-" ,NULL); + } +} + +char** philos_str_split(char *parameters, int *size, char *divider) { + char** array_split = NULL; + char* ch= NULL; + ch = strtok(parameters, divider); + if (ch != NULL) { + array_split = yon_char_parsed_append(array_split, size, ch); + while (ch != NULL) { + ch = strtok(NULL, divider); + array_split = yon_char_parsed_append(array_split, size, ch); + } + } + (*size) -= 1; + return array_split; +} + +void philos_array_str_copy(char*** source, char*** copy) { + int index = 0; + if (copy == NULL || source == NULL) { + return; + } + while (1) { + if ((*copy)[index] != NULL) { + (*source) = yon_char_parsed_append((*source), &index, yon_char_new((*copy)[index])); + } + else { + break; + } + } +} +void philos_array_int_copy(int** source, int** copy) { + int * new_int = g_malloc0(sizeof(int)*2); + if ((*copy)[0] != -2) { + new_int[0] = (*copy)[0]; + new_int[1] = -2; + int i = 2; + for (i=1;(*copy)[i]!=-2;i++) { + yon_int_array_append(&new_int,(*copy)[i]); + } + *source=new_int; + } + else { + new_int[0] = (*copy)[0]; + *source=new_int; + } + +} +char** philos_pars_terminal_systemd_cgls(char* CMD_GET_SLICE_SERVICE, char* str_find, int* size_array_data) { + int size = 0; + char** terminal_print = yon_config_load(CMD_GET_SLICE_SERVICE, &size); + char** array_data = NULL; + for (int index = 0; index < size; index++) { + if (strstr(terminal_print[index], str_find) != NULL) { + yon_char_divide_search(terminal_print[index],"─",-1); + terminal_print[index] = yon_char_divide_search(terminal_print[index]," ", -1); + yon_char_divide(terminal_print[index],1); + array_data = yon_char_parsed_append(array_data, size_array_data, terminal_print[index]); + + } + } + return array_data; +} +char* philos_pard_array_add_cmd(char* cmd, temp_config* _config, char* key, int* array_io, int* array_io_pow_size) { + char* split_simvol = g_malloc0(sizeof(char)*2); + int flag_format = 0; + char* cmd_old = yon_char_new(cmd); + if (_config->disk && _config->size && array_io && array_io_pow_size) { + int index_find = 0; + for (int index = 0; index < _config->size; index++) { + if (index==0) { + if (strlen(cmd)>1) { + cmd = yon_char_unite(cmd, ",", key, NULL); + } + else { + cmd = yon_char_unite(cmd, key, NULL); + } + + } + if (array_io_pow_size[index] != -1 && array_io[index]!=-2 && array_io[index]!=-1) { + char* num_and_pow_size = philos_format_cfg_str_size_memory(" ", array_io[index], array_io_pow_size[index]); + cmd = yon_char_unite(cmd, + split_simvol, + _config->disk[index], + num_and_pow_size, NULL); + split_simvol[0] = ','; + split_simvol[1] = '\0'; + flag_format = 1; + free(num_and_pow_size); + } + } + } + free(split_simvol); + if (flag_format) { + return cmd; + } + else { + return cmd_old; + } + +} +int philos_check_activ_disk(temp_set_window *widgets, temp_config* _config) { + char* disk = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(widgets->cbtTempDevice)); + disk = yon_char_divide_search(disk," ", -1); + int bool_read = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->chbTempRead)); + int bool_write = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->chbTempWrite)); + if (disk == NULL || _config->size == 0) { + return 0; + } + return 1; +} + +void philos_temp_generate_cmd(temp_set_window *widgets, temp_config* _config) { + char* str_cmd = ""; + char* split_simvol = g_malloc0(sizeof(char)*2); + int size_bite = 0; + if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->chkSoftRestrictionTemp))) { + size_bite = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(widgets->spiSevereRestrictionTemp)); + str_cmd = yon_char_unite(str_cmd, + "MemoryHigh=", + yon_char_from_int(size_bite), + philos_str_size_pow_byte(widgets->cmSevereRestrictionTemp), NULL); + split_simvol[0] = ','; + split_simvol[1] = '\0'; + } + if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->chkSevereRestrictionTemp))) { + size_bite = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(widgets->spinSevereRestrictionTemp)); + str_cmd = yon_char_unite(str_cmd, split_simvol, + "MemoryMax=", + yon_char_from_int(size_bite), + philos_str_size_pow_byte(widgets->cmbSevereRestrictionTemp), NULL); + split_simvol[0] = ','; + split_simvol[1] = '\0'; + } + if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->chkPaddingFLTemp))) { + size_bite = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(widgets->spinPaddingFLTemp)); + str_cmd = yon_char_unite(str_cmd, split_simvol, + "MemorySwapMax=", + yon_char_from_int(size_bite), + philos_str_size_pow_byte(widgets->cmbPaddingFLTemp), NULL); + split_simvol[0] = ','; + split_simvol[1] = '\0'; + } + if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->chkCPULimitTemp))) { + size_bite = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(widgets->spinCPULimitTemp)); + str_cmd = yon_char_unite(str_cmd, split_simvol, + "CPUQuota=", + yon_char_from_int(size_bite), + "%", NULL); + split_simvol[0] = ','; + split_simvol[1] = '\0'; + } + if (gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->cbtTempDevice))!=-1) { + if (_config->size!=0) { + str_cmd = philos_pard_array_add_cmd(str_cmd, _config, "IOReadBandwidthMax=", _config->i_o_limit_read, _config->i_o_limit_read_size); + str_cmd = philos_pard_array_add_cmd(str_cmd, _config, "IOWriteBandwidthMax=", _config->i_o_limit_write, _config->i_o_limit_write_size); + } + + } + gtk_entry_set_text(GTK_ENTRY(widgets->entryTempCmd), str_cmd); + free(split_simvol); +} +void philos_temp_del_disk(temp_set_window *widgets, temp_config* _config) { + char* disk = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(widgets->cbtTempDevice)); + disk = yon_char_divide_search(disk, " ", -1); + int bool_read = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->chbTempRead)); + int bool_write = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->chbTempWrite)); + if (philos_check_activ_disk(widgets, _config) == 0) { + return; + } + if (_config->disk && _config->size) { + int index_find = -1; + for (int index = 0; index < _config->size; index++) { + char* disk_cfg = _config->disk[index]; + if (strstr(disk_cfg, disk) != NULL) { + index_find = index; + break; + } + } + if ((bool_read == 0 && bool_write == 0 && index_find != -1)) { + _config->disk = yon_char_parsed_shrink(_config->disk,&_config->size, index_find); + _config->size++; + _config->i_o_limit_read_size = remove_element_int_array(_config->i_o_limit_read_size,&_config->size, index_find); + _config->size++; + _config->i_o_limit_write_size = remove_element_int_array(_config->i_o_limit_write_size,&_config->size, index_find); + _config->size++; + _config->i_o_limit_read = remove_element_int_array(_config->i_o_limit_read,&_config->size, index_find); + _config->size++; + _config->i_o_limit_write = remove_element_int_array(_config->i_o_limit_write,&_config->size, index_find); + } + } +} + +void philos_temp_config_init(temp_config* _config) { + if (_config->size != 0) { + philos_free_string_array(&_config->disk, _config->size); + philos_free_int_array(&_config->i_o_limit_read, _config->size); + philos_free_int_array(&_config->i_o_limit_read_size, _config->size); + philos_free_int_array(&_config->i_o_limit_write, _config->size); + philos_free_int_array(&_config->i_o_limit_write_size, _config->size); + } + _config->disk = NULL; + _config->i_o_limit_read = NULL; + _config->i_o_limit_write = NULL; + _config->i_o_limit_read_size = NULL; + _config->i_o_limit_write_size = NULL; + _config->size = 0; +} +// flag_check_array = 0 READ +// flag_check_array = 1 WRITE +void philos_update_device_to_entry(temp_set_window *widgets, temp_config* _config, int flag_check_array) { + int disk_id = gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->cbtTempDevice)); + char* disk = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(widgets->cbtTempDevice)); + disk = yon_char_divide_search(disk, " ", -1); + if (disk_id != -1) { + int index_find = -1; + for (int index = 0; index < _config->size; index++) { + char* disk_cfg = _config->disk[index]; + if (strstr(disk_cfg, disk) != NULL) { + index_find = index; + break; + } + } + if (index_find != -1) { + if (flag_check_array==0) { + if (_config->i_o_limit_read[index_find]==-2 || _config->i_o_limit_read[index_find]==-1) { + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widgets->chbTempRead), 0); + gtk_spin_button_set_value(GTK_SPIN_BUTTON(widgets->spinTempRead), 0); + gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->cbtTempRead), 0); + } + else { + gtk_spin_button_set_value(GTK_SPIN_BUTTON(widgets->spinTempRead), _config->i_o_limit_read[index_find]); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widgets->chbTempRead), 1); + gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->cbtTempRead), _config->i_o_limit_read_size[index_find]); + + } + } + else if (flag_check_array==1) { + if (_config->i_o_limit_write[index_find]==-2 || _config->i_o_limit_write[index_find]==-1) { + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widgets->chbTempWrite), 0); + gtk_spin_button_set_value(GTK_SPIN_BUTTON(widgets->spinTempWrite), 0); + gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->cbtTempWrite), 0); + } + else { + gtk_spin_button_set_value(GTK_SPIN_BUTTON(widgets->spinTempWrite), _config->i_o_limit_write[index_find]); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widgets->chbTempWrite), 1); + gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->cbtTempWrite), _config->i_o_limit_write_size[index_find]); + } + } + else { + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widgets->chbTempWrite), 0); + gtk_spin_button_set_value(GTK_SPIN_BUTTON(widgets->spinTempWrite), 0); + gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->cbtTempWrite), 0); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widgets->chbTempRead), 0); + gtk_spin_button_set_value(GTK_SPIN_BUTTON(widgets->spinTempRead), 0); + gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->cbtTempRead), 0); + } + } + else { + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widgets->chbTempWrite), 0); + gtk_spin_button_set_value(GTK_SPIN_BUTTON(widgets->spinTempWrite), 0); + gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->cbtTempWrite), 0); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widgets->chbTempRead), 0); + gtk_spin_button_set_value(GTK_SPIN_BUTTON(widgets->spinTempRead), 0); + gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->cbtTempRead), 0); + } + } + else { + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widgets->chbTempWrite), 0); + gtk_spin_button_set_value(GTK_SPIN_BUTTON(widgets->spinTempWrite), 0); + gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->cbtTempWrite), 0); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widgets->chbTempRead), 0); + gtk_spin_button_set_value(GTK_SPIN_BUTTON(widgets->spinTempRead), 0); + gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->cbtTempRead), 0); + } +} + +void philos_temp_add_disk(temp_set_window *widgets, temp_config* _config) { + char* disk = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(widgets->cbtTempDevice)); + disk = yon_char_divide_search(disk, " ", -1); + int disk_id = gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->cbtTempDevice)); + int bool_read = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->chbTempRead)); + int bool_write = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->chbTempWrite)); + if (disk_id >= 0 && _config->size !=0) { + int index_find = -1; + for (int index = 0; index < _config->size; index++) { + char* disk_cfg = _config->disk[index]; + if (strstr(disk_cfg, disk) != NULL) { + index_find = index; + break; + } + } + if (index_find == -1) { + // Добавление + _config->disk = yon_char_parsed_append(_config->disk,&_config->size, disk); + _config->size--; + if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->chbTempRead))) { + _config->i_o_limit_read_size = philos_int_append(_config->i_o_limit_read_size,&_config->size,(int)gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->cbtTempRead))); + _config->size--; + _config->i_o_limit_read = philos_int_append(_config->i_o_limit_read,&_config->size,gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(widgets->spinTempRead))); + _config->size--; + } + else { + _config->i_o_limit_read_size = philos_int_append(_config->i_o_limit_read_size,&_config->size,-3); + _config->size--; + _config->i_o_limit_read = philos_int_append(_config->i_o_limit_read,&_config->size,-3); + _config->size--; + } + if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->chbTempWrite))) { + _config->i_o_limit_write_size = philos_int_append(_config->i_o_limit_write_size,&_config->size,(int)gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->cbtTempWrite))); + _config->size--; + _config->i_o_limit_write = philos_int_append(_config->i_o_limit_write,&_config->size,gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(widgets->spinTempWrite))); + _config->size--; + } + else { + _config->i_o_limit_write_size = philos_int_append(_config->i_o_limit_write_size,&_config->size,-3); + _config->size--; + _config->i_o_limit_write = philos_int_append(_config->i_o_limit_write,&_config->size,-3); + _config->size--; + } + _config->size++; + + } + else { + // Редактирование + //_config->disk[index_find] = yon_char_new(disk); + if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->chbTempRead))) { + _config->i_o_limit_read_size[index_find] =(int)gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->cbtTempRead)); + _config->i_o_limit_read[index_find] = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(widgets->spinTempRead)); + } + else { + _config->i_o_limit_read_size[index_find] = -3; + _config->i_o_limit_read[index_find] = -3; + } + if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->chbTempWrite))) { + _config->i_o_limit_write_size[index_find] = (int)gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->cbtTempWrite)); + _config->i_o_limit_write[index_find] = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(widgets->spinTempWrite)); + } + else { + _config->i_o_limit_write_size[index_find] = -3; + _config->i_o_limit_write[index_find] = -3; + } + + } + } + else { + if (bool_read == 1 || bool_write == 1) { + _config->disk = yon_char_parsed_append(_config->disk,&_config->size, disk); + _config->size--; + if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->chbTempRead))) { + _config->i_o_limit_read_size = philos_int_append(_config->i_o_limit_read_size,&_config->size,(int)gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->cbtTempRead))); + _config->size--; + _config->i_o_limit_read = philos_int_append(_config->i_o_limit_read,&_config->size,gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(widgets->spinTempRead))); + _config->size--; + } + else { + _config->i_o_limit_read_size = philos_int_append(_config->i_o_limit_read_size,&_config->size,-3); + _config->size--; + _config->i_o_limit_read = philos_int_append(_config->i_o_limit_read,&_config->size,-3); + _config->size--; + } + if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->chbTempWrite))) { + _config->i_o_limit_write_size = philos_int_append(_config->i_o_limit_write_size,&_config->size,(int)gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->cbtTempWrite))); + _config->size--; + _config->i_o_limit_write = philos_int_append(_config->i_o_limit_write,&_config->size,gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(widgets->spinTempWrite))); + _config->size--; + } + else { + _config->i_o_limit_write_size = philos_int_append(_config->i_o_limit_write_size,&_config->size,-3); + _config->size--; + _config->i_o_limit_write = philos_int_append(_config->i_o_limit_write,&_config->size,-3); + _config->size--; + } + _config->size++; + } + else { + } + } +} +int* philos_int_append(int* array, int* size, int value) { + array = yon_remalloc(array, (*size+1)*sizeof(int)); + array[(*size)] = value; + (*size)++; + return array; + +} + +int* remove_element_int_array(int* array, int* size, int item_to_delete) { + int *new_int_parsed=NULL; + new_int_parsed=malloc(sizeof(int)*((*size)-1)); + int flag = 0; + for (int i=0;i < (*size);i++){ + if (i==item_to_delete) { + flag = 1; + } + if (flag == 0) { + memcpy(&(new_int_parsed[i]),&(array[i]),sizeof(int)); + } + else if (flag == 1 && i!=item_to_delete) { + memcpy(&(new_int_parsed[i-1]),&(array[i]),sizeof(int)); + } + } + (*size)=(*size)-1; + return new_int_parsed; +} + +int** remove_element_int_array_n3(int** array, int* size, int item_to_delete) { + int **new_int_parsed=NULL; + new_int_parsed=malloc(sizeof(int*)*((*size)-1)); + int flag = 0; + for (int i=0;i < (*size);i++){ + if (i==item_to_delete) { + flag = 1; + } + if (flag == 0) { + philos_array_int_copy(&new_int_parsed[i],&array[i]); + } + else if (flag == 1 && i!=item_to_delete) { + philos_array_int_copy(&new_int_parsed[i-1],&array[i]); + } + } + (*size)=(*size)-1; + return new_int_parsed; +} +char* philos_get_size_bite(GtkWidget* chk_button, GtkWidget* spin, GtkWidget* combo_box_text) { + if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(chk_button))) { + char* size_prifics = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(combo_box_text)); + int size_bite = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(spin)); + char* str_size_bute = yon_char_unite(yon_char_from_int(size_bite), " ", size_prifics, NULL); + return str_size_bute; + } + else { + char* str = (char*)malloc(sizeof(char*)*2); + str[0] = '-'; + str[1] = '\0'; + return str; + } +} +void philos_fill_combo_box_text(GtkWidget *cbt, config_str list_data, int size) { + for (int index = 0; index < size; index++) { + gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(cbt), list_data[index]); + } +} +// Mem Size pow +void philos_set_spin_adjustment(GtkWidget *check, GtkWidget *spin, GtkWidget *combo, size_t value) { + gboolean active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(check)); + guint value_spin = gtk_spin_button_get_digits(GTK_SPIN_BUTTON(spin)); + if (active != -1) { + GtkAdjustment* adjustment = NULL; + adjustment = gtk_spin_button_get_adjustment(GTK_SPIN_BUTTON(spin)); + gtk_adjustment_set_lower(adjustment, 0.0); + gtk_adjustment_set_page_increment(adjustment, 1.0); + if (combo == NULL) { + gtk_adjustment_set_upper(adjustment, (gdouble)(value*100)); + if ((value*100)0) { + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check),1); + } + else if (active == 0) { + gtk_spin_button_set_value(GTK_SPIN_BUTTON(spin), 0); + } + if (flag_cpu == 0) { + philos_set_spin_adjustment(check, spin, combo, resurs); + if (value_spin>resurs) { + gtk_spin_button_set_value(GTK_SPIN_BUTTON(spin), resurs); + } + } + else { + philos_set_spin_adjustment(check, spin, NULL, resurs); + } + +} + +size_t get_resurs_total(char* cmd) { + int size = 0; + size_t size_memory = 0; + char **responce = yon_config_load(cmd, &size); + for (int index = 0; index < size; index++ ) { + char* mem_size_kb = yon_char_divide_search(responce[index], "\n", -1); + size_memory = atoll(mem_size_kb); + free(mem_size_kb); + } + philos_free_string_array(&responce, size); + return size_memory; +} + +float get_size_pow_memory(size_t size_memory, int size) { + float res = size_memory; + for (size_t index = 0; index < size; index++) { + res = res/1024; + } + return res; +} + +void philos_set_active_widgets_device_io(GtkWidget* combo_to_l2,GtkWidget *check, GtkWidget *spin, GtkWidget *combo) { + int menu_id = gtk_combo_box_get_active(GTK_COMBO_BOX(combo_to_l2)); + if (menu_id != -1) { + gboolean active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(check)); + if (active == 0) { + gtk_spin_button_set_value(GTK_SPIN_BUTTON(spin), 0); + } + else if (gtk_spin_button_get_digits(GTK_SPIN_BUTTON(spin))>0) { + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check),1); + } + gtk_widget_set_sensitive(spin, active); + gtk_widget_set_sensitive(combo, active); + } + else { + gtk_spin_button_set_value(GTK_SPIN_BUTTON(spin), 0); + gtk_widget_set_sensitive(spin, 0); + gtk_widget_set_sensitive(combo, 0); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check), 0); + } + philos_set_spin_adjustment(check, spin, combo, 12582912); +} +char *yon_char_get_augumented(char *source, char *append) +{ + if (source && append) + { + int size = strlen(source) + strlen(append) + 1; + char *final = malloc(size); + memset(final, 0, size); + if (strstr(source, "%%")) + sprintf(final, source, append); + else + sprintf(final, "%s%s", source, append); + return final; + } + else + return NULL; +} +dictionary *yon_dictionary_create_with_data_connected(dictionary *dict, char *key, void *data) { + dictionary *dct = yon_dictionary_create_conneced(dict); + dct->key = yon_char_new(key); + dct->data = data; + dct->data_type = DICTIONARY_OTHER_TYPE; + return dct; +} +char **yon_char_parsed_shrink(char **char_string, int *size, int item_to_delete) { + char **new_char_parsed=NULL; + new_char_parsed=malloc(sizeof(char*)*((*size)-1)); + int flag = 0; + for (int i=0;i < (*size);i++){ + if (i==item_to_delete) { + flag = 1; + } + if (flag == 0) { + new_char_parsed[i]=yon_char_new(char_string[i]); + } + else if (flag == 1 && i!=item_to_delete) { + new_char_parsed[i-1]=yon_char_new(char_string[i]); + } + } + (*size)=(*size)-1; + return new_char_parsed; +} +char*** yon_char_parsed_shrink_n3(char ***char_string, int *size, int item_to_delete) { + char ***new_char_parsed=NULL; + new_char_parsed=malloc(sizeof(char**)*((*size)-1)); + int flag = 0; + for (int i=0;i < (*size);i++){ + if (i==item_to_delete) { + flag = 1; + } + if (flag == 0) { + yon_char_parsed_copy(&new_char_parsed[i],&char_string[i]); + } + else if (flag == 1 && i!=item_to_delete) { + yon_char_parsed_copy(&new_char_parsed[i-1], &char_string[i]); + } + } + (*size)=(*size)-1; + return new_char_parsed; +} +dictionary *yon_dictionary_create_empty() { + dictionary *dict = malloc(sizeof(dictionary)); + dict->data = NULL; + dict->key = NULL; + dict->next = NULL; + dict->prev = NULL; + dict->first = dict; + dict->data_type = DICTIONARY_OTHER_TYPE; + return dict; +} +void yon_terminal_integrated_launch(GtkWidget *terminal, char* command, void *endwork_function, void* endwork_function_argument){ + char **commands=new_arr(char*,2); + gchar **envp = g_get_environ(); + commands[0]=(gchar *)g_strdup(g_environ_getenv(envp, "SHELL")); + commands[1]=NULL; + char **env=new_arr(char*,2); + env[0]=""; + env[1]=NULL; + vte_terminal_set_size(VTE_TERMINAL(terminal),10,15); + VtePty *pty = vte_pty_new_sync(VTE_PTY_DEFAULT,NULL,NULL); + vte_terminal_set_pty(VTE_TERMINAL(terminal),pty); + char *install_command=yon_char_unite("tput cup 0 0 && tput ed; ",command, "; exit 0\n",NULL); + if(endwork_function) + g_signal_connect(G_OBJECT(terminal), "child-exited", G_CALLBACK(endwork_function), endwork_function_argument); + vte_terminal_spawn_async(VTE_TERMINAL(terminal), + VTE_PTY_DEFAULT, + NULL, + commands, + NULL, + 0, + NULL, NULL, + NULL, + -1, + NULL, + child_ready, + install_command); + vte_pty_spawn_async(pty, + NULL, + commands, + NULL, + 0, + NULL, NULL, + NULL, + -1, + NULL, + NULL, + NULL); + vte_terminal_set_scrollback_lines(VTE_TERMINAL(terminal), -1); + vte_terminal_set_scroll_on_output(VTE_TERMINAL(terminal), TRUE); + vte_terminal_set_scroll_on_keystroke(VTE_TERMINAL(terminal), TRUE); + gtk_widget_show_all(terminal); +} +dictionary *yon_dictionary_create_conneced(dictionary *targetdict) +{ + targetdict = yon_dictionary_get_last(targetdict); + targetdict->next = yon_dictionary_create_empty(); + targetdict->next->prev = targetdict; + targetdict->next->first = targetdict->first; + targetdict->next->data_type = DICTIONARY_OTHER_TYPE; + return targetdict->next; +} +void yon_int_array_append(int **source, int append){ + int size=0; + for (size=0;(*source)[size]!=-2;size++); + *source = realloc(*source,(size+2)*sizeof(int)); + (*source)[size] = append; + (*source)[size+1] = -2; +} +static void child_ready(VteTerminal *terminal, GPid pid, GError *error, gpointer user_data) +{ + if (!terminal) return; + if (pid == -1) printf("Error\n\n\n"); + else vte_terminal_feed_child(VTE_TERMINAL(terminal),(char*)user_data,strlen((char*)user_data)); +} \ No newline at end of file diff --git a/source/philos_utils.h b/source/philos_utils.h new file mode 100644 index 0000000..87fb987 --- /dev/null +++ b/source/philos_utils.h @@ -0,0 +1,111 @@ +#ifndef PHILOS_UTILS_H +#define PHILOS_UTILS_H +#include "ubl-utils.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define catch(x) ExitJmp:if(__HadError) +#define throw(x) {__HadError=true;goto ExitJmp;} +#define file_source_login_min_max "/etc/login.defs" +static char** array_size_pow; +typedef struct { + char** disk; + int* i_o_limit_read; + int* i_o_limit_write; + int* i_o_limit_read_size; + int* i_o_limit_write_size; + int size; +} temp_config; + +typedef struct { + + GtkWidget* Window; + GtkWidget* btnSaveTempSave; + GtkWidget* btnTempCancel; + + GtkWidget* entryTempCmd; + GtkWidget* chbTempRead; + GtkWidget* spinTempRead; + GtkWidget* cbtTempRead; + + GtkWidget* chbTempWrite; + GtkWidget* spinTempWrite; + GtkWidget* cbtTempWrite; + + GtkWidget* chkSoftRestrictionTemp; + GtkWidget* spiSevereRestrictionTemp; + GtkWidget* cmSevereRestrictionTemp; + + GtkWidget* chkSevereRestrictionTemp; + GtkWidget* spinSevereRestrictionTemp; + GtkWidget* cmbSevereRestrictionTemp; + + GtkWidget* chkPaddingFLTemp; + GtkWidget* spinPaddingFLTemp; + GtkWidget* cmbPaddingFLTemp; + + GtkWidget* chkCPULimitTemp; + GtkWidget* spinCPULimitTemp; + GtkWidget* lblCPULimitTemp; + + GtkWidget* cbtTempDevice; + GtkWidget* cbxTempQuotaObj; + GtkWidget* cbxTempQuotaLevel2; + GtkWidget* boxBlockGui; +} temp_set_window; +void philos_array_string_remove_char(char*** array, char* str_remove, int size); +void philos_set_pow_size_memory(char* str_find, int** array_size,int index, char** array_size_pow); +void philos_set_size_memory_integer_char(char* str_find, char*** array_data, int index); +void philos_free_string_array(char ***array, int size); +void philos_free_string_array_n3(char ****array, int size); +void philos_free_int_array(int **array, int size); +void philos_free_int_array_n2(int ***array, int size); +config_str philos_list_group(int* size); +unsigned short philos_read_uid_min_max(char* filename, char* search); +config_str philos_list_user(int* size); +char* philos_str_size_pow_byte(GtkWidget *combo_box_text); +char* philos_str_remove(char *str, const char *sub); +void philos_split_size_memory(char* str_value, int* size, char* pow_memory); +char* philos_format_cfg_str_size_memory(char* str_key, int value, int pow_size_memory); +char** philos_str_split(char *parameters, int *size, char *divider); +void philos_array_str_copy(char*** source, char*** copy); +void philos_array_int_copy(int** source, int** copy); +char** philos_pars_terminal_systemd_cgls(char* CMD_GET_SLICE_SERVICE, char* str_find, int* size_array_data); +char* philos_pard_array_add_cmd(char* cmd, temp_config* _config, char* key, int* array_io, int* array_io_pow_size); +int philos_check_activ_disk(temp_set_window *widgets, temp_config* _config); +void philos_temp_generate_cmd(temp_set_window *widgets, temp_config* _config); +void philos_temp_del_disk(temp_set_window *widgets, temp_config* _config); +void philos_temp_config_init(temp_config* _config); +void philos_update_device_to_entry(temp_set_window *widgets, temp_config* _config, int flag_check_array); +void philos_temp_add_disk(temp_set_window *widgets, temp_config* _config); +int* philos_int_append(int* array, int* size, int value); +int* remove_element_int_array(int* array, int* size, int item_to_delete); +int** remove_element_int_array_n3(int** array, int* size, int item_to_delete); +char* philos_get_size_bite(GtkWidget* chk_button, GtkWidget* spin, GtkWidget* combo_box_text); +void philos_fill_combo_box_text(GtkWidget *cbt, config_str list_data, int size); +void philos_set_spin_adjustment(GtkWidget *check, GtkWidget *spin, GtkWidget *combo, size_t value); +void philos_set_active_widgets(GtkWidget *check, GtkWidget *spin, GtkWidget *combo, int flag_cpu, char* cmd); +size_t get_resurs_total(char* cmd); +float get_size_pow_memory(size_t size_memory, int size); +void philos_set_active_widgets_device_io(GtkWidget* combo_to_l2,GtkWidget *check, GtkWidget *spin, GtkWidget *combo); +char *yon_char_get_augumented(char *source, char *append); +dictionary *yon_dictionary_create_with_data_connected(dictionary *dict, char *key, void *data); +char **yon_char_parsed_shrink(char **char_string, int *size, int item_to_delete); +char*** yon_char_parsed_shrink_n3(char ***char_string, int *size, int item_to_delete); +dictionary *yon_dictionary_create_empty(); +void yon_terminal_integrated_launch(GtkWidget *terminal, char* command, void *endwork_function, void* endwork_function_argument); +dictionary *yon_dictionary_create_conneced(dictionary *targetdict); +void yon_int_array_append(int **source, int append); +static void child_ready(VteTerminal *terminal, GPid pid, GError *error, gpointer user_data); +#endif \ No newline at end of file diff --git a/source/ubl-cmake.h.in b/source/ubl-cmake.h.in deleted file mode 100644 index 17ba454..0000000 --- a/source/ubl-cmake.h.in +++ /dev/null @@ -1 +0,0 @@ -#cmakedefine WEBKIT_FOUND \ No newline at end of file diff --git a/source/ubl-cmake.in b/source/ubl-cmake.in new file mode 100644 index 0000000..d4623a7 --- /dev/null +++ b/source/ubl-cmake.in @@ -0,0 +1 @@ +#cmakedefine WEBKIT_FOUND diff --git a/source/ubl-settings-resourcequota.c b/source/ubl-settings-resourcequota.c index bb41243..85c1dce 100644 --- a/source/ubl-settings-resourcequota.c +++ b/source/ubl-settings-resourcequota.c @@ -30,7 +30,7 @@ void yon_open_browser(GtkWidget *self, char *link){ */ void on_open_documentation_confirmation(GtkWidget *self, char *link){ if (main_config.always_open_documentation==0){ - GtkBuilder *builder = gtk_builder_new_from_file(glade_path); + GtkBuilder *builder = gtk_builder_new_from_resource(glade_path); documentation_confirmation_window *widgets = malloc(sizeof(documentation_confirmation_window)); widgets->Window = yon_gtk_builder_get_widget(builder,"helpConfirmationWindow"); widgets->AcceptButton = yon_gtk_builder_get_widget(builder,"ReadHelpButton"); @@ -84,7 +84,7 @@ void on_link(GtkWidget *self, char* uri, gpointer user_data){ * Присоединять к сигналу "activate" кнопки справки типа MenuItem. */ void on_about(){ - GtkBuilder *builder=gtk_builder_new_from_file(glade_path); + GtkBuilder *builder=gtk_builder_new_from_resource(glade_path); GtkWidget *window=yon_gtk_builder_get_widget(builder,"AboutWindow"); GtkWidget *title=yon_gtk_builder_get_widget(builder,"headerAboutTopic"); GtkWidget *hideButtonBox=yon_gtk_builder_get_widget(builder,"buttonBoxHide"); @@ -125,7 +125,7 @@ void config_init(){ main_window *setup_window(){ /* Widgets getting | Получение виджетов */ widgets = malloc(sizeof(main_window)); - GtkBuilder *builder = gtk_builder_new_from_file(glade_path); + GtkBuilder *builder = gtk_builder_new_from_resource(glade_path); widgets->Window = yon_gtk_builder_get_widget(builder,"MainWindow"); widgets->btnDelQuotas = yon_gtk_builder_get_widget(builder,"btnDelQuotas"); @@ -844,10 +844,13 @@ void wrapper_edit_show() { } void main_edit_btn_save() { - if (tree_view_edit(main_config.size_tree_view)) { - edit_init_windows(); - add_on_destroy_subwindow(get_widget_edit()->Window); + if (get_edit_config) { + if (tree_view_edit(main_config.size_tree_view)) { + edit_init_windows(); + add_on_destroy_subwindow(get_widget_edit()->Window); + } } + } void tree_view_del_line() { @@ -1083,7 +1086,7 @@ char* template_format_str_set_save(dictionary* load_cfg, char* source_set_cmd) { } if (flag_save && check_save(load_cfg)== 0) { - cmd = yon_char_unite(cmd, "\"", NULL); + puts(cmd); return cmd; } free(cmd); @@ -1146,7 +1149,14 @@ void main_localization(main_window *widgets) { gtk_menu_item_set_label(GTK_MENU_ITEM(widgets->DocumentationMenuItem),DOCUMENTATION_LABEL); gtk_menu_item_set_label(GTK_MENU_ITEM(widgets->AboutMenuItem),ABOUT_LABEL); } +//functions +void yon_load_proceed(char *command){ + if (yon_config_load_register(command)) + yon_ubl_status_box_render(LOCAL_SAVE_SUCCESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE); + else + yon_ubl_status_box_render(LOAD_FAILED_LABEL,BACKGROUND_IMAGE_FAIL_TYPE); +} int main(int argc, char *argv[]){ local=setlocale(LC_ALL, ""); textdomain (LocaleName); @@ -1157,7 +1167,7 @@ int main(int argc, char *argv[]){ array_size_pow = yon_char_parsed_append(array_size_pow,&size_array_size_pow, STR_GB); array_size_pow = yon_char_parsed_append(array_size_pow,&size_array_size_pow, STR_TB); int option_index=0; - int show_help=0; + int show_help=0; { struct option long_options[] = { {"help", 0, 0, 'h'}, @@ -1170,11 +1180,11 @@ int main(int argc, char *argv[]){ {"socket-id", 1, 0, 's'}, {"socket-ext-id", 1,0, 'e'}, {"socket-trd-id", 1,0, 't'}, + {"debug", 0,0, 'd'}, { NULL, 0, NULL, 0 } }; - for (int i=0;isize = 0; - get_edit_config()->size = 0; + + if (getuid()!=0){ + main_config.lock_load_global=1; + main_config.lock_save_global=1; + main_config.lock_save_local=1; + } + gtk_init(&argc,&argv); + add_get_cmd_group(CMD_GET_GROUP); add_get_systemd_cgls(CMD_GET_SLICE_SERVICE); gtk_init(&argc,&argv); @@ -1234,23 +1250,26 @@ int main(int argc, char *argv[]){ add_setup_window(glade_path); main_localization(widgets); tree_view_select(NULL, widgets); - event_all(widgets); - main_event(widgets); - yon_ubl_header_setup(widgets->HeadOverlay,widgets->HeadBox,widgets->HeadImage,banner_path); + yon_ubl_header_setup_resource(widgets->HeadOverlay,widgets->HeadBox,widgets->HeadImage,banner_path); - if (yon_ubl_status_box_setup(widgets->StatusIcon,widgets->StatusBox,widgets->StatusLabel)) - yon_ubl_status_box_render(GLOBAL_LOAD_SUCCESS,BACKGROUND_IMAGE_SUCCESS_TYPE); + yon_ubl_status_box_setup(widgets->StatusIcon,widgets->StatusBox,widgets->StatusLabel); + if (getuid()!=0) + yon_ubl_status_box_render(TITLE_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE); + else + yon_ubl_status_box_render(TITLE_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE); yon_ubl_setup_sockets(widgets->PlugBox,widgets->LeftBox,widgets->RightBox,main_config.socket_id,main_config.load_socket_id,main_config.save_socket_id); - + yon_window_config_setup(GTK_WINDOW(widgets->Window)); + yon_window_config_load(config_path); GtkCssProvider *css=gtk_css_provider_new(); - gtk_css_provider_load_from_path(css,CssPath,NULL); + gtk_css_provider_load_from_resource(css,CssPath); gtk_style_context_add_provider_for_screen(gdk_screen_get_default(), - GTK_STYLE_PROVIDER(css), - -1); + GTK_STYLE_PROVIDER(css), + -1); load_global_cfg(); load_system_cfg(); + event_all(widgets); + main_event(widgets); gtk_main(); philos_free_string_array(&array_size_pow, size_array_size_pow); -} - +} \ No newline at end of file diff --git a/source/ubl-settings-resourcequota.h b/source/ubl-settings-resourcequota.h old mode 100755 new mode 100644 index 85774f2..2638dd7 --- a/source/ubl-settings-resourcequota.h +++ b/source/ubl-settings-resourcequota.h @@ -14,19 +14,20 @@ #include "filters.h" #include "view_edit.h" #include "my_device.h" +#include "philos_utils.h" #ifdef WEBKIT_FOUND #include #endif #include "ubl-strings.h" - +#define config_path yon_char_unite("/home/",yon_ubl_root_user_get(),"/.config/",LocaleName,"/",LocaleName,".conf",NULL) #define WIKI_LINK "https://wiki.ublinux.ru/ru/Программное_обеспечение/Программы_и_утилиты/Все/ubl-settings-resourcequota" #define _(String) gettext(String) -#define glade_path "/usr/share/ubl-settings-resourcequota/ui/ubl-settings-resourcequota.glade" -#define banner_path "/usr/share/ubl-settings-resourcequota/images/ubl-settings-resourcequota-banner.png" -#define CssPath "/usr/share/ubl-settings-resourcequota/css/ubl-settings-resourcequota.css" +#define glade_path "/com/ublinux/ui/ubl-settings-resourcequota.glade" +#define banner_path "/com/ublinux/images/ubl-settings-resourcequota-banner.png" +#define CssPath "/com/ublinux/css/ubl-settings-resourcequota.css" #define LocalePath "/usr/share/locale" #define LocaleName "ubl-settings-resourcequota" @@ -43,7 +44,7 @@ #define CMD_GET_GROUP "cut -d: -f1 /etc/group" typedef char *string; -string version_application = "1.2-48-g1dfc1c2"; +string version_application; static char *local; diff --git a/source/ubl-strings.h b/source/ubl-strings.h index 872506e..f573c04 100644 --- a/source/ubl-strings.h +++ b/source/ubl-strings.h @@ -43,4 +43,6 @@ #define STR_NO_SELECT_TABLE _("Quota deleted") #define STR_QUOTAS_ADD _("Quota deleted") #define ALL_SAVE_SUCCESS _("Save configuration") -#define MESS_NOTHING_SAVE _("Nothing to save!") \ No newline at end of file +#define MESS_NOTHING_SAVE _("Nothing to save!") +#define LOCAL_SAVE_SUCCESS_LABEL _("Local configuration saving succseeded.") +#define LOAD_FAILED_LABEL _("Config loading failed") \ No newline at end of file diff --git a/source/ubl-utils.c b/source/ubl-utils.c index 6838589..eb06336 100644 --- a/source/ubl-utils.c +++ b/source/ubl-utils.c @@ -2,11 +2,13 @@ // dictionary functions -/**[EN] - * yon_dictionary_create_empty(): +/**yon_dictionary_create_empty(): + * [EN] * Creates and returns empty dictionary + * [RU] + * Создаёт и возвращает пустой словарь. */ -dictionary *yon_dictionary_create_empty() +dictionary *yon_dictionary_new() { dictionary *dict = malloc(sizeof(dictionary)); dict->data = NULL; @@ -17,8 +19,15 @@ dictionary *yon_dictionary_create_empty() dict->data_type = DICTIONARY_OTHER_TYPE; return dict; } -dictionary *yon_dictionary_copy(dictionary *dict){ - dictionary *dct = yon_dictionary_create_with_data(dict->key,dict->data); + +/**yon_dictionary_copy_deep(dictionary *dict) + * [EN] + * + * [RU] + * Создаёт и возвращает копию элемента словаря [dict] +*/ +dictionary *yon_dictinoary_copy(dictionary *dict){ + dictionary *dct = yon_dictionary_new_with_data(dict->key,dict->data); dct->data_type= dict->data_type; } @@ -37,122 +46,79 @@ dictionary *yon_dictionary_copy_deep(dictionary *dict){ } return newone->first; } -size_t yon_dict_len(dictionary *dict) { - dictionary* ptr_dict = NULL; - size_t size = 0; - if (dict != NULL) { - for_dictionaries(ptr_dict, dict) { - size+=1; - } - } - return size; -} -void yon_dictionary_switch_to_last(dictionary **dict) -{ - if ((*dict)->next != NULL) - for ((*dict) = (*dict)->first; (*dict)->next != NULL; (*dict) = (*dict)->next) - { - } +int yon_dictionary_set_data(dictionary *dict, void *data){ + dict->data=data; } -void philos_array_string_remove_char(char*** array, char* str_remove, int size) { - for (int index = 0; index < size; index++) { - (*array)[index] = yon_char_divide_search((*array)[index], str_remove, -1); - } +int yon_dictionary_set_key(dictionary *dict, char *key){ + dict->key=key; +} +int yon_dictionary_set(dictionary *dict, char *key, void *data){ + dict->key=key; + dict->data=data; } -void philos_set_pow_size_memory(char* str_find, int** array_size,int index, char** array_size_pow) { - char* STR_KB = array_size_pow[0]; - char* STR_MB = array_size_pow[1]; - char* STR_GB = array_size_pow[2]; - char* STR_TB = array_size_pow[3]; - size_t length = strlen(str_find); - if (strstr(str_find,"K") != NULL) { - *array_size = philos_int_append(*array_size, &index, 0); - str_find = yon_char_divide(str_find, length-1); - str_find = yon_char_unite(str_find, " ", STR_KB, NULL); - index--; - } - else if (strstr(str_find,"M") != NULL) { - *array_size = philos_int_append(*array_size, &index, 1); - str_find = yon_char_divide(str_find, length-1); - str_find = yon_char_unite(str_find," ", STR_MB, NULL); - index--; - } - else if (strstr(str_find,"G") != NULL) { - *array_size = philos_int_append(*array_size, &index, 2); - str_find = yon_char_divide(str_find, length-1); - str_find = yon_char_unite(str_find," ", STR_GB, NULL); - index--; - } - else if (strstr(str_find,"T") != NULL) { - *array_size = philos_int_append(*array_size, &index, 3); - str_find = yon_char_divide(str_find, length-1); - - str_find = yon_char_unite(str_find," ", STR_TB, NULL); - index--; - } - else if (strstr(str_find,"%%") != NULL) { - *array_size = philos_int_append(*array_size, &index, -1); - str_find = yon_char_divide(str_find, length-1); - index--; - } - else if (strstr(str_find,"-") != NULL) { - *array_size = philos_int_append(*array_size, &index, -1); - index--; - } - + +int yon_dictionary_empty(dictionary *dict){ + dict->data=NULL; + dict->data_type=DICTIONARY_OTHER_TYPE; } -void philos_set_size_memory_integer_char(char* str_find, char*** array_data, int index) { - char* simv_del_array[10] = {"K","M","G","T","k","m","g","t"," ","%"}; - for (size_t i = 0; i < 10; i++) { - if (strstr(str_find, simv_del_array[i])) { - str_find = yon_char_divide_search(str_find, simv_del_array[i], -1); - } - } - if (strstr(str_find, " ") != NULL) { - char* mem_s = yon_char_new(str_find); - yon_char_divide_search(mem_s, " ", -1); - *array_data = yon_char_parsed_append(*array_data, &index, mem_s); - } - if (strstr(str_find, "-") != NULL) { - *array_data = yon_char_parsed_append(*array_data, &index, "-"); - } - else { - if (str_find[0] == '\"') { - yon_char_divide(str_find, 0); - size_t length = strlen(str_find); - str_find = yon_char_divide(str_find, length-2); - } - if (strstr(str_find, " ") == NULL) { - *array_data = yon_char_parsed_append(*array_data, &index, str_find); - } - - } +/**yon_dictionary_switch_to_last(dictionary **dict) + * [EN] + * + * [RU] + * Переключает словарь [dict] на последний элемент. +*/ +void yon_dictionary_switch_to_last(dictionary **dict) +{ + dictionary *dct=NULL, *dact=*dict; + for_dictionaries(dct,dact); } -dictionary *yon_dictionary_create_conneced(dictionary *targetdict) +/**yon_dictionary_create_conneced(dictionary *targetdict) + * [EN] + * + * [RU] + * Создаёт новый элемент словаря [targetdict] +*/ +dictionary *yon_dictionary_append(dictionary *targetdict) { targetdict = yon_dictionary_get_last(targetdict); - targetdict->next = yon_dictionary_create_empty(); + targetdict->next = yon_dictionary_new(); targetdict->next->prev = targetdict; targetdict->next->first = targetdict->first; targetdict->next->data_type = DICTIONARY_OTHER_TYPE; return targetdict->next; } +/**yon_dictionary_get_last(dictionary *dict) + * [EN] + * + * [RU] + * Возвращает последний элемент словаря [dict]. + * В отличае от yon_dictionary_switch_to_last() + * словарь [dict] остаётся на прежнем элементе. +*/ dictionary *yon_dictionary_get_last(dictionary *dict) { - dictionary *dct = NULL; - for (dct = dict->first; dct->next != NULL; dct = dct->next) - { - } - return dct; + if (dict->next){ + dictionary *dct = NULL; + for_dictionaries(dct,dict); + return dct; + } else return dict; } -dictionary *yon_dictionary_switch_places(dictionary *dict, int aim) +/**yon_dictionary_switch_places(dictionary *dict, int aim) + * [EN] + * + * [RU] + * Меняет элемент словаря [dict] местами с другим элементом. + * если [aim]<0 элемент меняется местами с левым элементом; + * если [aim]>0 элемент меняется местами с правым элементом; +*/ +dictionary *yon_dictionary_swap(dictionary *dict, int aim) { if (aim < 0) { @@ -253,6 +219,13 @@ dictionary *yon_dictionary_switch_places(dictionary *dict, int aim) } } +/**yon_dictionary_make_first(dictionary *dict) + * [EN] + * + * [RU] + * Устанавливает указатель первого элемента словаря [dict] + * на текущий элемент. Не использовать. +*/ void yon_dictionary_make_first(dictionary *dict) { for (dictionary *dct = dict->first; dct != NULL; dct = dct->next) @@ -261,6 +234,12 @@ void yon_dictionary_make_first(dictionary *dict) } } +/**yon_dictionary_make_nth(dictionary *dict, int nth) + * [EN] + * + * [RU] + * Перемещает элемент словаря [dict] на позицию [nth]. +*/ void yon_dictionary_make_nth(dictionary *dict, int nth) { dictionary *dct = dict->first; @@ -279,9 +258,15 @@ void yon_dictionary_make_nth(dictionary *dict, int nth) dct->prev = dict; } -dictionary *yon_dictionary_create_with_data(char *key, void *data) +/**yon_dictionary_create_with_data(char *key, void *data) + * [EN] + * + * [RU] + * Создаёт новый словарь с ключом [key] и указателем на данные [data] +*/ +dictionary *yon_dictionary_new_with_data(char *key, void *data) { - dictionary *dct = yon_dictionary_create_empty(); + dictionary *dct = yon_dictionary_new(); dct->key = yon_char_new(key); dct->data = data; dct->data_type = DICTIONARY_OTHER_TYPE; @@ -306,15 +291,28 @@ void *yon_dictionary_free_all(dictionary *dictionary_to_free,void (*data_manipul return NULL; } -dictionary *yon_dictionary_create_with_data_connected(dictionary *dict, char *key, void *data) +/**yon_dictionary_create_with_data_connected(dictionary *dict, char *key, void *data) + * [EN] + * + * [RU] + * Создаёт новый элемент словаря, присоединяемый в конец словаря [dict] + * с ключом [key] и указателем на данные [data] +*/ +dictionary *yon_dictionary_append_with_data(dictionary *dict, char *key, void *data) { - dictionary *dct = yon_dictionary_create_conneced(dict); + dictionary *dct = yon_dictionary_append(dict); dct->key = yon_char_new(key); dct->data = data; dct->data_type = DICTIONARY_OTHER_TYPE; return dct; } +/**yon_dictionary_connect(dictionary *old, dictionary *toconnect) + * [EN] + * + * [RU] + * Присоединяет словарь [toconnect] в конец словаря [old]. +*/ dictionary *yon_dictionary_connect(dictionary *old, dictionary *toconnect) { dictionary *dict = yon_dictionary_get_last(old); @@ -324,7 +322,14 @@ dictionary *yon_dictionary_connect(dictionary *old, dictionary *toconnect) return toconnect; } -dictionary *yon_dictionary_find(dictionary **dict, char *key) +/**yon_dictionary_get(dictionary **dict, char *key) + * [EN] + * + * [RU] + * Возвращает элемент словаря [dict] с ключом [key]. + * Если такого элемента не было обнаружено, возвращается NULL +*/ +dictionary *yon_dictionary_get(dictionary **dict, char *key) { dictionary *dct = *dict; for (dictionary *pointer = dct->first; pointer != NULL; pointer = pointer->next) @@ -338,6 +343,12 @@ dictionary *yon_dictionary_find(dictionary **dict, char *key) return NULL; } +/**yon_dictionary_rip(dictionary *dict) + * [EN] + * + * [RU] + * Вырезает элемент из словаря и возвращает вырезанный элемент. +*/ dictionary *yon_dictionary_rip(dictionary *dict) { if (!dict->next&&!dict->prev) return NULL; @@ -373,6 +384,12 @@ dictionary *yon_dictionary_rip(dictionary *dict) } } +/**yon_dictionary_get_nth(dictionary *dict, int place) + * [EN] + * + * [RU] + * Возвращает [place]-й элемент словаря [dict] +*/ dictionary *yon_dictionary_get_nth(dictionary *dict, int place) { if (dict){ @@ -396,7 +413,7 @@ dictionary *yon_dictionary_get_nth(dictionary *dict, int place) * * creates new char string by combining two char strings. */ -char *yon_char_get_augumented(char *source, char *append) +char *yon_char_append(char *source, char *append) { if (source && append) { @@ -412,62 +429,7 @@ char *yon_char_get_augumented(char *source, char *append) else return NULL; } -void philos_free_string_array(char ***array, int size) { - if ((*array) == NULL) { - return; - } - for (int i = 0; i < size; i++){ - free((*array)[i]); - } - 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] * * creates new char string by copying another char. @@ -493,15 +455,15 @@ char *yon_char_unite(char *source, ...){ va_start(arglist,source); unite_char = va_arg(arglist,char*); while(unite_char){ - new_char = yon_char_get_augumented(new_char,unite_char); + new_char = yon_char_append(new_char,unite_char); unite_char = va_arg(arglist,char*); } va_end(arglist); return new_char; } -/**[EN] - * +/**yon_cut(char *source, int size, int startpos) + * [EN] * cuts source string by size length from startpos position. */ char *yon_cut(char *source, int size, int startpos) @@ -512,8 +474,9 @@ char *yon_cut(char *source, int size, int startpos) memcpy(cut, source + startpos, size); return cut; } -/**[EN] - * + +/**yon_char_divide(char *source, int dividepos) + * [EN] * divides source string in dividepos position, * returning left part of divided string and * inserting right part to source string. @@ -531,129 +494,6 @@ char *yon_char_divide(char *source, int dividepos) return cut; } -config_str philos_list_user(int* size) { - char* str_uid_min = "UID_MIN"; - char* str_uid_max = "UID_MAX"; - unsigned short uid_min = philos_read_uid_min_max(file_source_login_min_max, str_uid_min); - unsigned short uid_max = philos_read_uid_min_max(file_source_login_min_max, str_uid_max); - config_str str_users = malloc(1); - while (1) { - errno = 0; // so we can distinguish errors from no more entries - struct passwd* entry = getpwent(); - if (!entry) { - if (errno) { - return str_users; - } - break; - } - //if ((entry->pw_uid >= uid_min && entry->pw_uid < uid_max) || entry->pw_uid == 0) { - str_users = yon_char_parsed_append(str_users, size, entry->pw_name); - //} - } - endpwent(); - return str_users; -} - -char* philos_str_size_pow_byte(GtkWidget *combo_box_text) { - int menu_id = gtk_combo_box_get_active(GTK_COMBO_BOX(combo_box_text)); - if (menu_id == 0) { - return "K"; - } - else if (menu_id == 1) { - return "M"; - } - else if (menu_id == 2) { - return "G"; - } - else if (menu_id == 3) { - return "T"; - } - else { - return " "; - } -} - -config_str philos_list_group(int* size) { - char* str_uid_min = "UID_MIN"; - char* str_uid_max = "UID_MAX"; - unsigned short uid_min = philos_read_uid_min_max(file_source_login_min_max, str_uid_min); - unsigned short uid_max = philos_read_uid_min_max(file_source_login_min_max, str_uid_max); - config_str str_users = malloc(1); - while (1) { - errno = 0; // so we can distinguish errors from no more entries - struct passwd* entry = getpwent(); - if (!entry) { - if (errno) { - return str_users; - } - break; - } - if ((entry->pw_uid >= uid_min && entry->pw_uid < uid_max) || entry->pw_uid == 0) { - str_users = yon_char_parsed_append(str_users, size, entry->pw_name); - } - } - endpwent(); - return str_users; -} - -unsigned short philos_read_uid_min_max(char* filename, char* search) { - int uid = 0; - char* remove_tab = "\t"; - char* remove_space = " "; - char* search_uid_min = "UID_MIN"; - int buff_size = 255; - char* line = g_malloc0(buff_size); - char* search_true = yon_char_get_augumented("SYS_", search); - FILE *fp = fopen(filename, "r"); - if(fp) { - while((fgets(line, buff_size, fp)) != NULL) { - try{ - if (yon_char_find_count(line, search) != 0 && yon_char_find_count(line, search_true) == 0) { - line = philos_str_remove(line, search); - line = philos_str_remove(line, remove_space); - line = philos_str_remove(line, remove_tab); - uid = atoi(line); - - } - } - catch (...) { - if (yon_char_find_count(search, search_uid_min) != 0){ - uid = 1000; - } - else{ - uid = 65534; - } - } - } - } - else{ - if (yon_char_find_count(search, search_uid_min) != 0) { - uid = 1000; - } - else{ - uid = 65534; - } - } - fclose(fp); - free(line); - free(search_true); - return uid; - -} - -char* philos_str_remove(char *str, const char *sub) { - size_t len = strlen(sub); - if (len > 0) { - char *p = str; - size_t size = 0; - while ((p = strstr(p, sub)) != NULL) { - size = (size == 0) ? (p - str) + strlen(p + len) + 1 : size - len; - memmove(p, p + len, size - (p - str)); - } - } - return str; -} - int yon_char_find_count(char *source, char *find){ char *working_string=yon_char_new(source); int i=0; @@ -667,7 +507,8 @@ int yon_char_find_count(char *source, char *find){ return i; } -/**[EN] +/**yon_char_divide_search(char *source, char *dividepos, int delete_divider) + * [EN] * char *yon_char_divide_search(char *source, char *dividepos, int delete_divider) * searches string [dividepos] in [source] string and divides it, * returning left part of divided string and @@ -699,7 +540,8 @@ char *yon_char_divide_search(char *source, char *dividepos, int delete_divider) } } -/**[EN] +/**yon_char_from_int(int int_to_convert) + * [EN] * char *yon_char_from_int(int int_to_convert) * converts int to char*. * @@ -720,6 +562,12 @@ char *yon_char_from_int(int int_to_convert) return ch; } +/**yon_char_replace(char *source, char *find, char*replace) + * [EN] + * + * [RU] + * Заменяет в строке [source] все вхождения строки [find] на [replace] +*/ char *yon_char_replace(char *source, char *find, char*replace){ char *final=NULL; char *temp=NULL; @@ -728,42 +576,11 @@ char *yon_char_replace(char *source, char *find, char*replace){ temp=malloc(strlen(source)-strlen(final)); memset(temp,0,strlen(source)-strlen(final)+strlen(replace)); memcpy(temp,source,strlen(source)-strlen(final)); - temp=yon_char_get_augumented(temp,replace); - source=yon_char_get_augumented(temp,final+1); + temp=yon_char_append(temp,replace); + source=yon_char_append(temp,final+1); } return source; } - return source; -} -void philos_split_size_memory(char* str_value, int* size, char* pow_memory) { - // pow_memory = yon_char_new(str_value); - (*size) = atoi(yon_char_divide_search(pow_memory, " ", -1)); -} - -char* philos_format_cfg_str_size_memory(char* str_key, int value, int pow_size_memory) { - if (value == -1 || value == -3 || pow_size_memory == -3) { - return yon_char_new("-"); - } - char* str_value = yon_char_from_int(value); - str_value = yon_char_divide_search(str_value, " ", -1); - if (pow_size_memory==0) { - return yon_char_unite(str_key, str_value, "K" ,NULL); - } - else if (pow_size_memory==1) { - return yon_char_unite(str_key, str_value, "M" ,NULL); - } - else if (pow_size_memory==2){ - return yon_char_unite(str_key, str_value, "G" ,NULL); - } - else if (pow_size_memory== 3) { - return yon_char_unite(str_key, str_value, "T" ,NULL); - } - else if (pow_size_memory== -1) { - return yon_char_unite(str_key, str_value, "%" ,NULL); - } - else { - return yon_char_unite(str_key, str_value, "-" ,NULL); - } } /**[EN] @@ -791,26 +608,16 @@ char **yon_char_parse(char *parameters, int *size, char *divider){ *size=i-1; return string; - - -} - -char** philos_str_split(char *parameters, int *size, char *divider) { - char** array_split = NULL; - char* ch= NULL; - ch = strtok(parameters, divider); - if (ch != NULL) { - array_split = yon_char_parsed_append(array_split, size, ch); - while (ch != NULL) { - ch = strtok(NULL, divider); - array_split = yon_char_parsed_append(array_split, size, ch); - } - } - (*size) -= 1; - return array_split; } -char **yon_char_parsed_shrink(char **char_string, int *size, int item_to_delete){ +/**yon_char_parsed_rip(char **char_string, int *size, int item_to_delete) + * [EN] + * + * [RU] + * Удаляет элемент [item_to_delete] из массива строк [char_string], размера [size] + * Возвращает получившийся массив, в [size] загружается размер нового массива. +*/ +char **yon_char_parsed_rip(char **char_string, int *size, int item_to_delete){ char **new_char_parsed=NULL; new_char_parsed=malloc(sizeof(char*)*((*size)-1)); int flag = 0; @@ -829,41 +636,33 @@ char **yon_char_parsed_shrink(char **char_string, int *size, int item_to_delete) return new_char_parsed; } -char*** yon_char_parsed_shrink_n3(char ***char_string, int *size, int item_to_delete){ - char ***new_char_parsed=NULL; - new_char_parsed=malloc(sizeof(char**)*((*size)-1)); - int flag = 0; - for (int i=0;i < (*size);i++){ - if (i==item_to_delete) { - flag = 1; - } - if (flag == 0) { - yon_char_parsed_copy(&new_char_parsed[i],&char_string[i]); - } - else if (flag == 1 && i!=item_to_delete) { - yon_char_parsed_copy(&new_char_parsed[i-1], &char_string[i]); - } - } - (*size)=(*size)-1; - return new_char_parsed; -} - -/**[EN] - * +/**yon_char_parsed_check_exist(char **parameters, int size, char *param) + * [EN] * Checks if [parameters] string array of length [size] * has [param] element; + * [RU] + * Проверяет есть ли в массиве строк [parameters], размера [size] + * элемент [param] */ int yon_char_parsed_check_exist(char **parameters, int size, char *param){ for (int i=0;id_name); + char *path = yon_char_append(DesktopPath, de->d_name); file = fopen(path, "r"); if (strlen(de->d_name) > 9) { @@ -1086,515 +868,333 @@ apps *yon_apps_get_by_name(apps *applist, char *name, int size) return NULL; }; -config_str yon_config_load(char *command, int *str_len) -{ +//config functions + +/**yon_config_load_register(char *command) + * [EN] + * + * [RU] + * Выполняет команду [command]. + * Полученные данные парсятся и регистрируются в конфиг. +*/ +int yon_config_load_register(char *command){ + if (__yon__config__strings){ + __yon__config__strings = yon_dictionary_free_all(__yon__config__strings,NULL); + } FILE *output = popen(command, "r"); char **output_strings = NULL; output_strings = malloc(sizeof(char)); int i = 0; - char str[1000]; - memset(str, 0, 1000); - while (fgets(str, 1000, output)) + char str[4096]; + memset(str, 0, 4096); + while (fgets(str, 4096, output)) { - if (strcmp(str, "") != 0) + if (strcmp(str, "") != 0&& strcmp(str,"(null)\n")!=0) { - output_strings = realloc(output_strings, sizeof(char *) * (i + 1)); - // printf("%s\n", str); - output_strings[i] = NULL; - output_strings[i] = yon_char_new(str); - memset(str, 0, 1000); - i++; + char *key = yon_char_divide_search(str,"=",-1); + yon_dictionary_add_or_create_if_exists_with_data(__yon__config__strings,key,str); + __yon__config__strings->data_type=DICTIONARY_CHAR_TYPE; } } - if (i>0){ - *str_len = i; - return output_strings; - } else{ - *str_len=-1; - return NULL; - } + check_config + return 0; + else return 1; } -/**[EN] - * int yon_config_save(char *command) - * Saves config with [command] +/**yon_config_remove_by_key(char *key) + * [EN] + * * [RU] + * Удаляет параметр конфига по ключу [key] */ -int yon_config_save(char *command) -{ - FILE *output = popen(command, "r"); - return 1; +int yon_config_remove_by_key(char *key){ + check_config{ + dictionary *dict = yon_dictionary_get(&__yon__config__strings,key); + if (dict){ + yon_dictionary_rip(dict); + return 1; + }else return 0; + } + return 0; } -/**[EN] - * char *yon_config_get_parameter(config parameters, int size, char *param) - * Gets parameter from parameter list; +/**yon_config_remove_by_data(void *data) + * [EN] * - * [RU] + * [RU] + * Производит поиск по конфигу на наличие параметра со значением [data] и удаляет найденное значение из конфига. */ -char *yon_config_get_parameter(config_str parameters, int size, char *param) -{ - if (param[0]==' ') - yon_char_divide_search(param," ",-1); - param=yon_char_divide_search(yon_char_new(param)," ",-1); - - char *str = NULL; - for (int j = 0; j < size; j++) - { - char *name = yon_char_divide_search(yon_char_new(parameters[j]), "=", 1); - if (name) - { - if (strcmp(name, param) == 0) - { - str = yon_char_divide_search(yon_char_new(parameters[j]), "\n", 1); - if (strcmp(str, "") != 0 && strcmp(str, "(null)") != 0) - return str; - else - return NULL; +int yon_config_remove_by_data(void *data){ + check_config{ + dictionary *dict = NULL; + for_dictionaries(dict,__yon__config__strings){ + if (dict->data==data){ + yon_dictionary_rip(dict); + return 1; } } + return 0; } - return NULL; + return 0; } -/**[EN] - * Parses, modifies and connects string to use it as one of arguments, - * sended to ubconfig. +/**yon_config_remove_element(char *key, char *deleted) + * [EN] * * [RU] - */ -char *yon_config_make_save_parameter_with_multiple_arguments(char *parameter_string, char *config_parameter, char *divider){ - char *final=""; - int done=0; - char *cur=yon_char_new(parameter_string); - yon_char_divide_search(cur,"=",1); - char *cur_param=NULL; - while (cur_param=yon_char_divide_search(cur,",",1)){ - if (done==0){ - final=yon_char_get_augumented(final,yon_char_get_augumented(yon_char_get_augumented(config_parameter,"="), yon_char_get_augumented(cur_param,", "))); - done=1; + * Удаляет элемент [deleted] из массива параметров с ключом [key] +*/ +int yon_config_remove_element(char *key, char *deleted){ + check_config{ + dictionary *dict = yon_dictionary_get(&__yon__config__strings,key); + char *data = (char*)dict->data; + char *found = strstr(data,deleted); + int size=strlen(data)-strlen(found)+1; + char *new_data = malloc(size); + memset(new_data,0,size); + if (strlen(found)!=strlen(deleted)){ + memcpy(new_data,data,size-1); + new_data = yon_char_append(new_data,found+strlen(deleted)+1); } else { - final=yon_char_get_augumented(final,yon_char_get_augumented(yon_char_get_augumented(config_parameter,"+="), yon_char_get_augumented(cur_param,", "))); + memcpy(new_data,data,size-2); + new_data = yon_char_append(new_data,found+strlen(deleted)); } - } - if (cur&&strcmp(cur,"")!=0) - if (done==0) - final=yon_char_get_augumented(final,yon_char_get_augumented(yon_char_get_augumented(config_parameter,"="), yon_char_get_augumented(cur,", "))); - else - final=yon_char_get_augumented(final,yon_char_get_augumented(yon_char_get_augumented(config_parameter,"+="), yon_char_get_augumented(cur,", "))); - return final; + dict->data=(void*)(new_data); + free(data); + dict->flag1=1; + return 1; + } else return 0; } -// terminal-using functions - -char** philos_pars_terminal_systemd_cgls(char* CMD_GET_SLICE_SERVICE, char* str_find, int* size_array_data) { - int size = 0; - char** terminal_print = yon_config_load(CMD_GET_SLICE_SERVICE, &size); - char** array_data = NULL; - for (int index = 0; index < size; index++) { - if (strstr(terminal_print[index], str_find) != NULL) { - yon_char_divide_search(terminal_print[index],"─",-1); - terminal_print[index] = yon_char_divide_search(terminal_print[index]," ", -1); - yon_char_divide(terminal_print[index],1); - array_data = yon_char_parsed_append(array_data, size_array_data, terminal_print[index]); - +/**yon_config_get_by_key(char *key) + * [EN] + * + * [RU] + * Возвращает значение параметра конфига с ключом [key] +*/ +void *yon_config_get_by_key(char *key){ + check_config{ + dictionary *dict = NULL; + for_dictionaries(dict, __yon__config__strings){ + if (strcmp(dict->key,key)==0){ + return dict->data; + } } } - return array_data; -} -char* philos_pard_array_add_cmd(char* cmd, temp_config* _config, char* key, int* array_io, int* array_io_pow_size) { - char* split_simvol = g_malloc0(sizeof(char)*2); - int flag_format = 0; - char* cmd_old = yon_char_new(cmd); - if (_config->disk && _config->size && array_io && array_io_pow_size) { - int index_find = 0; - for (int index = 0; index < _config->size; index++) { - if (index==0) { - if (strlen(cmd)>1) { - cmd = yon_char_unite(cmd, ",", key, NULL); - } - else { - cmd = yon_char_unite(cmd, key, NULL); - } - + return NULL; +} + +/**yon_config_get_key_by_data(char *data) + * [EN] + * + * [RU] + * Возвращает ключ параметра конфига со значением [data]. + * Если параметр с таким значением не найден, возвращается NULL +*/ +char *yon_config_get_key_by_data(char *data){ + check_config{ + dictionary *dict = NULL; + for_dictionaries(dict, __yon__config__strings){ + if (strcmp(((char*)dict->data),data)==0){ + return dict->key; } - if (array_io_pow_size[index] != -1 && array_io[index]!=-2 && array_io[index]!=-1) { - char* num_and_pow_size = philos_format_cfg_str_size_memory(" ", array_io[index], array_io_pow_size[index]); - cmd = yon_char_unite(cmd, - split_simvol, - _config->disk[index], - num_and_pow_size, NULL); - split_simvol[0] = ','; - split_simvol[1] = '\0'; - flag_format = 1; - free(num_and_pow_size); - } } } - free(split_simvol); - if (flag_format) { - return cmd; - } - else { - return cmd_old; - } - + return NULL; } -int philos_check_activ_disk(temp_set_window *widgets, temp_config* _config) { - char* disk = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(widgets->cbtTempDevice)); - disk = yon_char_divide_search(disk," ", -1); - int bool_read = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->chbTempRead)); - int bool_write = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->chbTempWrite)); - if (disk == NULL || _config->size == 0) { - return 0; - } + +/**yon_config_set(char *key, void *data) + * [EN] + * + * [RU] + * Производит поиск по конфигу и заменяет значение параметра с ключом [key] на новое значение [data]; +*/ +int yon_config_set(char *key, void *data){ + check_config{ + dictionary *dict = yon_dictionary_get(&__yon__config__strings,key); + dict->data=data; return 1; + } else return 0; } -void philos_temp_generate_cmd(temp_set_window *widgets, temp_config* _config) { - char* str_cmd = ""; - char* split_simvol = g_malloc0(sizeof(char)*2); - int size_bite = 0; - if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->chkSoftRestrictionTemp))) { - size_bite = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(widgets->spiSevereRestrictionTemp)); - str_cmd = yon_char_unite(str_cmd, - "MemoryHigh=", - yon_char_from_int(size_bite), - philos_str_size_pow_byte(widgets->cmSevereRestrictionTemp), NULL); - split_simvol[0] = ','; - split_simvol[1] = '\0'; - } - if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->chkSevereRestrictionTemp))) { - size_bite = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(widgets->spinSevereRestrictionTemp)); - str_cmd = yon_char_unite(str_cmd, split_simvol, - "MemoryMax=", - yon_char_from_int(size_bite), - philos_str_size_pow_byte(widgets->cmbSevereRestrictionTemp), NULL); - split_simvol[0] = ','; - split_simvol[1] = '\0'; - } - if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->chkPaddingFLTemp))) { - size_bite = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(widgets->spinPaddingFLTemp)); - str_cmd = yon_char_unite(str_cmd, split_simvol, - "MemorySwapMax=", - yon_char_from_int(size_bite), - philos_str_size_pow_byte(widgets->cmbPaddingFLTemp), NULL); - split_simvol[0] = ','; - split_simvol[1] = '\0'; - } - if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->chkCPULimitTemp))) { - size_bite = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(widgets->spinCPULimitTemp)); - str_cmd = yon_char_unite(str_cmd, split_simvol, - "CPUQuota=", - yon_char_from_int(size_bite), - "%", NULL); - split_simvol[0] = ','; - split_simvol[1] = '\0'; - } - if (gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->cbtTempDevice))!=-1) { - if (_config->size!=0) { - str_cmd = philos_pard_array_add_cmd(str_cmd, _config, "IOReadBandwidthMax=", _config->i_o_limit_read, _config->i_o_limit_read_size); - str_cmd = philos_pard_array_add_cmd(str_cmd, _config, "IOWriteBandwidthMax=", _config->i_o_limit_write, _config->i_o_limit_write_size); - } - - } - gtk_entry_set_text(GTK_ENTRY(widgets->entryTempCmd), str_cmd); - free(split_simvol); -} -void philos_temp_del_disk(temp_set_window *widgets, temp_config* _config) { - char* disk = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(widgets->cbtTempDevice)); - disk = yon_char_divide_search(disk, " ", -1); - int bool_read = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->chbTempRead)); - int bool_write = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->chbTempWrite)); - if (philos_check_activ_disk(widgets, _config) == 0) { - return; +/**yon_config_clean() + * [EN] + * Erase all parameters from config; + * [RU] + * Удаляет все параметры из конфига; +*/ +int yon_config_clean(){ + check_config{ + __yon__config__strings = yon_dictionary_free_all(__yon__config__strings, NULL); + return 1; } - if (_config->disk && _config->size) { - int index_find = -1; - for (int index = 0; index < _config->size; index++) { - char* disk_cfg = _config->disk[index]; - if (strstr(disk_cfg, disk) != NULL) { - index_find = index; - break; - } - } - if ((bool_read == 0 && bool_write == 0 && index_find != -1)) { - _config->disk = yon_char_parsed_shrink(_config->disk,&_config->size, index_find); - _config->size++; - _config->i_o_limit_read_size = remove_element_int_array(_config->i_o_limit_read_size,&_config->size, index_find); - _config->size++; - _config->i_o_limit_write_size = remove_element_int_array(_config->i_o_limit_write_size,&_config->size, index_find); - _config->size++; - _config->i_o_limit_read = remove_element_int_array(_config->i_o_limit_read,&_config->size, index_find); - _config->size++; - _config->i_o_limit_write = remove_element_int_array(_config->i_o_limit_write,&_config->size, index_find); - } - } + else return 0; } -void philos_temp_config_init(temp_config* _config) { - if (_config->size != 0) { - philos_free_string_array(&_config->disk, _config->size); - philos_free_int_array(&_config->i_o_limit_read, _config->size); - philos_free_int_array(&_config->i_o_limit_read_size, _config->size); - philos_free_int_array(&_config->i_o_limit_write, _config->size); - philos_free_int_array(&_config->i_o_limit_write_size, _config->size); - } - _config->disk = NULL; - _config->i_o_limit_read = NULL; - _config->i_o_limit_write = NULL; - _config->i_o_limit_read_size = NULL; - _config->i_o_limit_write_size = NULL; - _config->size = 0; -} -// flag_check_array = 0 READ -// flag_check_array = 1 WRITE -void philos_update_device_to_entry(temp_set_window *widgets, temp_config* _config, int flag_check_array) { - int disk_id = gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->cbtTempDevice)); - char* disk = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(widgets->cbtTempDevice)); - disk = yon_char_divide_search(disk, " ", -1); - if (disk_id != -1) { - int index_find = -1; - for (int index = 0; index < _config->size; index++) { - char* disk_cfg = _config->disk[index]; - if (strstr(disk_cfg, disk) != NULL) { - index_find = index; - break; - } - } - if (index_find != -1) { - if (flag_check_array==0) { - if (_config->i_o_limit_read[index_find]==-2 || _config->i_o_limit_read[index_find]==-1) { - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widgets->chbTempRead), 0); - gtk_spin_button_set_value(GTK_SPIN_BUTTON(widgets->spinTempRead), 0); - gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->cbtTempRead), 0); - } - else { - gtk_spin_button_set_value(GTK_SPIN_BUTTON(widgets->spinTempRead), _config->i_o_limit_read[index_find]); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widgets->chbTempRead), 1); - gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->cbtTempRead), _config->i_o_limit_read_size[index_find]); - - } - } - else if (flag_check_array==1) { - if (_config->i_o_limit_write[index_find]==-2 || _config->i_o_limit_write[index_find]==-1) { - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widgets->chbTempWrite), 0); - gtk_spin_button_set_value(GTK_SPIN_BUTTON(widgets->spinTempWrite), 0); - gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->cbtTempWrite), 0); - } - else { - gtk_spin_button_set_value(GTK_SPIN_BUTTON(widgets->spinTempWrite), _config->i_o_limit_write[index_find]); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widgets->chbTempWrite), 1); - gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->cbtTempWrite), _config->i_o_limit_write_size[index_find]); - } - } - else { - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widgets->chbTempWrite), 0); - gtk_spin_button_set_value(GTK_SPIN_BUTTON(widgets->spinTempWrite), 0); - gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->cbtTempWrite), 0); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widgets->chbTempRead), 0); - gtk_spin_button_set_value(GTK_SPIN_BUTTON(widgets->spinTempRead), 0); - gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->cbtTempRead), 0); - } - } - else { - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widgets->chbTempWrite), 0); - gtk_spin_button_set_value(GTK_SPIN_BUTTON(widgets->spinTempWrite), 0); - gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->cbtTempWrite), 0); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widgets->chbTempRead), 0); - gtk_spin_button_set_value(GTK_SPIN_BUTTON(widgets->spinTempRead), 0); - gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->cbtTempRead), 0); +/**yon_config_register(char *key, void *data) + * [EN] + * + * [RU] + * Регистрирует новый параметр конфига. + * [key] - ключ параметра; + * [data] - значение параметра; +*/ +void yon_config_register(char *key, void *data){ + yon_dictionary_add_or_create_if_exists_with_data(__yon__config__strings,key,data); + __yon__config__strings->data_type=DICTIONARY_CHAR_TYPE; +} + +/**yon_config_load(char *command, int *str_len) + * [EN] + * + * [RU] + * Выполняет команду [command] и возвращает распаршеный результат выполнения команды. + * В [str_len] возвращается длина возвращаемого массива +*/ +config_str yon_config_load(char *command, int *str_len){ + FILE *output = popen(command, "r"); + char **output_strings = NULL; + output_strings = malloc(sizeof(char)); + int i = 0; + char str[4096]; + memset(str, 0, 4096); + while (fgets(str, 4096, output)) + { + if (strcmp(str, "") != 0) + { + output_strings = realloc(output_strings, sizeof(char *) * (i + 1)); + // printf("%s\n", str); + output_strings[i] = NULL; + output_strings[i] = yon_char_new(str); + memset(str, 0, 4096); + i++; } } - else { - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widgets->chbTempWrite), 0); - gtk_spin_button_set_value(GTK_SPIN_BUTTON(widgets->spinTempWrite), 0); - gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->cbtTempWrite), 0); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widgets->chbTempRead), 0); - gtk_spin_button_set_value(GTK_SPIN_BUTTON(widgets->spinTempRead), 0); - gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->cbtTempRead), 0); + if (i>0){ + *str_len = i; + return output_strings; + } else{ + *str_len=-1; + return NULL; } } -void philos_temp_add_disk(temp_set_window *widgets, temp_config* _config){ - char* disk = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(widgets->cbtTempDevice)); - disk = yon_char_divide_search(disk, " ", -1); - int disk_id = gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->cbtTempDevice)); - int bool_read = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->chbTempRead)); - int bool_write = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->chbTempWrite)); - if (disk_id >= 0 && _config->size !=0) { - int index_find = -1; - for (int index = 0; index < _config->size; index++) { - char* disk_cfg = _config->disk[index]; - if (strstr(disk_cfg, disk) != NULL) { - index_find = index; - break; - } - } - if (index_find == -1) { - // Добавление - _config->disk = yon_char_parsed_append(_config->disk,&_config->size, disk); - _config->size--; - if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->chbTempRead))) { - _config->i_o_limit_read_size = philos_int_append(_config->i_o_limit_read_size,&_config->size,(int)gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->cbtTempRead))); - _config->size--; - _config->i_o_limit_read = philos_int_append(_config->i_o_limit_read,&_config->size,gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(widgets->spinTempRead))); - _config->size--; - } - else { - _config->i_o_limit_read_size = philos_int_append(_config->i_o_limit_read_size,&_config->size,-3); - _config->size--; - _config->i_o_limit_read = philos_int_append(_config->i_o_limit_read,&_config->size,-3); - _config->size--; - } - if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->chbTempWrite))) { - _config->i_o_limit_write_size = philos_int_append(_config->i_o_limit_write_size,&_config->size,(int)gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->cbtTempWrite))); - _config->size--; - _config->i_o_limit_write = philos_int_append(_config->i_o_limit_write,&_config->size,gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(widgets->spinTempWrite))); - _config->size--; - } - else { - _config->i_o_limit_write_size = philos_int_append(_config->i_o_limit_write_size,&_config->size,-3); - _config->size--; - _config->i_o_limit_write = philos_int_append(_config->i_o_limit_write,&_config->size,-3); - _config->size--; - } - _config->size++; - - } - else { - // Редактирование - //_config->disk[index_find] = yon_char_new(disk); - if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->chbTempRead))) { - _config->i_o_limit_read_size[index_find] =(int)gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->cbtTempRead)); - _config->i_o_limit_read[index_find] = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(widgets->spinTempRead)); - } - else { - _config->i_o_limit_read_size[index_find] = -3; - _config->i_o_limit_read[index_find] = -3; - } - if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->chbTempWrite))) { - _config->i_o_limit_write_size[index_find] = (int)gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->cbtTempWrite)); - _config->i_o_limit_write[index_find] = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(widgets->spinTempWrite)); - } - else { - _config->i_o_limit_write_size[index_find] = -3; - _config->i_o_limit_write[index_find] = -3; - } - - } - } - else { - if (bool_read == 1 || bool_write == 1) { - _config->disk = yon_char_parsed_append(_config->disk,&_config->size, disk); - _config->size--; - if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->chbTempRead))) { - _config->i_o_limit_read_size = philos_int_append(_config->i_o_limit_read_size,&_config->size,(int)gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->cbtTempRead))); - _config->size--; - _config->i_o_limit_read = philos_int_append(_config->i_o_limit_read,&_config->size,gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(widgets->spinTempRead))); - _config->size--; - } - else { - _config->i_o_limit_read_size = philos_int_append(_config->i_o_limit_read_size,&_config->size,-3); - _config->size--; - _config->i_o_limit_read = philos_int_append(_config->i_o_limit_read,&_config->size,-3); - _config->size--; - } - if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->chbTempWrite))) { - _config->i_o_limit_write_size = philos_int_append(_config->i_o_limit_write_size,&_config->size,(int)gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->cbtTempWrite))); - _config->size--; - _config->i_o_limit_write = philos_int_append(_config->i_o_limit_write,&_config->size,gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(widgets->spinTempWrite))); - _config->size--; - } - else { - _config->i_o_limit_write_size = philos_int_append(_config->i_o_limit_write_size,&_config->size,-3); - _config->size--; - _config->i_o_limit_write = philos_int_append(_config->i_o_limit_write,&_config->size,-3); - _config->size--; +/**int yon_config_save(char *command) + * [EN] + * Saves config with [command] + * [RU] + * Выполняет команду [command], добавляя в конец все записи конфига в таком виде: + * [ПАРАМЕТР1]="[значения1]" [ПАРАМЕТР2]="[значения2]" +*/ +int yon_config_save(char *command){ + check_config{ + dictionary *dict = NULL; + for_dictionaries(dict,__yon__config__strings){ + command = yon_char_unite(command, " ", yon_dictionary_get_data(dict,char*), NULL); + } + if (popen(command, "r")) return 1; + else return 0; + } else return 0; +} + +/**yon_config_get_all(int *size) + * [EN] + * + * [RU] + * Возвращает массив со всеми параметрами конфига, оканчивающаяся NULL + * [size] - указатель, в который выгружается длина массива +*/ +config_str yon_config_get_all(int *size){ + check_config{ + *size = 1; + config_str conf = NULL; + dictionary *dict = NULL; + for_dictionaries(dict,__yon__config__strings){ + conf = yon_remalloc(conf,sizeof(char*)*(*size)); + conf[(*size)-1] = yon_char_unite(dict->key,"=",(char*)dict->data,NULL); + size++; + } + conf = yon_remalloc(conf,sizeof(char*)*(*size+1)); + conf[*size] = NULL; + return conf; + } else return NULL; +} + +/**[EN] + * int yon_config_save(char *command) + * Saves config with [command] + * [RU] + * Выполняет команду [command] +*/ +// int yon_config_save(char *command) +// { +// FILE *output = popen(command, "r"); +// return 1; +// } + +/**char *yon_config_get_parameter(config parameters, int size, char *param) + * [EN] + * Gets parameter [param] from parameter list [parameters] of size [size]; + * or NULL if nothing were found + * [RU] + * Возвращает параметр [param] из массива строк [parameters] размером [size] + * или NULL если такой не был найден +*/ +char *yon_config_get_parameter(config_str parameters, int size, char *param) +{ + if (param[0]==' ') + yon_char_divide_search(param," ",-1); + param=yon_char_divide_search(yon_char_new(param)," ",-1); + + char *str = NULL; + for (int j = 0; j < size; j++) + { + char *name = yon_char_divide_search(yon_char_new(parameters[j]), "=", 1); + if (name) + { + if (strcmp(name, param) == 0) + { + str = yon_char_divide_search(yon_char_new(parameters[j]), "\n", 1); + if (strcmp(str, "") != 0 && strcmp(str, "(null)") != 0) + return str; + else + return NULL; } - _config->size++; - } - else { } } + return NULL; } -int yon_launch_app(char *name) -{ - char *path = name; - thread_output *thread = malloc(sizeof(thread_output)); - thread->command = path; - thread->exitcode = malloc(sizeof(int)); - pthread_t thread_id; - pthread_create(&thread_id, NULL, (void *)yon_launch, thread); - return *thread->exitcode; -}; + + +// terminal-using functions + +/**yon_launch_app_with_arguments(char *name, char *args) + * [EN] + * Execute [command] in separate thread; + * [RU] + * Выполнить команду [command] в отдельном потоке; +*/ int yon_launch_app_with_arguments(char *name, char *args) { - char *path = yon_char_get_augumented("/usr/bin/", name); - path = yon_char_get_augumented(path, " "); - path = yon_char_get_augumented(path, args); + char *path = yon_char_unite("/usr/bin/", name, " ", args,NULL); pthread_t thread_id; - thread_output *thread = malloc(sizeof(thread_output)); - thread->command = path; - thread->exitcode = malloc(sizeof(int)); - pthread_create(&thread_id, NULL, (void *)yon_launch, thread); - return *thread->exitcode; + char *command = NULL; + command = path; + pthread_create(&thread_id, NULL, (void *)yon_launch, command); }; -int yon_launch(thread_output *thread) +/**yon_launch(char *command) + * [EN] + * Execute command [command] + * [RU] + * Выполнить команду [command] +*/ +void yon_launch(char *command) { - int a = 0; - a = system(thread->command); - *thread->exitcode = a; - return *thread->exitcode; -} - -int* philos_int_append(int* array, int* size, int value) { - array = yon_remalloc(array, (*size+1)*sizeof(int)); - array[(*size)] = value; - (*size)++; - return array; - + system(command); } -int* remove_element_int_array(int* array, int* size, int item_to_delete) { - int *new_int_parsed=NULL; - new_int_parsed=malloc(sizeof(int)*((*size)-1)); - int flag = 0; - for (int i=0;i < (*size);i++){ - if (i==item_to_delete) { - flag = 1; - } - if (flag == 0) { - memcpy(&(new_int_parsed[i]),&(array[i]),sizeof(int)); - } - else if (flag == 1 && i!=item_to_delete) { - memcpy(&(new_int_parsed[i-1]),&(array[i]),sizeof(int)); - } - } - (*size)=(*size)-1; - return new_int_parsed; -} - -int** remove_element_int_array_n3(int** array, int* size, int item_to_delete) { - int **new_int_parsed=NULL; - new_int_parsed=malloc(sizeof(int*)*((*size)-1)); - int flag = 0; - for (int i=0;i < (*size);i++){ - if (i==item_to_delete) { - flag = 1; - } - if (flag == 0) { - philos_array_int_copy(&new_int_parsed[i],&array[i]); - } - else if (flag == 1 && i!=item_to_delete) { - philos_array_int_copy(&new_int_parsed[i-1],&array[i]); - } - } - (*size)=(*size)-1; - return new_int_parsed; -} // Gtk functions @@ -1623,7 +1223,7 @@ static void child_ready(VteTerminal *terminal, GPid pid, GError *error, gpointer * терминал добавляется в контейнер [place_to_show] виджета, * после завершения работы терминала вызывается функция [endwork_function] с аргументом [endwork_function_argument]. */ -void yon_terminal_integrated_launch(GtkWidget *terminal, char* command, void *endwork_function, void* endwork_function_argument){ +void yon_terminal_integrated_launch(GtkWidget *place_to_show, char* command, void *endwork_function, void* endwork_function_argument){ char **commands=new_arr(char*,2); gchar **envp = g_get_environ(); commands[0]=(gchar *)g_strdup(g_environ_getenv(envp, "SHELL")); @@ -1631,10 +1231,13 @@ void yon_terminal_integrated_launch(GtkWidget *terminal, char* command, void *en char **env=new_arr(char*,2); env[0]=""; env[1]=NULL; + GtkWidget *terminal = vte_terminal_new(); vte_terminal_set_size(VTE_TERMINAL(terminal),10,15); VtePty *pty = vte_pty_new_sync(VTE_PTY_DEFAULT,NULL,NULL); vte_terminal_set_pty(VTE_TERMINAL(terminal),pty); - char *install_command=yon_char_unite("tput cup 0 0 && tput ed; ",command, "; exit 0\n",NULL); + gtk_container_add(GTK_CONTAINER(place_to_show),terminal); + char *install_command=yon_char_unite("tput cup 0 0 && tput ed; ",command," ; sleep 5;exit 0","\n",NULL); + printf("%s\n",install_command); if(endwork_function) g_signal_connect(G_OBJECT(terminal), "child-exited", G_CALLBACK(endwork_function), endwork_function_argument); vte_terminal_spawn_async(VTE_TERMINAL(terminal), @@ -1666,28 +1269,152 @@ void yon_terminal_integrated_launch(GtkWidget *terminal, char* command, void *en gtk_widget_show_all(terminal); } -char* philos_get_size_bite(GtkWidget* chk_button, GtkWidget* spin, GtkWidget* combo_box_text) { - if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(chk_button))) { - char* size_prifics = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(combo_box_text)); - int size_bite = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(spin)); - char* str_size_bute = yon_char_unite(yon_char_from_int(size_bite), " ", size_prifics, NULL); - return str_size_bute; +/**yon_terminal_integrated_start(GtkWidget *terminal, char* command, void *endwork_function, void* endwork_function_argument) + * [EN] + * launches terminal with specific [command], + * terminal is shown in [place_to_show] container, + * after terminal done its work [endwork_function] is called with [endwork_function_argument] argument. + * [RU] + * Запускает терминал с командой [command], + * терминал добавляется в контейнер [place_to_show] виджета, + * после завершения работы терминала вызывается функция [endwork_function] с аргументом [endwork_function_argument]. +*/ +void yon_terminal_integrated_start(GtkWidget *terminal, char* command, void *endwork_function, void* endwork_function_argument){ + char **commands=new_arr(char*,2); + gchar **envp = g_get_environ(); + commands[0]=(gchar *)g_strdup(g_environ_getenv(envp, "SHELL")); + commands[1]=NULL; + char **env=new_arr(char*,2); + env[0]=""; + env[1]=NULL; + vte_terminal_set_size(VTE_TERMINAL(terminal),10,15); + VtePty *pty = vte_pty_new_sync(VTE_PTY_DEFAULT,NULL,NULL); + vte_terminal_set_pty(VTE_TERMINAL(terminal),pty); + char *install_command=yon_char_unite("tput cup 0 0 && tput ed; ",command," ; sleep 5;exit 0","\n",NULL); + if(endwork_function) + g_signal_connect(G_OBJECT(terminal), "child-exited", G_CALLBACK(endwork_function), endwork_function_argument); + vte_terminal_spawn_async(VTE_TERMINAL(terminal), + VTE_PTY_DEFAULT, + NULL, + commands, + NULL, + 0, + NULL, NULL, + NULL, + -1, + NULL, + child_ready, + install_command); + vte_pty_spawn_async(pty, + NULL, + commands, + NULL, + 0, + NULL, NULL, + NULL, + -1, + NULL, + NULL, + NULL); + vte_terminal_set_scrollback_lines(VTE_TERMINAL(terminal), 100); + vte_terminal_set_scroll_on_output(VTE_TERMINAL(terminal), TRUE); + vte_terminal_set_scroll_on_keystroke(VTE_TERMINAL(terminal), TRUE); + gtk_widget_show_all(terminal); } - else { - char* str = (char*)malloc(sizeof(char*)*2); - str[0] = '-'; - str[1] = '\0'; - return str; +#endif + // Window config functions + #define check_window_config_setup if(__yon_window_config_target_window) + struct { + int x; + int y; + int width; + int height; + int fullscreen; + } __yon_main_window_config; + static GtkWindow *__yon_window_config_target_window = NULL; + static GKeyFile *__yon_window_config_file = NULL; + static char *__yon_window_config_path = NULL; + + void yon_window_config_save(){ + g_key_file_set_integer(__yon_window_config_file,"window","WindowPosX",__yon_main_window_config.x); + g_key_file_set_integer(__yon_window_config_file,"window","WindowPosY",__yon_main_window_config.y); + g_key_file_set_integer(__yon_window_config_file,"window","WindowWidth",__yon_main_window_config.width); + g_key_file_set_integer(__yon_window_config_file,"window","WindowHeight",__yon_main_window_config.height); + g_key_file_set_integer(__yon_window_config_file,"window","fullscreen",__yon_main_window_config.fullscreen); + g_key_file_save_to_file(__yon_window_config_file,__yon_window_config_path,NULL); } -} -void philos_fill_combo_box_text(GtkWidget *cbt, config_str list_data, int size) { - for (int index = 0; index < size; index++) { - gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(cbt), list_data[index]); + + void yon_get_is_fullscreen(){ + gtk_window_is_maximized(__yon_window_config_target_window); + __yon_main_window_config.fullscreen = gtk_window_is_maximized(__yon_window_config_target_window); } -} -#endif -int yon_gtk_combo_box_fill(GtkWidget *combo, config_str parameters,int size){ + + void yon_on_configured_window_destroy(GtkWidget* self,GdkEvent* event){ + check_window_config_setup{ + yon_get_is_fullscreen(); + yon_window_config_save(); + } + gtk_main_quit(); + } + + void __yon_window_config_on_resize(){ + int max=0; + max=gtk_window_is_maximized(__yon_window_config_target_window); + if(max==0){ + gtk_window_get_size(__yon_window_config_target_window,&__yon_main_window_config.width,&__yon_main_window_config.height); + gtk_window_get_position(__yon_window_config_target_window,&__yon_main_window_config.x,&__yon_main_window_config.y); + } + } + + void yon_window_config_setup(GtkWindow *window){ + __yon_window_config_target_window = window; + g_signal_connect(G_OBJECT(window),"delete-event",G_CALLBACK(yon_on_configured_window_destroy),NULL); + g_signal_connect(G_OBJECT(window),"check-resize"/*"configure-event"*/,G_CALLBACK(__yon_window_config_on_resize),NULL); + } + + void _yon_maximize(void *data){ + g_usleep(G_USEC_PER_SEC/10); + if(__yon_main_window_config.fullscreen ==1) gtk_window_maximize(__yon_window_config_target_window); + } + + int yon_window_config_load(char *path){ + __yon_window_config_file = g_key_file_new(); + __yon_window_config_path=yon_char_new(path); + if (!g_key_file_load_from_file(__yon_window_config_file,__yon_window_config_path,G_KEY_FILE_NONE,NULL)){ + struct stat st; + int size; + config_str conf = yon_char_parse(yon_char_new(__yon_window_config_path),&size,"/"); + char *path = yon_char_unite(conf[0],"/",conf[1],"/",conf[2],"/",conf[3],"/",conf[4],"/",NULL); + if (stat(path, &st) == -1) { + mkdir(path, 0777); + } + FILE *fp; + fp=fopen(__yon_window_config_path,"w"); + fclose(fp); + g_key_file_load_from_file(__yon_window_config_file,__yon_window_config_path,G_KEY_FILE_NONE,NULL); + } + __yon_main_window_config.x = g_key_file_get_integer(__yon_window_config_file,"window","WindowPosX",NULL); + __yon_main_window_config.y = g_key_file_get_integer(__yon_window_config_file,"window","WindowPosY",NULL); + __yon_main_window_config.width = g_key_file_get_integer(__yon_window_config_file,"window","WindowWidth",NULL); + __yon_main_window_config.height = g_key_file_get_integer(__yon_window_config_file,"window","WindowHeight",NULL); + __yon_main_window_config.fullscreen = g_key_file_get_integer(__yon_window_config_file,"window","fullscreen",NULL); + if (__yon_main_window_config.width==0) __yon_main_window_config.width=800; + if (__yon_main_window_config.height==0) __yon_main_window_config.height=600; + gtk_window_resize(__yon_window_config_target_window,__yon_main_window_config.width,__yon_main_window_config.height); + gtk_window_move(__yon_window_config_target_window,__yon_main_window_config.x,__yon_main_window_config.y); + pthread_t tid; + pthread_create(&tid,NULL,(void *)_yon_maximize,NULL); + return 1; + } + + void yon_window_config_apply(){ + dictionary *dict=NULL; + gtk_window_move(__yon_window_config_target_window,__yon_main_window_config.x,__yon_main_window_config.y); + gtk_window_resize(__yon_window_config_target_window,__yon_main_window_config.width,__yon_main_window_config.height); + } + +int yon_gtk_combo_box_text_fill(GtkWidget *combo, config_str parameters,int size){ if (combo&¶meters){ for (int i=0;ifirst; dct != NULL; dct = dct->next) - { - gtk_box_pack_start(GTK_BOX(destination), (GtkWidget *)dct->data, expand, fill, padding); - } +/**yon_dictionary_gtk_pack_start_multiple_widgets(GtkBox *destination, gboolean expand, gboolean fill, int padding, ...) + * [EN] + * + * [RU] + * Добвляет в [destination] все виджеты, прописанные после [padding] + * [expand] - расширяемость выделенного для виджетов места + * [fill] - заполнять ли виджетом всё ему выделенное место + * [padding] - отступ од других элементов +*/ +int yon_dictionary_gtk_pack_start_multiple_widgets(GtkBox *destination, gboolean expand, gboolean fill, int padding, ...){ + va_list args; + va_start(args,padding); + GtkWidget *widget = va_arg(args,GtkWidget*); + while (widget){ + gtk_box_pack_start(GTK_BOX(destination), widget, expand, fill, padding); + } + va_end(args); return 1; - }else return 0; } -int yon_dictionary_gtk_pack_end_multiple_widgets(dictionary *dict, GtkWidget *destination, gboolean expand, gboolean fill, int padding) -{ - for (dictionary *dct = dict->first; dct != NULL; dct = dct->next) - { - gtk_box_pack_end(GTK_BOX(destination), (GtkWidget *)dct->data, expand, fill, padding); - } +int yon_dictionary_gtk_pack_end_multiple_widgets(GtkBox *destination, gboolean expand, gboolean fill, int padding, ...){ + va_list args; + va_start(args,padding); + GtkWidget *widget = va_arg(args,GtkWidget*); + while (widget){ + gtk_box_pack_end(GTK_BOX(destination), widget, expand, fill, padding); + } + va_end(args); return 1; } + void _yon_ubl_header_setup(GtkWidget *Overlay, GtkWidget *Head, GtkWidget *Image, char *image_path) { gtk_overlay_add_overlay(GTK_OVERLAY(Overlay), Head); gtk_image_set_from_file(GTK_IMAGE(Image), image_path); } +void _yon_ubl_header_setup_resource(GtkWidget *Overlay, GtkWidget *Head, GtkWidget *Image, char *image_path) +{ + gtk_overlay_add_overlay(GTK_OVERLAY(Overlay), Head); + gtk_image_set_from_resource(GTK_IMAGE(Image), image_path); +} + int yon_ubl_status_box_setup(GtkWidget *icon, GtkWidget *box, GtkWidget *label) { if(icon&&box&&label){ @@ -1746,9 +1491,6 @@ int yon_ubl_status_box_setup(GtkWidget *icon, GtkWidget *box, GtkWidget *label) } else return 0; } -/** - * -*/ void _yon_ubl_status_box_render(char *text, BACKGROUND_IMAGE_TYPE type) { render_data data = render; @@ -1775,7 +1517,6 @@ void _yon_ubl_status_box_render(char *text, BACKGROUND_IMAGE_TYPE type) gtk_label_set_text(GTK_LABEL(data.label), text); } - void yon_ubl_status_box_render(char *text, BACKGROUND_IMAGE_TYPE type){ _yon_ubl_status_box_render(text,type); } @@ -1898,109 +1639,8 @@ void yon_ubl_browser_window_open(char *link, char *browser_window_name){ if (!user) user=getlogin(); char *command=yon_char_unite("sudo -u ",user," xdg-open ", link,NULL); - yon_launch_app(command); + yon_launch(command); } #endif -// Mem Size pow -void philos_set_spin_adjustment(GtkWidget *check, GtkWidget *spin, GtkWidget *combo, size_t value) { - gboolean active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(check)); - guint value_spin = gtk_spin_button_get_digits(GTK_SPIN_BUTTON(spin)); - if (active != -1) { - GtkAdjustment* adjustment = NULL; - adjustment = gtk_spin_button_get_adjustment(GTK_SPIN_BUTTON(spin)); - gtk_adjustment_set_lower(adjustment, 0.0); - gtk_adjustment_set_page_increment(adjustment, 1.0); - if (combo == NULL) { - gtk_adjustment_set_upper(adjustment, (gdouble)(value*100)); - if ((value*100)0) { - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check),1); - } - else if (active == 0) { - gtk_spin_button_set_value(GTK_SPIN_BUTTON(spin), 0); - } - if (flag_cpu == 0) { - philos_set_spin_adjustment(check, spin, combo, resurs); - if (value_spin>resurs) { - gtk_spin_button_set_value(GTK_SPIN_BUTTON(spin), resurs); - } - } - else { - philos_set_spin_adjustment(check, spin, NULL, resurs); - } - -} -size_t get_resurs_total(char* cmd) { - int size = 0; - size_t size_memory = 0; - char **responce = yon_config_load(cmd, &size); - for (int index = 0; index < size; index++ ) { - char* mem_size_kb = yon_char_divide_search(responce[index], "\n", -1); - size_memory = atoll(mem_size_kb); - free(mem_size_kb); - } - philos_free_string_array(&responce, size); - return size_memory; -} - -float get_size_pow_memory(size_t size_memory, int size) { - float res = size_memory; - for (size_t index = 0; index < size; index++) { - res = res/1024; - } - return res; -} - -void philos_set_active_widgets_device_io(GtkWidget* combo_to_l2,GtkWidget *check, GtkWidget *spin, GtkWidget *combo) { - int menu_id = gtk_combo_box_get_active(GTK_COMBO_BOX(combo_to_l2)); - if (menu_id != -1) { - gboolean active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(check)); - if (active == 0) { - gtk_spin_button_set_value(GTK_SPIN_BUTTON(spin), 0); - } - else if (gtk_spin_button_get_digits(GTK_SPIN_BUTTON(spin))>0) { - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check),1); - } - gtk_widget_set_sensitive(spin, active); - gtk_widget_set_sensitive(combo, active); - } - else { - gtk_spin_button_set_value(GTK_SPIN_BUTTON(spin), 0); - gtk_widget_set_sensitive(spin, 0); - gtk_widget_set_sensitive(combo, 0); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check), 0); - } - philos_set_spin_adjustment(check, spin, combo, 12582912); -} #endif \ No newline at end of file diff --git a/source/ubl-utils.h b/source/ubl-utils.h index 27c2baa..c16eba9 100644 --- a/source/ubl-utils.h +++ b/source/ubl-utils.h @@ -7,98 +7,38 @@ #include #include #include +#include +#include #include #include #include -#include -#include -#include -#include "ubl-cmake.h" +#include "ubl-cmake.h" #ifdef WEBKIT_FOUND #include #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 try bool __HadError=false; +#define catch(x) ExitJmp:if(__HadError) +#define throw(x) {__HadError=true;goto ExitJmp;} #define new(type) malloc(sizeof(type)) #define new_arr(type,size) malloc(sizeof(type)*size) -#define yon_ubl_set_config_save_data_pointer(command) config_commands.config_save_data = command - -#define yon_ubl_load_global_config(command, size_pointer) yon_config_load(command, size_pointer) -#define yon_ubl_load_local_config(command, size_pointer) yon_config_load(command, size_pointer) -#define yon_ubl_save_global_config(command) yon_config_save(command) -#define yon_ubl_save_local_config(command) yon_config_save(command) -#define try bool __HadError=false; -#define catch(x) ExitJmp:if(__HadError) -#define throw(x) {__HadError=true;goto ExitJmp;} -#define file_source_login_min_max "/etc/login.defs" -static char** array_size_pow; typedef enum { #ifdef __GTK_H__ DICTIONARY_GTK_WIDGETS_TYPE, #endif - DICTIONARY_OTHER_TYPE + DICTIONARY_OTHER_TYPE=0, + DICTIONARY_CHAR_TYPE, + DICTIONARY_INT_TYPE, + DICTIONARY_BOOL_TYPE, } DICT_TYPE; -typedef struct -{ - char *command; - int *exitcode; -} thread_output; - -typedef struct { - char** disk; - int* i_o_limit_read; - int* i_o_limit_write; - int* i_o_limit_read_size; - int* i_o_limit_write_size; - int size; -} temp_config; - -typedef struct { - - GtkWidget* Window; - GtkWidget* btnSaveTempSave; - GtkWidget* btnTempCancel; - - GtkWidget* entryTempCmd; - GtkWidget* chbTempRead; - GtkWidget* spinTempRead; - GtkWidget* cbtTempRead; - - GtkWidget* chbTempWrite; - GtkWidget* spinTempWrite; - GtkWidget* cbtTempWrite; - - GtkWidget* chkSoftRestrictionTemp; - GtkWidget* spiSevereRestrictionTemp; - GtkWidget* cmSevereRestrictionTemp; - - GtkWidget* chkSevereRestrictionTemp; - GtkWidget* spinSevereRestrictionTemp; - GtkWidget* cmbSevereRestrictionTemp; - - GtkWidget* chkPaddingFLTemp; - GtkWidget* spinPaddingFLTemp; - GtkWidget* cmbPaddingFLTemp; - - GtkWidget* chkCPULimitTemp; - GtkWidget* spinCPULimitTemp; - GtkWidget* lblCPULimitTemp; - - GtkWidget* cbtTempDevice; - GtkWidget* cbxTempQuotaObj; - GtkWidget* cbxTempQuotaLevel2; - GtkWidget* boxBlockGui; -} temp_set_window; typedef struct dictionary { char *key; @@ -107,6 +47,7 @@ typedef struct dictionary struct dictionary *prev; struct dictionary *first; DICT_TYPE data_type; + int flag1; } dictionary; typedef struct apps @@ -121,6 +62,15 @@ typedef struct apps } apps; typedef char** config_str; + +static dictionary *__yon__config__strings = NULL; +#define check_config if(__yon__config__strings&&__yon__config__strings->data_type==DICTIONARY_CHAR_TYPE) + +#define config(key) yon_config_get_by_key(key) + +#define for_config dictionary temp = NULL; for_dictionary(temp,__yon__config__strings) + +#define yon_remalloc(pointer, size) (!pointer) ? malloc(size) : realloc(pointer, size) // dictionary functions /**yon_dictionary_get_data(dictionary, type) @@ -134,34 +84,36 @@ typedef char** config_str; * [type] - тип данных, хранящихся в словаре [dictionary]. */ #define yon_dictionary_get_data(dictionary, type) ((type)dictionary->data) -#define yon_dictionary_add_or_create_if_exists_with_data(dict,key,data) {if (!dict) dict=yon_dictionary_create_with_data(key,data); \ - else dict=yon_dictionary_create_with_data_connected(dict,key,data);} - -dictionary *yon_dictionary_create_empty(); - -dictionary *yon_dictionary_copy(dictionary *dict); -dictionary *yon_dictionary_copy_deep(dictionary *dict); +/**yon_dictionary_add_or_create_if_exists_with_data(dict,key,data) + * [EN] + * + * [RU] + * Добавляет элемент словаря в конец словаря [dict] c ключом [key] и данными [data]. + * Если словарь не существует, создаёт его +*/ +#define yon_dictionary_add_or_create_if_exists_with_data(dict,key,data) {if (!dict) dict=yon_dictionary_new_with_data(key,data); \ + else dict=yon_dictionary_append_with_data(dict,key,data);} -size_t yon_dict_len(dictionary *dict); +dictionary *yon_dictionary_new(); -dictionary *yon_dictionary_create_conneced(dictionary *targetdict); +dictionary *yon_dictionary_append(dictionary *targetdict); dictionary *yon_dictionary_get_last(dictionary *dict); -dictionary *yon_dictionary_switch_places(dictionary *dict, int aim); +dictionary *yon_dictionary_swap(dictionary *dict, int aim); void yon_dictionary_make_first(dictionary *dict); void yon_dictionary_make_nth(dictionary *dict, int nth); -dictionary *yon_dictionary_create_with_data(char *key, void *data); +dictionary *yon_dictionary_new_with_data(char *key, void *data); -dictionary *yon_dictionary_create_with_data_connected(dictionary *dict, char *key, void *data); +dictionary *yon_dictionary_append_with_data(dictionary *dict, char *key, void *data); dictionary *yon_dictionary_connect(dictionary *old, dictionary *toconnect); -dictionary *yon_dictionary_find(dictionary **dict, char *key); +dictionary *yon_dictionary_get(dictionary **dict, char *key); dictionary *yon_dictionary_rip(dictionary *dict); @@ -170,16 +122,8 @@ dictionary *yon_dictionary_get_nth(dictionary *dict, int place); void *yon_dictionary_free_all(dictionary *dictionary,void (data_manipulation)(void*)); // char functions -char* philos_str_remove(char *str, const char *sub); -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_append(char *source, char *append); char *yon_char_new(char *chr); @@ -195,23 +139,9 @@ char *yon_char_from_int(int int_to_convert); char *yon_char_replace(char *source, char *find, char*replace); -void philos_split_size_memory(char* str_value, int* size, char* pow_memory); - -char* philos_format_cfg_str_size_memory(char* str_key, int value, int pow_size_memory); - char **yon_char_parse(char *parameters, int *size, char *divider); -char** philos_str_split(char *parameters, int *size, char *divider); - -void philos_array_string_remove_char(char*** array, char* str_remove, int size); - -void philos_set_pow_size_memory(char* str_find, int** array_size,int index, char** array_size_pow); - -void philos_set_size_memory_integer_char(char* str_find, char*** array_data, int index); - -char **yon_char_parsed_shrink(char **char_string, int *size, int item_to_delete); - -char*** yon_char_parsed_shrink_n3(char ***char_string, int *size, int item_to_delete); +char **yon_char_parsed_rip(char **char_string, int *size, int item_to_delete); int yon_char_parsed_check_exist(char **parameters, int size, char *param); @@ -220,21 +150,18 @@ int yon_char_find_count(char *source, char *find); int yon_char_parsed_includes_char_parsed (config_str source, config_str to_check, int source_size, int check_size); config_str yon_char_parsed_new (int *size, ...); -config_str yon_char_parsed_append(config_str parsed, int *size, char *string); + void yon_char_parsed_copy(config_str *source, config_str *to_copy); -void philos_array_str_copy(char*** source, char*** copy); -void philos_array_int_copy(int** source, int** copy); -void array_copy(char*** source, char*** copy); -// parsing functions +config_str yon_char_parsed_append(config_str parsed, int *size, char *string); -config_str philos_list_user(int* size); +int yon_ubl_check_root(); -char* philos_str_size_pow_byte(GtkWidget *combo_box_text); +char *yon_ubl_root_user_get(); -config_str philos_list_group(int* size); +// parsing functions -unsigned short philos_read_uid_min_max(char* filename, char* search); +config_str philos_list_user(int* size); apps *yon_apps_scan_and_parse_desktops(int *sizef); @@ -248,48 +175,40 @@ int yon_config_save(char *command); char *yon_config_get_parameter(config_str parameters, int size, char *param); -char *yon_config_make_save_parameter_with_multiple_arguments(char *parameter_string, char *config_parameter, char *divider); +int yon_config_load_register(char *command); -// terminal-using functions +int yon_config_remove_by_key(char *key); -char** philos_pars_terminal_systemd_cgls(char* CMD_GET_SLICE_SERVICE, char* str_find, int* size_array_data); +int yon_config_remove_by_data(void *data); -char* philos_pard_array_add_cmd(char* cmd, temp_config* _config, char* key, int* array_io, int* array_io_pow_size); +int yon_config_remove_element(char *key, char *deleted); -int philos_check_activ_disk(temp_set_window *widgets, temp_config* _config); +void *yon_config_get_by_key(char *key); -void philos_temp_generate_cmd(temp_set_window *widgets, temp_config* _config); +char *yon_config_get_key_by_data(char *data); -void philos_update_device_to_entry(temp_set_window *widgets, temp_config* _config, int flag_check_array); +int yon_config_set(char *key, void *data); -void philos_temp_config_init(temp_config* _config); +int yon_config_clean(); -void philos_temp_add_disk(temp_set_window *widgets, temp_config* _config); +void yon_config_register(char *key, void *data); -void philos_temp_del_disk(temp_set_window *widgets, temp_config* _config); +config_str yon_config_get_all(); -int yon_launch_app(char *name); +// terminal-using functions int yon_launch_app_with_arguments(char *name, char *args); -int yon_launch(thread_output *thread); - -int* philos_int_append(int* array, int* size, int value); +void yon_launch(char *command); -int* remove_element_int_array(int* array, int* size, int item_to_delete); - -int** remove_element_int_array_n3(int** array, int* size, int item_to_delete); // Gtk functions #ifdef __GTK_H__ #ifdef VTE_TERMINAL +void yon_terminal_integrated_launch(GtkWidget *place_to_show, char* command, void *endwork_function, void* endwork_function_argument); + +void yon_terminal_integrated_start(GtkWidget *terminal, char* command, void *endwork_function, void* endwork_function_argument); -/** - * -*/ -void yon_terminal_integrated_launch(GtkWidget *terminal, char* command, void *endwork_function, void* endwork_function_argument); -char* philos_get_size_bite(GtkWidget* chk_button, GtkWidget* spin, GtkWidget* combo_box_text); -void philos_fill_combo_box_text(GtkWidget *cbt, config_str list_data, int size); #endif /**yon_gtk_builder_get_widget(builder, widget_name) @@ -308,11 +227,9 @@ typedef struct GtkListStore *List; } expander_icon_view; -// GtkWidget *yon_gtk_app_chooser_apps_create(); +void yon_window_config_setup(GtkWindow *window); -// dictionary *yon_gtk_app_chooser_create(); - -// expander_icon_view yon_gtk_icon_view_expander_create(GtkWidget *pack, ...); +int yon_window_config_load(char *path); int yon_gtk_combo_box_fill(GtkWidget *combo, char **parameters,int size); @@ -320,8 +237,9 @@ int yon_gtk_combo_box_text_find(GtkWidget *combo_box, char *text_to_find); int yon_gtk_icon_view_hide_empty(dictionary *icon_view_segment); -int yon_dictionary_gtk_pack_start_multiple_widgets(dictionary *dict, GtkWidget *destination, gboolean expand, gboolean fill, int padding); -int yon_dictionary_gtk_pack_end_multiple_widgets(dictionary *dict, GtkWidget *destination, gboolean expand, gboolean fill, int padding); +int yon_dictionary_gtk_pack_start_multiple_widgets(GtkBox *destination, gboolean expand, gboolean fill, int padding, ...); + +int yon_dictionary_gtk_pack_end_multiple_widgets(GtkBox *destination, gboolean expand, gboolean fill, int padding, ...); @@ -405,10 +323,13 @@ void yon_ubl_status_box_render(char *text, BACKGROUND_IMAGE_TYPE type); * [imag_path] - путь до картинки, загружаемой в [image] */ #define yon_ubl_header_setup(overlay, head, image, imag_path) _yon_ubl_header_setup(GTK_WIDGET(overlay), GTK_WIDGET(head), GTK_WIDGET(image), (char *)imag_path) +#define yon_ubl_header_setup_resource(overlay, head, image, imag_path) _yon_ubl_header_setup_resource(GTK_WIDGET(overlay), GTK_WIDGET(head), GTK_WIDGET(image), (char *)imag_path) #endif void _yon_ubl_header_setup(GtkWidget *Overlay, GtkWidget *Head, GtkWidget *Image, char *image_path); +void _yon_ubl_header_setup_resource(GtkWidget *Overlay, GtkWidget *Head, GtkWidget *Image, char *image_path); + void yon_ubl_setup_sockets(GtkWidget *main_window, GtkWidget *left_window, GtkWidget *right_window, int socket_main_id, int socket_left_id, int socket_right_id); #ifdef WEBKIT_FOUND @@ -417,9 +338,4 @@ void yon_ubl_browser_window_open(char *link, char *browser_window_name); void yon_ubl_browser_window_open(char *link, char *browser_window_name); #endif #endif -void philos_set_spin_adjustment(GtkWidget *check, GtkWidget *spin, GtkWidget *combo, size_t value); -void philos_set_active_widgets(GtkWidget *check, GtkWidget *spin, GtkWidget *combo, int flag_cpu, char* cmd); -size_t get_resurs_total(char* cmd); -float get_size_pow_memory(size_t size_memory, int size); -void philos_set_active_widgets_device_io(GtkWidget* combo_to_l2,GtkWidget *check, GtkWidget *spin, GtkWidget *combo); #endif \ No newline at end of file diff --git a/source/view_add.c b/source/view_add.c index 00d6d32..66d5774 100644 --- a/source/view_add.c +++ b/source/view_add.c @@ -10,7 +10,7 @@ temp_config* get_add_config() { temp_set_window *add_setup_window(char* glade_path) { if (add_widgets == NULL) { add_widgets = malloc(sizeof(temp_set_window)); - GtkBuilder *builder = gtk_builder_new_from_file(glade_path); + GtkBuilder *builder = gtk_builder_new_from_resource(glade_path); add_widgets->Window = yon_gtk_builder_get_widget(builder,"wndQuotasAdding"); add_widgets->btnSaveTempSave = yon_gtk_builder_get_widget(builder,"btnSaveAddSave"); add_widgets->btnTempCancel = yon_gtk_builder_get_widget(builder,"btnAddCancel"); @@ -121,8 +121,8 @@ void add_event(temp_set_window *widgets) { g_signal_connect(G_OBJECT(widgets->cbtTempDevice),"changed",G_CALLBACK(combo_box_device), NULL); g_signal_connect(G_OBJECT(widgets->cbtTempRead),"changed",G_CALLBACK(event_check_io_device), NULL); g_signal_connect(G_OBJECT(widgets->cbtTempWrite),"changed",G_CALLBACK(event_check_io_device), NULL); - g_signal_connect(G_OBJECT(widgets->spinTempRead),"value-changed",G_CALLBACK(event_check_io_device), NULL); - g_signal_connect(G_OBJECT(widgets->spinTempWrite),"value-changed",G_CALLBACK(event_check_io_device), NULL); + g_signal_connect(G_OBJECT(widgets->spinTempRead),"changed",G_CALLBACK(event_check_io_device), NULL); + g_signal_connect(G_OBJECT(widgets->spinTempWrite),"changed",G_CALLBACK(event_check_io_device), NULL); g_signal_connect(G_OBJECT(widgets->chbTempRead), "toggled", G_CALLBACK(event_check_io_device), NULL); g_signal_connect(G_OBJECT(widgets->chbTempWrite), "toggled", G_CALLBACK(event_check_io_device), NULL); } diff --git a/source/view_add.h b/source/view_add.h index 2b5e06f..98ee32f 100644 --- a/source/view_add.h +++ b/source/view_add.h @@ -12,6 +12,7 @@ #include #include #include "my_device.h" +#include "philos_utils.h" #define CMD_CPU "lscpu | grep \"CPU(s):\" |grep -oE \"[0-9]{1,}\"" diff --git a/source/view_edit.c b/source/view_edit.c index 889b0fc..9cd89f3 100644 --- a/source/view_edit.c +++ b/source/view_edit.c @@ -9,7 +9,7 @@ temp_config* get_edit_config() { temp_set_window *edit_setup_window(char* glade_path){ if (edit_widgets == NULL) { edit_widgets = malloc(sizeof(temp_set_window)); - GtkBuilder *builder = gtk_builder_new_from_file(glade_path); + GtkBuilder *builder = gtk_builder_new_from_resource(glade_path); edit_widgets->Window = yon_gtk_builder_get_widget(builder,"wndQuotasEdit"); edit_widgets->btnTempCancel = yon_gtk_builder_get_widget(builder,"btnEditCancel"); edit_widgets->btnSaveTempSave = yon_gtk_builder_get_widget(builder,"btnSaveEditSave"); @@ -46,21 +46,7 @@ temp_set_window *edit_setup_window(char* glade_path){ } return edit_widgets; } -void edit_config_init() { - if (obj_edit_config.size != 0) { - philos_free_string_array(&obj_edit_config.disk, obj_edit_config.size); - philos_free_int_array(&obj_edit_config.i_o_limit_read, obj_edit_config.size); - philos_free_int_array(&obj_edit_config.i_o_limit_write, obj_edit_config.size); - philos_free_int_array(&obj_edit_config.i_o_limit_read_size, obj_edit_config.size); - philos_free_int_array(&obj_edit_config.i_o_limit_write_size, obj_edit_config.size); - } - obj_edit_config.disk = NULL; - obj_edit_config.i_o_limit_read = NULL; - obj_edit_config.i_o_limit_write = NULL; - obj_edit_config.i_o_limit_read_size = NULL; - obj_edit_config.i_o_limit_write_size = NULL; - obj_edit_config.size = 0; -} + void edit_event(temp_set_window *widgets) { g_signal_connect(G_OBJECT(widgets->btnTempCancel),"clicked",G_CALLBACK(edit_on_hide_subwindow),NULL); g_signal_connect(G_OBJECT(widgets->Window), "destroy", G_CALLBACK(edit_destroy), NULL); @@ -71,12 +57,12 @@ void edit_event(temp_set_window *widgets) { g_signal_connect(G_OBJECT(widgets->chbTempRead), "toggled", G_CALLBACK(edit_init_windows), NULL); g_signal_connect(G_OBJECT(widgets->chbTempWrite), "toggled", G_CALLBACK(edit_init_windows), NULL); - g_signal_connect(G_OBJECT(widgets->spiSevereRestrictionTemp),"value-changed",G_CALLBACK(edit_init_windows), NULL); - g_signal_connect(G_OBJECT(widgets->spinSevereRestrictionTemp),"value-changed",G_CALLBACK(edit_init_windows), NULL); - g_signal_connect(G_OBJECT(widgets->spinPaddingFLTemp),"value-changed",G_CALLBACK(edit_init_windows), NULL); - g_signal_connect(G_OBJECT(widgets->spinCPULimitTemp),"value-changed",G_CALLBACK(edit_init_windows), NULL); - g_signal_connect(G_OBJECT(widgets->spinTempRead),"value-changed",G_CALLBACK(wrapper_edit_init_windows_size_memory), NULL); - g_signal_connect(G_OBJECT(widgets->spinTempWrite),"value-changed",G_CALLBACK(wrapper_edit_init_windows_size_memory), NULL); + g_signal_connect(G_OBJECT(widgets->spiSevereRestrictionTemp),"changed",G_CALLBACK(edit_init_windows), NULL); + g_signal_connect(G_OBJECT(widgets->spinSevereRestrictionTemp),"changed",G_CALLBACK(edit_init_windows), NULL); + g_signal_connect(G_OBJECT(widgets->spinPaddingFLTemp),"changed",G_CALLBACK(edit_init_windows), NULL); + g_signal_connect(G_OBJECT(widgets->spinCPULimitTemp),"changed",G_CALLBACK(edit_init_windows), NULL); + g_signal_connect(G_OBJECT(widgets->spinTempRead),"changed",G_CALLBACK(wrapper_edit_init_windows_size_memory), NULL); + g_signal_connect(G_OBJECT(widgets->spinTempWrite),"changed",G_CALLBACK(wrapper_edit_init_windows_size_memory), NULL); g_signal_connect(G_OBJECT(widgets->cmSevereRestrictionTemp),"changed",G_CALLBACK(wrapper_edit_init_windows_size_memory), widgets->spiSevereRestrictionTemp); g_signal_connect(G_OBJECT(widgets->cmbSevereRestrictionTemp),"changed",G_CALLBACK(wrapper_edit_init_windows_size_memory), widgets->spinSevereRestrictionTemp); g_signal_connect(G_OBJECT(widgets->cmbPaddingFLTemp),"changed",G_CALLBACK(wrapper_edit_init_windows_size_memory), widgets->spinPaddingFLTemp); diff --git a/source/view_edit.h b/source/view_edit.h index 6c09a41..c3a43da 100644 --- a/source/view_edit.h +++ b/source/view_edit.h @@ -12,6 +12,7 @@ #include #include #include "my_device.h" +#include "philos_utils.h" #define CMD_CPU "lscpu | grep \"CPU(s):\" |grep -oE \"[0-9]{1,}\"" #define CMD_SWAP "grep '^Swap' /proc/meminfo | grep \"SwapTotal\" |grep -oE \"[0-9]{1,}\"" diff --git a/ubl-settings-resourcequota.pot b/ubl-settings-resourcequota.pot index 16f7dde..d8be582 100644 --- a/ubl-settings-resourcequota.pot +++ b/ubl-settings-resourcequota.pot @@ -17,6 +17,9 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +msgid "Config loading failed" +msgstr "" + msgid "Remove" msgstr "" diff --git a/ubl-settings-resourcequota_ru.po b/ubl-settings-resourcequota_ru.po index 2c9df12..2048b2d 100644 --- a/ubl-settings-resourcequota_ru.po +++ b/ubl-settings-resourcequota_ru.po @@ -20,6 +20,9 @@ msgstr "" #: source/ubl-strings.h:8 #: source/ubl-strings.h:1 +msgid "Config loading failed" +msgstr "Не удалось загрузить конфигурацию" + msgid "Quota deleted" msgstr "Квота удалена" -- 2.35.1 From 9ded4af3be69831cdd1677a6ca1f148deefeac71 Mon Sep 17 00:00:00 2001 From: Igor Belitskiy Date: Tue, 27 Jun 2023 17:56:35 +0600 Subject: [PATCH 50/91] fix --- source/philos_utils.c | 10 ++++++ source/philos_utils.h | 1 + source/ubl-settings-resourcequota.c | 56 ++++++++++++++++++++++------- 3 files changed, 55 insertions(+), 12 deletions(-) diff --git a/source/philos_utils.c b/source/philos_utils.c index a3d6e4e..fd5e27d 100644 --- a/source/philos_utils.c +++ b/source/philos_utils.c @@ -966,4 +966,14 @@ static void child_ready(VteTerminal *terminal, GPid pid, GError *error, gpointer if (!terminal) return; if (pid == -1) printf("Error\n\n\n"); else vte_terminal_feed_child(VTE_TERMINAL(terminal),(char*)user_data,strlen((char*)user_data)); +} +/**[EN] + * int yon_config_save(char *command) + * Saves config with [command] + * [RU] +*/ +int philos_config_save(char *command) +{ + FILE *output = popen(command, "r"); + return 1; } \ No newline at end of file diff --git a/source/philos_utils.h b/source/philos_utils.h index 87fb987..b91cda2 100644 --- a/source/philos_utils.h +++ b/source/philos_utils.h @@ -108,4 +108,5 @@ void yon_terminal_integrated_launch(GtkWidget *terminal, char* command, void *en dictionary *yon_dictionary_create_conneced(dictionary *targetdict); void yon_int_array_append(int **source, int append); static void child_ready(VteTerminal *terminal, GPid pid, GError *error, gpointer user_data); +int philos_config_save(char *command); #endif \ No newline at end of file diff --git a/source/ubl-settings-resourcequota.c b/source/ubl-settings-resourcequota.c index 85c1dce..0da421d 100644 --- a/source/ubl-settings-resourcequota.c +++ b/source/ubl-settings-resourcequota.c @@ -426,9 +426,41 @@ void str_split_value(char* values, int index) { if (yon_char_find_count(key, "IOReadBandwidthMax") != 0) { get_param_io_limit(arr_values, index_1, size,index, "IOReadBandwidthMax"); } + else { + int* array_limit = NULL; + char** array_disk = NULL; + int index11 = 0; + array_limit = philos_int_append(array_limit, &index11, -2); + index11--; + array_disk = yon_char_parsed_append(array_disk, &index11, NULL); + main_config.i_o_limit_read = yon_remalloc(main_config.i_o_limit_read, (main_config.size_tree_view + 1) * sizeof(int*)); + main_config.i_o_limit_read_size = yon_remalloc(main_config.i_o_limit_read_size, (main_config.size_tree_view + 1) * sizeof(int*)); + main_config.disk = yon_remalloc(main_config.disk, (main_config.size_tree_view + 1) * sizeof(char**)); + philos_array_int_copy(&main_config.i_o_limit_read[main_config.size_tree_view], &array_limit); + philos_array_int_copy(&main_config.i_o_limit_read_size[main_config.size_tree_view], &array_limit); + yon_char_parsed_copy(&main_config.disk[main_config.size_tree_view], &array_disk); + philos_free_int_array(&array_limit, 1); + philos_free_string_array(&array_disk, 1); + } if (yon_char_find_count(key, "IOWriteBandwidthMax") != 0) { get_param_io_limit(arr_values, index_1, size,index, "IOWriteBandwidthMax"); } + else { + int* array_limit = NULL; + char** array_disk = NULL; + int index11 = 0; + array_limit = philos_int_append(array_limit, &index11, -2); + index11--; + array_disk = yon_char_parsed_append(array_disk, &index11, NULL); + main_config.i_o_limit_write = yon_remalloc(main_config.i_o_limit_write, (main_config.size_tree_view + 1) * sizeof(int*)); + main_config.i_o_limit_write_size = yon_remalloc(main_config.i_o_limit_write_size, (main_config.size_tree_view + 1) * sizeof(int*)); + main_config.disk = yon_remalloc(main_config.disk, (main_config.size_tree_view + 1) * sizeof(char**)); + philos_array_int_copy(&main_config.i_o_limit_write[main_config.size_tree_view], &array_limit); + philos_array_int_copy(&main_config.i_o_limit_write_size[main_config.size_tree_view], &array_limit); + yon_char_parsed_copy(&main_config.disk[main_config.size_tree_view], &array_disk); + philos_free_int_array(&array_limit, 1); + philos_free_string_array(&array_disk, 1); + } if (yon_char_find_count(key, "MemoryHigh") != 0) { philos_set_pow_size_memory(yon_char_new(value), &main_config.soft_raw_limit_size, index, array_size_pow); set_size_memory_integer(yon_char_new(value), &main_config.soft_raw_limit, index); @@ -516,6 +548,9 @@ void get_param_io_limit(char** arr_values, int index_start, int size, int index_ philos_free_string_array(&array_disk, index_n2); philos_free_int_array(&array_limit_size, index_n2); } + else { + + } } void set_size_memory_integer(char* str_find, int** array_data, int index) { @@ -712,7 +747,6 @@ int tree_view_edit() { philos_array_int_copy(&main_config.i_o_limit_write[index], edit_get_write_device()); philos_array_int_copy(&main_config.i_o_limit_write_size[index], edit_get_write_device_size_pow()); - yon_char_parsed_copy(&main_config.disk[index], edit_get_select_device()); main_config.soft_raw_limit_size[index] = edit_get_soft_size(); main_config.hard_raw_limit_size[index] = edit_get_hard_size(); @@ -844,11 +878,9 @@ void wrapper_edit_show() { } void main_edit_btn_save() { - if (get_edit_config) { - if (tree_view_edit(main_config.size_tree_view)) { - edit_init_windows(); - add_on_destroy_subwindow(get_widget_edit()->Window); - } + if (tree_view_edit(main_config.size_tree_view)) { + edit_init_windows(); + add_on_destroy_subwindow(get_widget_edit()->Window); } } @@ -962,7 +994,7 @@ char* save_format_value(int index) { char split_simvol[2] = {0}; split_simvol[0] = 0; split_simvol[1] = 0; - if (main_config.soft_raw_limit[index]==0) { + if (main_config.soft_raw_limit[index]>=0) { char* value_size = philos_format_cfg_str_size_memory("MemoryHigh=", main_config.soft_raw_limit[index],main_config.soft_raw_limit_size[index]); if (!strstr(value_size,"-")) { value = yon_char_unite(value ,split_simvol, value_size, NULL); @@ -971,7 +1003,7 @@ char* save_format_value(int index) { } free(value_size); } - if (main_config.hard_raw_limit[index]==0) { + if (main_config.hard_raw_limit[index]>=0) { char* value_size = philos_format_cfg_str_size_memory("MemoryMax=", main_config.hard_raw_limit[index],main_config.hard_raw_limit_size[index]); if (!strstr(value_size,"-")) { value = yon_char_unite(value ,split_simvol, value_size, NULL); @@ -980,7 +1012,7 @@ char* save_format_value(int index) { } free(value_size); } - if (main_config.swap[index]==0) { + if (main_config.swap[index]>=0) { char* value_size = philos_format_cfg_str_size_memory("MemorySwapMax=", main_config.swap[index],main_config.swap_size[index]); if (!strstr(value_size,"-")) { value = yon_char_unite(value ,split_simvol, value_size, NULL); @@ -1042,13 +1074,13 @@ int template_format_str_save(dictionary* load_cfg, char* source_set_cmd, char* s char* cmd_remove = template_format_str_remove_save(load_cfg, source_remove_cmd); char* cmd_set = template_format_str_set_save(load_cfg, source_set_cmd); if (cmd_set != NULL && cmd_remove != NULL) { - yon_config_save(yon_char_unite(cmd_set, "; " , cmd_remove, NULL)); + philos_config_save(yon_char_unite(cmd_set, "; " , cmd_remove, NULL)); } else if (cmd_remove != NULL) { - yon_config_save(cmd_remove); + philos_config_save(cmd_remove); } else if (cmd_set != NULL) { - yon_config_save(cmd_set); + philos_config_save(cmd_set); } else { return 0; -- 2.35.1 From d2377257f38cb4752301ce9b1bf2afa867ddb877 Mon Sep 17 00:00:00 2001 From: Igor Belitskiy Date: Wed, 28 Jun 2023 12:07:49 +0600 Subject: [PATCH 51/91] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB=20=D1=83=D1=82=D0=B5=D1=87=D0=BA=D1=83=20=D0=BF?= =?UTF-8?q?=D0=B0=D0=BC=D1=8F=D1=82=D0=B8=20=D0=BF=D1=80=D0=B8=20=D0=B7?= =?UTF-8?q?=D0=B0=D0=B3=D1=80=D1=83=D0=B7=D0=BA=D0=B5=20=D1=83=D1=81=D1=82?= =?UTF-8?q?=D1=80=D0=BE=D0=B9=D1=81=D1=82=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/ubl-settings-resourcequota.c | 61 +++++++++++++---------------- 1 file changed, 27 insertions(+), 34 deletions(-) diff --git a/source/ubl-settings-resourcequota.c b/source/ubl-settings-resourcequota.c index 0da421d..f8c6357 100644 --- a/source/ubl-settings-resourcequota.c +++ b/source/ubl-settings-resourcequota.c @@ -351,6 +351,32 @@ void init_cfg_array(int index) { philos_set_pow_size_memory("-", &main_config.swap_size, index, array_size_pow); set_size_memory_integer("-",&main_config.swap , index); + + int* array_limit = NULL; + char** array_disk = NULL; + int index_n2 = 0; + array_limit = philos_int_append(array_limit, &index_n2, -3); + index_n2--; + array_disk = yon_char_parsed_append(array_disk, &index_n2, "-"); + array_limit = philos_int_append(array_limit, &index_n2, -2); + index_n2--; + array_disk = yon_char_parsed_append(array_disk, &index_n2, NULL); + main_config.i_o_limit_read = yon_remalloc(main_config.i_o_limit_read, (index + 1) * sizeof(int*)); + main_config.i_o_limit_read_size = yon_remalloc(main_config.i_o_limit_read_size, (index + 1) * sizeof(int*)); + main_config.disk = yon_remalloc(main_config.disk, (index + 1) * sizeof(char**)); + main_config.i_o_limit_write = yon_remalloc(main_config.i_o_limit_write, (index + 1) * sizeof(int*)); + main_config.i_o_limit_write_size = yon_remalloc(main_config.i_o_limit_write_size, (index + 1) * sizeof(int*)); + main_config.disk = yon_remalloc(main_config.disk, (index + 1) * sizeof(char**)); + + philos_array_int_copy(&main_config.i_o_limit_read[index], &array_limit); + philos_array_int_copy(&main_config.i_o_limit_read_size[index], &array_limit); + yon_char_parsed_copy(&main_config.disk[index], &array_disk); + + philos_array_int_copy(&main_config.i_o_limit_write[main_config.size_tree_view], &array_limit); + philos_array_int_copy(&main_config.i_o_limit_write_size[main_config.size_tree_view], &array_limit); + yon_char_parsed_copy(&main_config.disk[main_config.size_tree_view], &array_disk); + philos_free_int_array(&array_limit, 1); + philos_free_string_array(&array_disk, 1); } void str_split_key(char* source_value, int index) { @@ -426,41 +452,9 @@ void str_split_value(char* values, int index) { if (yon_char_find_count(key, "IOReadBandwidthMax") != 0) { get_param_io_limit(arr_values, index_1, size,index, "IOReadBandwidthMax"); } - else { - int* array_limit = NULL; - char** array_disk = NULL; - int index11 = 0; - array_limit = philos_int_append(array_limit, &index11, -2); - index11--; - array_disk = yon_char_parsed_append(array_disk, &index11, NULL); - main_config.i_o_limit_read = yon_remalloc(main_config.i_o_limit_read, (main_config.size_tree_view + 1) * sizeof(int*)); - main_config.i_o_limit_read_size = yon_remalloc(main_config.i_o_limit_read_size, (main_config.size_tree_view + 1) * sizeof(int*)); - main_config.disk = yon_remalloc(main_config.disk, (main_config.size_tree_view + 1) * sizeof(char**)); - philos_array_int_copy(&main_config.i_o_limit_read[main_config.size_tree_view], &array_limit); - philos_array_int_copy(&main_config.i_o_limit_read_size[main_config.size_tree_view], &array_limit); - yon_char_parsed_copy(&main_config.disk[main_config.size_tree_view], &array_disk); - philos_free_int_array(&array_limit, 1); - philos_free_string_array(&array_disk, 1); - } if (yon_char_find_count(key, "IOWriteBandwidthMax") != 0) { get_param_io_limit(arr_values, index_1, size,index, "IOWriteBandwidthMax"); } - else { - int* array_limit = NULL; - char** array_disk = NULL; - int index11 = 0; - array_limit = philos_int_append(array_limit, &index11, -2); - index11--; - array_disk = yon_char_parsed_append(array_disk, &index11, NULL); - main_config.i_o_limit_write = yon_remalloc(main_config.i_o_limit_write, (main_config.size_tree_view + 1) * sizeof(int*)); - main_config.i_o_limit_write_size = yon_remalloc(main_config.i_o_limit_write_size, (main_config.size_tree_view + 1) * sizeof(int*)); - main_config.disk = yon_remalloc(main_config.disk, (main_config.size_tree_view + 1) * sizeof(char**)); - philos_array_int_copy(&main_config.i_o_limit_write[main_config.size_tree_view], &array_limit); - philos_array_int_copy(&main_config.i_o_limit_write_size[main_config.size_tree_view], &array_limit); - yon_char_parsed_copy(&main_config.disk[main_config.size_tree_view], &array_disk); - philos_free_int_array(&array_limit, 1); - philos_free_string_array(&array_disk, 1); - } if (yon_char_find_count(key, "MemoryHigh") != 0) { philos_set_pow_size_memory(yon_char_new(value), &main_config.soft_raw_limit_size, index, array_size_pow); set_size_memory_integer(yon_char_new(value), &main_config.soft_raw_limit, index); @@ -506,7 +500,6 @@ void get_param_io_limit(char** arr_values, int index_start, int size, int index_ strstr(arr_values[i], key_find)==NULL && flag_parsed == 1) { // Найден ключ в массив, но не тот flag_exit = 1; - } free(value); } @@ -697,7 +690,7 @@ char* format_io_limit_in_tree_view(config_str* disk, int** i_o_limit, int** i_o_ } else if (strstr(disk[index][index_to_n2], "-")){ - str = yon_char_unite(str, ",", NULL); + // str = yon_char_unite(str, ",", NULL); } else { if (!strstr(str, "-")) { -- 2.35.1 From 8618ca96f1e33352802ebcc90c59fa29b5004267 Mon Sep 17 00:00:00 2001 From: Igor Belitskiy Date: Wed, 28 Jun 2023 16:27:47 +0600 Subject: [PATCH 52/91] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=20=D0=B1=D0=B0=D0=B3=20=D1=81=20=D0=B3=D0=B5?= =?UTF-8?q?=D0=BD=D0=B5=D1=80=D0=B0=D1=86=D0=B8=D0=B5=D0=B9=20=D0=BA=D0=BE?= =?UTF-8?q?=D0=BC=D0=B0=D0=BD=D0=B4=D1=8B=20=D0=BF=D1=80=D0=B8=20=D1=80?= =?UTF-8?q?=D0=B5=D0=B4=D0=B0=D0=BA=D1=82=D0=B8=D1=80=D0=BE=D0=B2=D0=B0?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/philos_utils.c | 75 ++++++++++++++++----------- source/ubl-settings-resourcequota.c | 33 ++++++------ source/ubl-settings-resourcequota.h | 8 +-- source/view_add.c | 17 +++---- source/view_edit.c | 78 +++++++++++++++++++---------- source/view_edit.h | 2 +- 6 files changed, 124 insertions(+), 89 deletions(-) diff --git a/source/philos_utils.c b/source/philos_utils.c index fd5e27d..575e272 100644 --- a/source/philos_utils.c +++ b/source/philos_utils.c @@ -270,7 +270,6 @@ char* philos_format_cfg_str_size_memory(char* str_key, int value, int pow_size_m return yon_char_new("-"); } char* str_value = yon_char_from_int(value); - str_value = yon_char_divide_search(str_value, " ", -1); if (pow_size_memory==0) { return yon_char_unite(str_key, str_value, "K" ,NULL); } @@ -356,33 +355,36 @@ char* philos_pard_array_add_cmd(char* cmd, temp_config* _config, char* key, int* char* split_simvol = g_malloc0(sizeof(char)*2); int flag_format = 0; char* cmd_old = yon_char_new(cmd); + char* cmd_new = ""; if (_config->disk && _config->size && array_io && array_io_pow_size) { int index_find = 0; for (int index = 0; index < _config->size; index++) { - if (index==0) { - if (strlen(cmd)>1) { - cmd = yon_char_unite(cmd, ",", key, NULL); - } - else { - cmd = yon_char_unite(cmd, key, NULL); - } - - } if (array_io_pow_size[index] != -1 && array_io[index]!=-2 && array_io[index]!=-1) { char* num_and_pow_size = philos_format_cfg_str_size_memory(" ", array_io[index], array_io_pow_size[index]); - cmd = yon_char_unite(cmd, + if (!strstr(num_and_pow_size, "-")) { + cmd_new = yon_char_unite(cmd_new, split_simvol, _config->disk[index], num_and_pow_size, NULL); - split_simvol[0] = ','; - split_simvol[1] = '\0'; - flag_format = 1; + split_simvol[0] = ','; + split_simvol[1] = '\0'; + flag_format = 1; + } free(num_and_pow_size); } } } free(split_simvol); if (flag_format) { + if (strlen(cmd_new)>2) { + if (strlen(cmd_old) > 3) { + cmd = yon_char_unite(cmd_old, ",", key, cmd_new, NULL); + } + else { + cmd = yon_char_unite(key, cmd_new, NULL); + } + + } return cmd; } else { @@ -459,15 +461,20 @@ void philos_temp_del_disk(temp_set_window *widgets, temp_config* _config) { if (philos_check_activ_disk(widgets, _config) == 0) { return; } - if (_config->disk && _config->size) { + if (_config->size) { int index_find = -1; - for (int index = 0; index < _config->size; index++) { - char* disk_cfg = _config->disk[index]; - if (strstr(disk_cfg, disk) != NULL) { - index_find = index; - break; + if (_config->disk) { + for (int index = 0; index < _config->size; index++) { + char* disk_cfg = _config->disk[index]; + if (disk_cfg) { + if (strstr(disk_cfg, disk) != NULL) { + index_find = index; + break; + } + } } } + if ((bool_read == 0 && bool_write == 0 && index_find != -1)) { _config->disk = yon_char_parsed_shrink(_config->disk,&_config->size, index_find); _config->size++; @@ -505,13 +512,18 @@ void philos_update_device_to_entry(temp_set_window *widgets, temp_config* _confi disk = yon_char_divide_search(disk, " ", -1); if (disk_id != -1) { int index_find = -1; - for (int index = 0; index < _config->size; index++) { + if (_config->disk) { + for (int index = 0; index < _config->size; index++) { char* disk_cfg = _config->disk[index]; - if (strstr(disk_cfg, disk) != NULL) { - index_find = index; - break; + if (disk_cfg) { + if (strstr(disk_cfg, disk) != NULL) { + index_find = index; + break; + } + } } } + if (index_find != -1) { if (flag_check_array==0) { if (_config->i_o_limit_read[index_find]==-2 || _config->i_o_limit_read[index_find]==-1) { @@ -574,13 +586,18 @@ void philos_temp_add_disk(temp_set_window *widgets, temp_config* _config) { int bool_write = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->chbTempWrite)); if (disk_id >= 0 && _config->size !=0) { int index_find = -1; - for (int index = 0; index < _config->size; index++) { - char* disk_cfg = _config->disk[index]; - if (strstr(disk_cfg, disk) != NULL) { - index_find = index; - break; + if (_config->disk){ + for (int index = 0; index < _config->size; index++) { + char* disk_cfg = _config->disk[index]; + if (disk_cfg) { + if (strstr(disk_cfg, disk) != NULL) { + index_find = index; + break; + } + } } } + if (index_find == -1) { // Добавление _config->disk = yon_char_parsed_append(_config->disk,&_config->size, disk); diff --git a/source/ubl-settings-resourcequota.c b/source/ubl-settings-resourcequota.c index f8c6357..17553d6 100644 --- a/source/ubl-settings-resourcequota.c +++ b/source/ubl-settings-resourcequota.c @@ -262,13 +262,13 @@ void main_update_information() { void load_system_cfg() { main_config.flag_load = 0; - template_load_cfg(CMD_LOAD_SYSTEM, main_config.load_system_cfg); + template_load_cfg(CMD_LOAD_SYSTEM); yon_ubl_status_box_render(LOCAL_LOAD_SUCCESS, BACKGROUND_IMAGE_SUCCESS_TYPE); } void load_global_cfg() { main_config.flag_load = 1; - template_load_cfg(CMD_LOAD_GLOBAL, main_config.load_global_cfg); + template_load_cfg(CMD_LOAD_GLOBAL); yon_ubl_status_box_render(GLOBAL_LOAD_SUCCESS,BACKGROUND_IMAGE_SUCCESS_TYPE); } @@ -304,7 +304,7 @@ void clear_array() { main_config.size_tree_view = 0; } -void template_load_cfg(char* cmd, dictionary* load_cfg) { +void template_load_cfg(char* cmd) { clear_array(); int size = 0; char** cfg = yon_config_load(cmd, &size); @@ -318,7 +318,6 @@ void template_load_cfg(char* cmd, dictionary* load_cfg) { size_t length = strlen(str_key_value); 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); str_split_key(str_key, main_config.size_tree_view); main_config.size_tree_view++; @@ -939,10 +938,10 @@ void tree_view_del_line() { void wrapper_all_save() { int flag_mess_save = 0; if (main_config.flag_load == 0) { - flag_mess_save = template_format_str_save(main_config.load_system_cfg, CMD_ALL_SAVE, CMD_ALL_REMOVE); + flag_mess_save = template_format_str_save(CMD_ALL_SAVE, CMD_ALL_REMOVE); } else { - flag_mess_save = template_format_str_save(main_config.load_global_cfg, CMD_ALL_SAVE, CMD_ALL_REMOVE); + flag_mess_save = template_format_str_save(CMD_ALL_SAVE, CMD_ALL_REMOVE); } if (flag_mess_save) { yon_ubl_status_box_render(GLOBAL_LOCAL_SAVE_SUCCESS,BACKGROUND_IMAGE_SUCCESS_TYPE); @@ -954,7 +953,7 @@ void wrapper_all_save() { } void wrapper_global_save() { - if (template_format_str_save(main_config.load_global_cfg, CMD_SAVE_GLOBAL, CMD_REMOVE_GLOBAL)) { + if (template_format_str_save(CMD_SAVE_GLOBAL, CMD_REMOVE_GLOBAL)) { yon_ubl_status_box_render(GLOBAL_LOAD_SUCCESS,BACKGROUND_IMAGE_SUCCESS_TYPE); } else { @@ -964,7 +963,7 @@ void wrapper_global_save() { } void wrapper_system_save() { - if (template_format_str_save(main_config.load_system_cfg, CMD_SAVE_SYSTEM, CMD_REMOVE_SYSTEM)) { + if (template_format_str_save(CMD_SAVE_SYSTEM, CMD_REMOVE_SYSTEM)) { yon_ubl_status_box_render(LOCAL_SAVE_SUCCESS,BACKGROUND_IMAGE_SUCCESS_TYPE); } else { @@ -1054,7 +1053,7 @@ char* add_io_str_format_ubconfig(char* cmd_io, char* key, int** i_o_limit, int } -int check_save(dictionary* load_cfg) { +int check_save() { if (main_config.flag_set_data == 1) { return 0; } @@ -1063,9 +1062,9 @@ int check_save(dictionary* load_cfg) { } return 0; } -int template_format_str_save(dictionary* load_cfg, char* source_set_cmd, char* source_remove_cmd) { - char* cmd_remove = template_format_str_remove_save(load_cfg, source_remove_cmd); - char* cmd_set = template_format_str_set_save(load_cfg, source_set_cmd); +int template_format_str_save(char* source_set_cmd, char* source_remove_cmd) { + char* cmd_remove = template_format_str_remove_save(source_remove_cmd); + char* cmd_set = template_format_str_set_save(source_set_cmd); if (cmd_set != NULL && cmd_remove != NULL) { philos_config_save(yon_char_unite(cmd_set, "; " , cmd_remove, NULL)); } @@ -1090,7 +1089,7 @@ int template_format_str_save(dictionary* load_cfg, char* source_set_cmd, char* s return 1; } -char* template_format_str_set_save(dictionary* load_cfg, char* source_set_cmd) { +char* template_format_str_set_save(char* source_set_cmd) { char* cmd = yon_char_new(source_set_cmd); int flag_save = 0; for (size_t index = 0; index < main_config.size_tree_view; index++) { @@ -1110,7 +1109,7 @@ char* template_format_str_set_save(dictionary* load_cfg, char* source_set_cmd) { } } - if (flag_save && check_save(load_cfg)== 0) { + if (flag_save && check_save()== 0) { puts(cmd); return cmd; } @@ -1119,7 +1118,7 @@ char* template_format_str_set_save(dictionary* load_cfg, char* source_set_cmd) { } -char* template_format_str_remove_save(dictionary* load_cfg, char* source_remove_cmd) { +char* template_format_str_remove_save(char* source_remove_cmd) { char* cmd = yon_char_new(source_remove_cmd); int flag_save = 0; if (main_config.size_array_del_line == 0) { @@ -1267,12 +1266,8 @@ int main(int argc, char *argv[]){ gtk_init(&argc,&argv); device_disk_parsed(); main_window *widgets = setup_window(); - main_config.load_global_cfg = yon_dictionary_create_empty(); - main_config.load_system_cfg = yon_dictionary_create_empty(); main_update_information(); filters_init_flag(); - filters_setup_window(glade_path); - add_setup_window(glade_path); main_localization(widgets); tree_view_select(NULL, widgets); diff --git a/source/ubl-settings-resourcequota.h b/source/ubl-settings-resourcequota.h index 2638dd7..8929df1 100644 --- a/source/ubl-settings-resourcequota.h +++ b/source/ubl-settings-resourcequota.h @@ -201,7 +201,8 @@ void tree_view_del_line(); void main_fill_tree_view_after_remove(); void load_system_cfg(); void load_global_cfg(); -void template_load_cfg(char *cmd, dictionary *load_cfg); +void template_load_cfg(char *cmd); +int template_format_str_save(char* source_set_cmd, char* source_remove_cmd); void str_split_value(char *values, int index); void set_size_memory_integer(char* str_find, int** array_data, int index); void set_size_memory_integer_char(char* str_find, char*** array_data, int index); @@ -214,9 +215,8 @@ void wrapper_template_save(char *check_flag); void wrapper_system_save(); void wrapper_global_save(); 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* template_format_str_remove_save(char* source_remove_cmd); +char* template_format_str_set_save(char* source_set_cmd); 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* add_io_str_format_ubconfig(char* cmd_io, char* key, int** i_o_limit, int** i_o_limit_size, char*** disk_read, int index); diff --git a/source/view_add.c b/source/view_add.c index 66d5774..4c142ef 100644 --- a/source/view_add.c +++ b/source/view_add.c @@ -71,11 +71,10 @@ void add_init_windows() { } void event_check_io_device() { - philos_set_active_widgets_device_io(add_widgets->cbtTempDevice,add_widgets->chbTempWrite, add_widgets->spinTempWrite, add_widgets->cbtTempWrite); - philos_set_active_widgets_device_io(add_widgets->cbtTempDevice,add_widgets->chbTempRead, add_widgets->spinTempRead, add_widgets->cbtTempRead); + add_init_windows(); philos_temp_add_disk(add_widgets, &obj_add_config); philos_temp_del_disk(add_widgets, &obj_add_config); - add_init_windows(); + philos_temp_generate_cmd(add_widgets, &obj_add_config); } void combo_box_device() { @@ -108,10 +107,10 @@ void add_event(temp_set_window *widgets) { g_signal_connect(G_OBJECT(widgets->cbxTempQuotaObj),"changed",G_CALLBACK(add_update_combo_box), NULL); g_signal_connect(G_OBJECT(widgets->cbxTempQuotaLevel2),"changed",G_CALLBACK(add_init_windows), NULL); - g_signal_connect(G_OBJECT(widgets->spiSevereRestrictionTemp),"changed",G_CALLBACK(add_init_windows), NULL); - g_signal_connect(G_OBJECT(widgets->spinSevereRestrictionTemp),"changed",G_CALLBACK(add_init_windows), NULL); - g_signal_connect(G_OBJECT(widgets->spinPaddingFLTemp),"changed",G_CALLBACK(add_init_windows), NULL); - g_signal_connect(G_OBJECT(widgets->spinCPULimitTemp),"changed",G_CALLBACK(add_init_windows), NULL); + g_signal_connect(G_OBJECT(widgets->spiSevereRestrictionTemp),"value-changed",G_CALLBACK(add_init_windows), NULL); + g_signal_connect(G_OBJECT(widgets->spinSevereRestrictionTemp),"value-changed",G_CALLBACK(add_init_windows), NULL); + g_signal_connect(G_OBJECT(widgets->spinPaddingFLTemp),"value-changed",G_CALLBACK(add_init_windows), NULL); + g_signal_connect(G_OBJECT(widgets->spinCPULimitTemp),"value-changed",G_CALLBACK(add_init_windows), NULL); g_signal_connect(G_OBJECT(widgets->cmSevereRestrictionTemp),"changed",G_CALLBACK(add_init_windows), NULL); @@ -121,8 +120,8 @@ void add_event(temp_set_window *widgets) { g_signal_connect(G_OBJECT(widgets->cbtTempDevice),"changed",G_CALLBACK(combo_box_device), NULL); g_signal_connect(G_OBJECT(widgets->cbtTempRead),"changed",G_CALLBACK(event_check_io_device), NULL); g_signal_connect(G_OBJECT(widgets->cbtTempWrite),"changed",G_CALLBACK(event_check_io_device), NULL); - g_signal_connect(G_OBJECT(widgets->spinTempRead),"changed",G_CALLBACK(event_check_io_device), NULL); - g_signal_connect(G_OBJECT(widgets->spinTempWrite),"changed",G_CALLBACK(event_check_io_device), NULL); + g_signal_connect(G_OBJECT(widgets->spinTempRead),"value-changed",G_CALLBACK(event_check_io_device), NULL); + g_signal_connect(G_OBJECT(widgets->spinTempWrite),"value-changed",G_CALLBACK(event_check_io_device), NULL); g_signal_connect(G_OBJECT(widgets->chbTempRead), "toggled", G_CALLBACK(event_check_io_device), NULL); g_signal_connect(G_OBJECT(widgets->chbTempWrite), "toggled", G_CALLBACK(event_check_io_device), NULL); } diff --git a/source/view_edit.c b/source/view_edit.c index 9cd89f3..5086a1b 100644 --- a/source/view_edit.c +++ b/source/view_edit.c @@ -57,12 +57,12 @@ void edit_event(temp_set_window *widgets) { g_signal_connect(G_OBJECT(widgets->chbTempRead), "toggled", G_CALLBACK(edit_init_windows), NULL); g_signal_connect(G_OBJECT(widgets->chbTempWrite), "toggled", G_CALLBACK(edit_init_windows), NULL); - g_signal_connect(G_OBJECT(widgets->spiSevereRestrictionTemp),"changed",G_CALLBACK(edit_init_windows), NULL); - g_signal_connect(G_OBJECT(widgets->spinSevereRestrictionTemp),"changed",G_CALLBACK(edit_init_windows), NULL); - g_signal_connect(G_OBJECT(widgets->spinPaddingFLTemp),"changed",G_CALLBACK(edit_init_windows), NULL); - g_signal_connect(G_OBJECT(widgets->spinCPULimitTemp),"changed",G_CALLBACK(edit_init_windows), NULL); - g_signal_connect(G_OBJECT(widgets->spinTempRead),"changed",G_CALLBACK(wrapper_edit_init_windows_size_memory), NULL); - g_signal_connect(G_OBJECT(widgets->spinTempWrite),"changed",G_CALLBACK(wrapper_edit_init_windows_size_memory), NULL); + g_signal_connect(G_OBJECT(widgets->spiSevereRestrictionTemp),"value-changed",G_CALLBACK(edit_init_windows), NULL); + g_signal_connect(G_OBJECT(widgets->spinSevereRestrictionTemp),"value-changed",G_CALLBACK(edit_init_windows), NULL); + g_signal_connect(G_OBJECT(widgets->spinPaddingFLTemp),"value-changed",G_CALLBACK(edit_init_windows), NULL); + g_signal_connect(G_OBJECT(widgets->spinCPULimitTemp),"value-changed",G_CALLBACK(edit_init_windows), NULL); + g_signal_connect(G_OBJECT(widgets->spinTempRead),"value-changed",G_CALLBACK(wrapper_edit_init_windows_size_memory), NULL); + g_signal_connect(G_OBJECT(widgets->spinTempWrite),"value-changed",G_CALLBACK(wrapper_edit_init_windows_size_memory), NULL); g_signal_connect(G_OBJECT(widgets->cmSevereRestrictionTemp),"changed",G_CALLBACK(wrapper_edit_init_windows_size_memory), widgets->spiSevereRestrictionTemp); g_signal_connect(G_OBJECT(widgets->cmbSevereRestrictionTemp),"changed",G_CALLBACK(wrapper_edit_init_windows_size_memory), widgets->spinSevereRestrictionTemp); g_signal_connect(G_OBJECT(widgets->cmbPaddingFLTemp),"changed",G_CALLBACK(wrapper_edit_init_windows_size_memory), widgets->spinPaddingFLTemp); @@ -98,16 +98,11 @@ void edit_show(GtkWidget *self, char* glade_path) { } } -void wrapper_edit_init_windows_size_memory(GtkWidget *spin) { - if (spin != NULL) { - // gtk_spin_button_set_digits(GTK_SPIN_BUTTON(spin), 0); - } - philos_set_active_widgets_device_io(edit_widgets->cbtTempDevice,edit_widgets->chbTempWrite, edit_widgets->spinTempWrite, edit_widgets->cbtTempWrite); - philos_set_active_widgets_device_io(edit_widgets->cbtTempDevice,edit_widgets->chbTempRead, edit_widgets->spinTempRead, edit_widgets->cbtTempRead); - +void wrapper_edit_init_windows_size_memory() { philos_temp_add_disk(edit_widgets, &obj_edit_config); philos_temp_del_disk(edit_widgets, &obj_edit_config); edit_init_windows(); + philos_temp_generate_cmd(edit_widgets, &obj_edit_config); } void edit_init_windows() { @@ -202,6 +197,10 @@ char*** edit_get_select_device() { obj_edit_config.disk = yon_char_parsed_append(obj_edit_config.disk,&index, "-"); obj_edit_config.disk = yon_char_parsed_append(obj_edit_config.disk,&index, NULL); } + if (index == 0) { + obj_edit_config.disk = yon_char_parsed_append(obj_edit_config.disk,&obj_edit_config.size, NULL); + obj_edit_config.size--; + } return &obj_edit_config.disk; } int edit_get_soft() { @@ -230,11 +229,28 @@ void edit_set_select_device(char*** str_value) { if ((*str_value)[0] == NULL) { return; } - yon_char_parsed_copy(&obj_edit_config.disk, str_value); - int index = yon_gtk_combo_box_text_find(edit_widgets->cbtTempDevice, (*str_value)[0]); - gtk_combo_box_set_active(GTK_COMBO_BOX(edit_widgets->cbtTempDevice), index); - + if (str_value) { + if ((*str_value)) { + if ((*str_value)[0] != NULL && strstr((*str_value)[0], "-") == NULL) { + yon_char_parsed_copy(&obj_edit_config.disk, str_value); + int index = yon_gtk_combo_box_text_find(edit_widgets->cbtTempDevice, (*str_value)[0]); + gtk_combo_box_set_active(GTK_COMBO_BOX(edit_widgets->cbtTempDevice), index); + } + else { + obj_edit_config.size = 0; + } + } + else { + obj_edit_config.size = 0; + } + } + else { + obj_edit_config.size = 0; + } + + + } void edit_set_read_device(int* str_value, int* pow_mem) { @@ -244,13 +260,17 @@ void edit_set_read_device(int* str_value, int* pow_mem) { if (str_value[0] == -2 || pow_mem[0] == -2) { return; } - edit_temp_set(str_value[0],pow_mem[0], edit_widgets->chbTempRead, + if (str_value && pow_mem) { + if (str_value[0] != -2 && pow_mem[0] != -2 && pow_mem[0] != -3) { + philos_array_int_copy(&obj_edit_config.i_o_limit_read, &str_value); + philos_array_int_copy(&obj_edit_config.i_o_limit_read_size, &pow_mem); + edit_temp_set(str_value[0],pow_mem[0], edit_widgets->chbTempRead, edit_widgets->spinTempRead, edit_widgets->cbtTempRead); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(edit_widgets->chbTempRead), 1); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(edit_widgets->chbTempWrite), 1); - philos_array_int_copy(&obj_edit_config.i_o_limit_read, &str_value); - philos_array_int_copy(&obj_edit_config.i_o_limit_read_size, &pow_mem); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(edit_widgets->chbTempRead), 1); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(edit_widgets->chbTempWrite), 1); + } + } } void edit_set_write_device(int* str_value, int* pow_mem) { if (str_value == NULL || pow_mem == NULL) { @@ -262,11 +282,15 @@ void edit_set_write_device(int* str_value, int* pow_mem) { else { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(edit_widgets->chbTempWrite), 1); } - edit_temp_set(str_value[0],pow_mem[0], edit_widgets->chbTempWrite, - edit_widgets->spinTempWrite, - edit_widgets->cbtTempWrite); - philos_array_int_copy(&obj_edit_config.i_o_limit_write, &str_value); - philos_array_int_copy(&obj_edit_config.i_o_limit_write_size, &pow_mem); + if (str_value && pow_mem) { + if (str_value[0] != -2 && pow_mem[0] != -2 && pow_mem[0] != -3) { + edit_temp_set(str_value[0],pow_mem[0], edit_widgets->chbTempWrite, + edit_widgets->spinTempWrite, + edit_widgets->cbtTempWrite); + philos_array_int_copy(&obj_edit_config.i_o_limit_write, &str_value); + philos_array_int_copy(&obj_edit_config.i_o_limit_write_size, &pow_mem); + } + } } void edit_set_size_arrays(size_t size_array) { obj_edit_config.size = size_array; diff --git a/source/view_edit.h b/source/view_edit.h index c3a43da..174638b 100644 --- a/source/view_edit.h +++ b/source/view_edit.h @@ -28,7 +28,7 @@ void combo_box_device_edit(); void edit_show(GtkWidget *self, char* glade_path); void edit_destroy(GtkWidget *self); void edit_init_windows(); -void wrapper_edit_init_windows_size_memory(GtkWidget *spin); +void wrapper_edit_init_windows_size_memory(); void edit_set_active_widgets(GtkWidget *check, GtkWidget *spin, GtkWidget *combo, int flag_cpu, char* cmd); char*** edit_get_select_device(); int** edit_get_read_device(); -- 2.35.1 From bde9d0a5e4e102b4c107ecfe8fdf00b2f1086d12 Mon Sep 17 00:00:00 2001 From: Igor Belitskiy Date: Wed, 28 Jun 2023 17:32:12 +0600 Subject: [PATCH 53/91] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB=20=D0=B2=D1=81=D0=B5=20=D0=B1=D0=B0=D0=B3=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/philos_utils.c | 29 ++++++++--------- source/ubl-settings-resourcequota.c | 17 ---------- source/ubl-settings-resourcequota.h | 8 +---- source/view_add.c | 1 - source/view_edit.c | 48 +++++++---------------------- 5 files changed, 25 insertions(+), 78 deletions(-) diff --git a/source/philos_utils.c b/source/philos_utils.c index 575e272..e34f4e8 100644 --- a/source/philos_utils.c +++ b/source/philos_utils.c @@ -142,7 +142,7 @@ config_str philos_list_group(int* size) { unsigned short uid_max = philos_read_uid_min_max(file_source_login_min_max, str_uid_max); config_str str_users = malloc(1); while (1) { - errno = 0; // so we can distinguish errors from no more entries + errno = 0; struct passwd* entry = getpwent(); if (!entry) { if (errno) { @@ -211,7 +211,7 @@ config_str philos_list_user(int* size) { unsigned short uid_max = philos_read_uid_min_max(file_source_login_min_max, str_uid_max); config_str str_users = malloc(1); while (1) { - errno = 0; // so we can distinguish errors from no more entries + errno = 0; struct passwd* entry = getpwent(); if (!entry) { if (errno) { @@ -219,9 +219,7 @@ config_str philos_list_user(int* size) { } break; } - //if ((entry->pw_uid >= uid_min && entry->pw_uid < uid_max) || entry->pw_uid == 0) { str_users = yon_char_parsed_append(str_users, size, entry->pw_name); - //} } endpwent(); return str_users; @@ -261,7 +259,6 @@ char* philos_str_remove(char *str, const char *sub) { void philos_split_size_memory(char* str_value, int* size, char* pow_memory) { - // pow_memory = yon_char_new(str_value); (*size) = atoi(yon_char_divide_search(pow_memory, " ", -1)); } @@ -359,7 +356,7 @@ char* philos_pard_array_add_cmd(char* cmd, temp_config* _config, char* key, int* if (_config->disk && _config->size && array_io && array_io_pow_size) { int index_find = 0; for (int index = 0; index < _config->size; index++) { - if (array_io_pow_size[index] != -1 && array_io[index]!=-2 && array_io[index]!=-1) { + if (array_io_pow_size[index] >= 0 && array_io[index]>= 0) { char* num_and_pow_size = philos_format_cfg_str_size_memory(" ", array_io[index], array_io_pow_size[index]); if (!strstr(num_and_pow_size, "-")) { cmd_new = yon_char_unite(cmd_new, @@ -504,6 +501,7 @@ void philos_temp_config_init(temp_config* _config) { _config->i_o_limit_write_size = NULL; _config->size = 0; } + // flag_check_array = 0 READ // flag_check_array = 1 WRITE void philos_update_device_to_entry(temp_set_window *widgets, temp_config* _config, int flag_check_array) { @@ -514,19 +512,19 @@ void philos_update_device_to_entry(temp_set_window *widgets, temp_config* _confi int index_find = -1; if (_config->disk) { for (int index = 0; index < _config->size; index++) { - char* disk_cfg = _config->disk[index]; - if (disk_cfg) { - if (strstr(disk_cfg, disk) != NULL) { - index_find = index; - break; + char* disk_cfg = _config->disk[index]; + if (disk_cfg) { + if (strstr(disk_cfg, disk) != NULL) { + index_find = index; + break; + } } } - } } if (index_find != -1) { if (flag_check_array==0) { - if (_config->i_o_limit_read[index_find]==-2 || _config->i_o_limit_read[index_find]==-1) { + if (_config->i_o_limit_read[index_find]<0 || _config->i_o_limit_read_size[index_find]<0) { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widgets->chbTempRead), 0); gtk_spin_button_set_value(GTK_SPIN_BUTTON(widgets->spinTempRead), 0); gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->cbtTempRead), 0); @@ -539,7 +537,7 @@ void philos_update_device_to_entry(temp_set_window *widgets, temp_config* _confi } } else if (flag_check_array==1) { - if (_config->i_o_limit_write[index_find]==-2 || _config->i_o_limit_write[index_find]==-1) { + if (_config->i_o_limit_write[index_find]<0 || _config->i_o_limit_write_size[index_find]<0) { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widgets->chbTempWrite), 0); gtk_spin_button_set_value(GTK_SPIN_BUTTON(widgets->spinTempWrite), 0); gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->cbtTempWrite), 0); @@ -631,7 +629,6 @@ void philos_temp_add_disk(temp_set_window *widgets, temp_config* _config) { } else { // Редактирование - //_config->disk[index_find] = yon_char_new(disk); if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->chbTempRead))) { _config->i_o_limit_read_size[index_find] =(int)gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->cbtTempRead)); _config->i_o_limit_read[index_find] = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(widgets->spinTempRead)); @@ -749,7 +746,7 @@ void philos_fill_combo_box_text(GtkWidget *cbt, config_str list_data, int size) gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(cbt), list_data[index]); } } -// Mem Size pow + void philos_set_spin_adjustment(GtkWidget *check, GtkWidget *spin, GtkWidget *combo, size_t value) { gboolean active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(check)); guint value_spin = gtk_spin_button_get_digits(GTK_SPIN_BUTTON(spin)); diff --git a/source/ubl-settings-resourcequota.c b/source/ubl-settings-resourcequota.c index 17553d6..43b4b6b 100644 --- a/source/ubl-settings-resourcequota.c +++ b/source/ubl-settings-resourcequota.c @@ -90,7 +90,6 @@ void on_about(){ GtkWidget *hideButtonBox=yon_gtk_builder_get_widget(builder,"buttonBoxHide"); gtk_about_dialog_set_version(GTK_ABOUT_DIALOG(window),version_application); gtk_about_dialog_set_website_label(GTK_ABOUT_DIALOG(window),PROJECT_HOME_LABEL); - // gtk_about_dialog_set_comments(GTK_ABOUT_DIALOG(window),TITLE_LABEL); gtk_label_set_text(GTK_LABEL(title),TITLE_LABEL); g_signal_connect(G_OBJECT(window),"activate-link",G_CALLBACK(on_link),NULL); gtk_widget_set_visible(hideButtonBox,0); @@ -256,7 +255,6 @@ void main_update_information() { gtk_combo_box_text_remove_all(GTK_COMBO_BOX_TEXT(widgets->cbtMainInfoLevel2)); philos_fill_combo_box_text(widgets->cbtMainInfoLevel2, fill_cmb_2, size); g_signal_connect(G_OBJECT(widgets->cbtMainInfoLevel2),"changed",G_CALLBACK(main_cbx_2_event), NULL); - // yon_terminal_integrated_launch(widgets->vteProcesses, cmd, NULL, NULL); } } @@ -331,8 +329,6 @@ void template_load_cfg(char* cmd) { } void init_cfg_array(int index) { - //main_config.disk = yon_char_parsed_append(main_config.disk, &index, "-"); - //index--; philos_set_pow_size_memory("-", &main_config.type_quota_size, index, array_size_pow); philos_set_size_memory_integer_char("-", &main_config.type_quota, index); @@ -688,9 +684,6 @@ char* format_io_limit_in_tree_view(config_str* disk, int** i_o_limit, int** i_o_ } } - else if (strstr(disk[index][index_to_n2], "-")){ - // str = yon_char_unite(str, ",", NULL); - } else { if (!strstr(str, "-")) { char* num_and_pow_size = philos_format_cfg_str_size_memory(" ", i_o_limit[index][index_to_n2], i_o_limit_size[index][index_to_n2]); @@ -786,7 +779,6 @@ void info_show(GtkWidget *self) { int index = atoi(str_iter); char* t_quota = main_config.type_quota[index]; if (yon_char_find_count(t_quota, "-") == 0) { - // TODO: add code } } gtk_notebook_set_current_page(GTK_NOTEBOOK(widgets->notebookMain), 3); @@ -818,14 +810,6 @@ void main_event(main_window *widgets) { g_signal_connect(G_OBJECT(widgets->SaveGlobalMenuItem), "activate", G_CALLBACK(wrapper_global_save), widgets); g_signal_connect(G_OBJECT(widgets->SaveLocalMenuItem), "activate", G_CALLBACK(wrapper_system_save), widgets); g_signal_connect(G_OBJECT(widgets->SaveMenuItem), "activate", G_CALLBACK(wrapper_all_save), widgets); -/* - g_signal_connect(G_OBJECT(widgets->LoadGlobalMenuItem),"activate",G_CALLBACK(),NULL); - g_signal_connect(G_OBJECT(widgets->LoadLocalMenuItem),"activate",G_CALLBACK(),NULL); - g_signal_connect(G_OBJECT(widgets->SaveMenuItem),"activate",G_CALLBACK(),NULL); - - g_signal_connect(G_OBJECT(widgets->SaveGlobalMenuItem),"activate",G_CALLBACK(),NULL); - g_signal_connect(G_OBJECT(widgets->SaveLocalMenuItem),"activate",G_CALLBACK(),NULL); -*/ } void wrapper_add_show(GtkWidget *self) { add_show(NULL, glade_path); @@ -1173,7 +1157,6 @@ void main_localization(main_window *widgets) { gtk_menu_item_set_label(GTK_MENU_ITEM(widgets->DocumentationMenuItem),DOCUMENTATION_LABEL); gtk_menu_item_set_label(GTK_MENU_ITEM(widgets->AboutMenuItem),ABOUT_LABEL); } -//functions void yon_load_proceed(char *command){ if (yon_config_load_register(command)) diff --git a/source/ubl-settings-resourcequota.h b/source/ubl-settings-resourcequota.h index 8929df1..9640965 100644 --- a/source/ubl-settings-resourcequota.h +++ b/source/ubl-settings-resourcequota.h @@ -96,14 +96,8 @@ typedef struct int** i_o_limit_write_size; int size_tree_view; - dictionary *load_global_cfg; - dictionary *load_system_cfg; - dictionary *save_cfg_gui; - int flag_set_data; - // flag_load | 0 system - // flag_load | 1 global - int flag_load; + int flag_load; // flag_load = 0 -> system // flag_load = 1 -> global } config; typedef struct diff --git a/source/view_add.c b/source/view_add.c index 4c142ef..3efd5f3 100644 --- a/source/view_add.c +++ b/source/view_add.c @@ -297,7 +297,6 @@ void add_update_combo_box() { if (menu_id >= 0) { gtk_combo_box_text_remove_all(GTK_COMBO_BOX_TEXT(add_widgets->cbxTempQuotaLevel2)); philos_fill_combo_box_text(add_widgets->cbxTempQuotaLevel2, fill_cmb_2, size); - // yon_terminal_integrated_launch(widgets->vteProcesses, cmd, NULL, NULL); } } diff --git a/source/view_edit.c b/source/view_edit.c index 5086a1b..21c733b 100644 --- a/source/view_edit.c +++ b/source/view_edit.c @@ -40,7 +40,6 @@ temp_set_window *edit_setup_window(char* glade_path){ edit_widgets->cbtTempWrite = yon_gtk_builder_get_widget(builder,"cbtEditWrite"); edit_widgets->entryTempCmd = yon_gtk_builder_get_widget(builder,"entryEditCmd"); device_fill_disk(edit_widgets->cbtTempDevice); - // edit_event(edit_widgets); edit_localization(edit_widgets); philos_temp_config_init(&obj_edit_config); } @@ -221,14 +220,7 @@ int edit_get_limit_swap() { return gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(edit_widgets->spinPaddingFLTemp)); } -// ================================================================= void edit_set_select_device(char*** str_value) { - if ((*str_value) == NULL) { - return; - } - if ((*str_value)[0] == NULL) { - return; - } if (str_value) { if ((*str_value)) { if ((*str_value)[0] != NULL && strstr((*str_value)[0], "-") == NULL) { @@ -243,54 +235,36 @@ void edit_set_select_device(char*** str_value) { else { obj_edit_config.size = 0; } - } else { obj_edit_config.size = 0; } - - - - } void edit_set_read_device(int* str_value, int* pow_mem) { - if (str_value == NULL || pow_mem == NULL) { - return; - } - if (str_value[0] == -2 || pow_mem[0] == -2) { - return; - } if (str_value && pow_mem) { - if (str_value[0] != -2 && pow_mem[0] != -2 && pow_mem[0] != -3) { - philos_array_int_copy(&obj_edit_config.i_o_limit_read, &str_value); - philos_array_int_copy(&obj_edit_config.i_o_limit_read_size, &pow_mem); + if (str_value[0] >=0 && pow_mem[0] >=0) { + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(edit_widgets->chbTempRead), 1); edit_temp_set(str_value[0],pow_mem[0], edit_widgets->chbTempRead, edit_widgets->spinTempRead, edit_widgets->cbtTempRead); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(edit_widgets->chbTempRead), 1); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(edit_widgets->chbTempWrite), 1); } + philos_array_int_copy(&obj_edit_config.i_o_limit_read, &str_value); + philos_array_int_copy(&obj_edit_config.i_o_limit_read_size, &pow_mem); } } void edit_set_write_device(int* str_value, int* pow_mem) { - if (str_value == NULL || pow_mem == NULL) { - return; - } - if (str_value[0] == -2 || pow_mem[0] == -2) { - return; - } - else { - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(edit_widgets->chbTempWrite), 1); - } if (str_value && pow_mem) { - if (str_value[0] != -2 && pow_mem[0] != -2 && pow_mem[0] != -3) { + if (str_value[0] >=0 && pow_mem[0] >=0) { + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(edit_widgets->chbTempWrite), 1); edit_temp_set(str_value[0],pow_mem[0], edit_widgets->chbTempWrite, edit_widgets->spinTempWrite, edit_widgets->cbtTempWrite); - philos_array_int_copy(&obj_edit_config.i_o_limit_write, &str_value); - philos_array_int_copy(&obj_edit_config.i_o_limit_write_size, &pow_mem); + } + philos_array_int_copy(&obj_edit_config.i_o_limit_write, &str_value); + philos_array_int_copy(&obj_edit_config.i_o_limit_write_size, &pow_mem); } + } void edit_set_size_arrays(size_t size_array) { obj_edit_config.size = size_array; @@ -316,7 +290,7 @@ void edit_set_limit_swap(int value, int pow_mem) { edit_widgets->cmbPaddingFLTemp); } void edit_temp_set(int value, int pow_mem, GtkWidget* cheek, GtkWidget* spin, GtkWidget* combo_box_text) { - if (pow_mem!=-3 && pow_mem>=-1 && value>=0) { + if (pow_mem>=-1 && value>=0) { gtk_spin_button_set_value(GTK_SPIN_BUTTON(spin), value); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(cheek), 1); if (combo_box_text) { -- 2.35.1 From c48aaffbeeb09fb518b9bc23af0c6c33e039e95b Mon Sep 17 00:00:00 2001 From: Igor Belitskiy Date: Wed, 28 Jun 2023 17:36:19 +0600 Subject: [PATCH 54/91] =?UTF-8?q?=D0=A3=D0=B1=D1=80=D0=B0=D0=BB=20=D0=BB?= =?UTF-8?q?=D0=BE=D0=BA=D0=B0=D0=BB=D1=8C=D0=BD=D1=83=D1=8E=20=D1=81=D0=B1?= =?UTF-8?q?=D0=BE=D1=80=D0=BA=D1=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Makefile | 3 --- 1 file changed, 3 deletions(-) diff --git a/Makefile b/Makefile index 9b35b7b..c873688 100644 --- a/Makefile +++ b/Makefile @@ -104,9 +104,6 @@ uninstall: install: check uninstall @echo "Install ..." -#################################################### УДАЛИТЬ ПЕРЕД КОММИТОМ ################################################################################ - @gcc compile/resources.c source/my_device.c source/philos_utils.c source/philos_utils.h 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 -#################################################### УДАЛИТЬ ПЕРЕД КОММИТОМ ################################################################################ @for FILE_PO in $(wildcard *.po); do \ LANG=$${FILE_PO##*_};LANG=$${LANG%.*}; \ install -dm755 "${DESTDIR}${PREFIX}/share/locale/$${LANG}/LC_MESSAGES"; \ -- 2.35.1 From c73e63a9ee5595543e2c236c16fe6ba995b07d97 Mon Sep 17 00:00:00 2001 From: Igor Belitskiy Date: Thu, 29 Jun 2023 14:01:26 +0600 Subject: [PATCH 55/91] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB=20=D0=B7=D0=BD=D0=B0=D1=87=D0=BA=D0=B8,=20=D0=B7?= =?UTF-8?q?=D0=B0=D0=B4=D0=B0=D1=87=D0=B0=20=E2=84=965?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ubl-settings-resourcequota.glade | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/ubl-settings-resourcequota.glade b/ubl-settings-resourcequota.glade index 68a9cd0..19b5b89 100644 --- a/ubl-settings-resourcequota.glade +++ b/ubl-settings-resourcequota.glade @@ -224,6 +224,7 @@ False start False + com.ublinux.ubl-settings-resourcequota True @@ -1326,6 +1327,7 @@ False start False + com.ublinux.ubl-settings-resourcequota True @@ -3376,7 +3378,7 @@ limit True False - reload + system-reboot-symbolic @@ -3912,6 +3914,7 @@ limit False start False + com.ublinux.ubl-settings-resourcequota True -- 2.35.1 From 3df0ab4c0e7e2e8b9985eae984340e4c63693e3e Mon Sep 17 00:00:00 2001 From: Igor Belitskiy Date: Thu, 29 Jun 2023 14:11:47 +0600 Subject: [PATCH 56/91] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB=20=D0=BB=D0=BE=D0=BA=D0=B0=D0=BB=D0=B8=D0=B7=D0=B0?= =?UTF-8?q?=D1=86=D0=B8=D1=8E=20#9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ubl-settings-resourcequota.glade | 52 ++++++++++++++++---------------- ubl-settings-resourcequota_ru.po | 4 +-- 2 files changed, 28 insertions(+), 28 deletions(-) diff --git a/ubl-settings-resourcequota.glade b/ubl-settings-resourcequota.glade index 19b5b89..ea4b257 100644 --- a/ubl-settings-resourcequota.glade +++ b/ubl-settings-resourcequota.glade @@ -3938,7 +3938,7 @@ limit False True - 2 + 0 @@ -3953,7 +3953,7 @@ limit False True - 3 + 1 @@ -3968,7 +3968,22 @@ limit False True - 4 + 2 + + + + + Hard RAM limit, (volume) + True + True + False + start + True + + + False + True + 3 @@ -4017,21 +4032,6 @@ limit 5 - - - Hard RAM limit, (volume) - True - True - False - start - True - - - False - True - 6 - - Swap file limit (volume) @@ -4044,7 +4044,7 @@ limit False True - 7 + 5 @@ -4059,12 +4059,12 @@ limit False True - 8 + 6 - - I/O limit (write) + + I/O limit (read) True True False @@ -4074,12 +4074,12 @@ limit False True - 8 + 7 - - I/O limit (read) + + I/O limit (write) True True False @@ -4089,7 +4089,7 @@ limit False True - 9 + 8 diff --git a/ubl-settings-resourcequota_ru.po b/ubl-settings-resourcequota_ru.po index 2048b2d..72f0160 100644 --- a/ubl-settings-resourcequota_ru.po +++ b/ubl-settings-resourcequota_ru.po @@ -132,7 +132,7 @@ msgid "Type quota" msgstr "Тип квоты" msgid "Quota volume" -msgstr "Объем квотирования" +msgstr "Объект квотирования" msgid "Soft RAM limit, (volume)" msgstr "Мягкий лимит ОЗУ, (объём)" @@ -141,7 +141,7 @@ msgid "Hard RAM limit, (volume)" msgstr "Жёсткий лимит ОЗУ, (объём)" msgid "Swap file limit (volume)" -msgstr "Лимит файлов подкачки (объём)" +msgstr "Лимит файла подкачки (объём)" msgid "CPU limit (%)" msgstr "Лимит ЦПУ (%)" -- 2.35.1 From 0d473054bef3a8eb300f9fe742aeaaaa65bb4c94 Mon Sep 17 00:00:00 2001 From: Igor Belitskiy Date: Thu, 29 Jun 2023 14:49:29 +0600 Subject: [PATCH 57/91] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB=20=D0=B7=D0=B0=D0=BF=D1=83=D1=81=D0=BA=20=D0=BE?= =?UTF-8?q?=D1=82=20root?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/ubl-settings-resourcequota.c | 31 ++++++++++++++++++----------- source/ubl-strings.h | 2 +- ubl-settings-resourcequota.pot | 5 +++++ ubl-settings-resourcequota_ru.po | 5 +++++ 4 files changed, 30 insertions(+), 13 deletions(-) diff --git a/source/ubl-settings-resourcequota.c b/source/ubl-settings-resourcequota.c index 43b4b6b..ad66425 100644 --- a/source/ubl-settings-resourcequota.c +++ b/source/ubl-settings-resourcequota.c @@ -195,7 +195,8 @@ main_window *setup_window(){ gtk_widget_set_sensitive(widgets->SaveMenuItem,0); } if (main_config.lock_save_global == 1 && main_config.lock_save_local == 1) { - gtk_widget_set_sensitive(widgets->btnSaveCfg,0); + gtk_widget_set_sensitive(widgets->btnSaveCfg,0); + gtk_widget_set_sensitive(widgets->btnAdd,0); } gtk_widget_show_all(widgets->Window); return widgets; @@ -588,7 +589,9 @@ void tree_view_select(GtkWidget *self, main_window *widgets) { gtk_widget_set_sensitive(widgets->btnInfo,1); } else { - gtk_widget_set_sensitive(widgets->btnAdd,1); + if (main_config.lock_save_global == 0 || main_config.lock_save_local == 0) { + gtk_widget_set_sensitive(widgets->btnAdd,1); + } gtk_widget_set_sensitive(widgets->btnDelQuotas,0); gtk_widget_set_sensitive(widgets->btnEdit,0); gtk_widget_set_sensitive(widgets->btnInfo,0); @@ -1075,7 +1078,6 @@ int template_format_str_save(char* source_set_cmd, char* source_remove_cmd) { } char* template_format_str_set_save(char* source_set_cmd) { char* cmd = yon_char_new(source_set_cmd); - int flag_save = 0; for (size_t index = 0; index < main_config.size_tree_view; index++) { char* key = NULL; char* value = NULL; @@ -1083,7 +1085,6 @@ char* template_format_str_set_save(char* source_set_cmd) { value = yon_char_new(save_format_value(index)); if (key != NULL && value != NULL) { cmd = yon_char_unite(cmd, " " , key, "=\"" , value, "\" ", NULL); - flag_save = 1; } if (key != NULL) { free(key); @@ -1093,8 +1094,7 @@ char* template_format_str_set_save(char* source_set_cmd) { } } - if (flag_save && check_save()== 0) { - puts(cmd); + if (strlen(cmd) > 1 && check_save()== 0) { return cmd; } free(cmd); @@ -1257,10 +1257,18 @@ int main(int argc, char *argv[]){ yon_ubl_header_setup_resource(widgets->HeadOverlay,widgets->HeadBox,widgets->HeadImage,banner_path); yon_ubl_status_box_setup(widgets->StatusIcon,widgets->StatusBox,widgets->StatusLabel); - if (getuid()!=0) - yon_ubl_status_box_render(TITLE_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE); - else - yon_ubl_status_box_render(TITLE_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE); + if (getuid()!=0) { + yon_ubl_status_box_render(ROOT_WARNING_LABEL,BACKGROUND_IMAGE_FAIL_TYPE); + } + else { + yon_ubl_status_box_render(LOAD_LOCAL_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE); + if (main_config.lock_load_global == 0) { + load_global_cfg(); + } + if (main_config.lock_save_local == 0) { + load_system_cfg(); + } + } yon_ubl_setup_sockets(widgets->PlugBox,widgets->LeftBox,widgets->RightBox,main_config.socket_id,main_config.load_socket_id,main_config.save_socket_id); yon_window_config_setup(GTK_WINDOW(widgets->Window)); yon_window_config_load(config_path); @@ -1269,8 +1277,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_system_cfg(); + event_all(widgets); main_event(widgets); gtk_main(); diff --git a/source/ubl-strings.h b/source/ubl-strings.h index f573c04..13a9fa0 100644 --- a/source/ubl-strings.h +++ b/source/ubl-strings.h @@ -1,6 +1,6 @@ #define VERSION_LABEL yon_char_unite(_("Version:")," ",version_application,"\n",NULL) #define HELP_LABEL yon_char_unite(_("ubl-settings-resourcequota version:")," ", version_application,"\n",_("CPU and RAM quotas settings"),"\n",_("Usage:"), " ubl-settings-resourcequota ",_("[OPTIONS]"),"\n",_("Options:"),"\n\t--help, -h\t\t\t",_("Show this help"),"\n\t--version, -V\t\t\t",_("Show package version"),"\n\t--lock-help\t\t\t",_("Lock this help menu"),"\n\t--lock-save\t\t\t",_("Lock configuration saving"),"\n\t--lock-save-local\t\t",_("Lock local configration saving"),"\n\t--lock-save-global\t\t",_("Lock global configration saving"),"\n\t--lock-load-global\t\t",_("Lock global configration loading"),"\n",NULL) - +#define ROOT_WARNING_LABEL _("Warning! Application was launched without root - root-dependent actions are locked") #define TITLE_LABEL _("CPU and RAM quotas") #define TITLE_INFO_LABEL _("System resource quota settings management") diff --git a/ubl-settings-resourcequota.pot b/ubl-settings-resourcequota.pot index d8be582..f6a7a52 100644 --- a/ubl-settings-resourcequota.pot +++ b/ubl-settings-resourcequota.pot @@ -17,6 +17,11 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +msgid "" +"Warning! Application was launched without root - root-dependent actions are " +"locked" +msgstr "" + msgid "Config loading failed" msgstr "" diff --git a/ubl-settings-resourcequota_ru.po b/ubl-settings-resourcequota_ru.po index 72f0160..6b5307c 100644 --- a/ubl-settings-resourcequota_ru.po +++ b/ubl-settings-resourcequota_ru.po @@ -20,6 +20,11 @@ msgstr "" #: source/ubl-strings.h:8 #: source/ubl-strings.h:1 +msgid "" +"Warning! Application was launched without root - root-dependent actions are " +"locked" +msgstr "Внимание! Приложение было запущено без прав суперпользователя - действия, требующие их наличия заблокированы" + msgid "Config loading failed" msgstr "Не удалось загрузить конфигурацию" -- 2.35.1 From 00c7bb82020bea8feef328f636303f4ab4507c41 Mon Sep 17 00:00:00 2001 From: Igor Belitskiy Date: Thu, 29 Jun 2023 15:38:29 +0600 Subject: [PATCH 58/91] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB=20=D0=B7=D0=B0=D0=B4=D0=B0=D1=87=D1=83=20=E2=84=96?= =?UTF-8?q?8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/ubl-settings-resourcequota.c | 14 ++++++++++++++ source/ubl-settings-resourcequota.h | 3 ++- ubl-settings-resourcequota.glade | 6 ++++++ 3 files changed, 22 insertions(+), 1 deletion(-) diff --git a/source/ubl-settings-resourcequota.c b/source/ubl-settings-resourcequota.c index ad66425..551d92b 100644 --- a/source/ubl-settings-resourcequota.c +++ b/source/ubl-settings-resourcequota.c @@ -794,6 +794,9 @@ void event_all(main_window *widgets) { void main_event(main_window *widgets) { /* Signal connection | Присоединение сигналов */ g_signal_connect(G_OBJECT(widgets->Window), "destroy", G_CALLBACK(gtk_main_quit), NULL); + + g_signal_connect(G_OBJECT(widgets->notebookMain), "switch-page", G_CALLBACK(select_page_notebook), NULL); + g_signal_connect(G_OBJECT(widgets->DocumentationMenuItem),"activate",G_CALLBACK(on_open_documentation_confirmation),WIKI_LINK); g_signal_connect(G_OBJECT(widgets->AboutMenuItem),"activate",G_CALLBACK(on_about),NULL); @@ -814,6 +817,17 @@ void main_event(main_window *widgets) { g_signal_connect(G_OBJECT(widgets->SaveLocalMenuItem), "activate", G_CALLBACK(wrapper_system_save), widgets); g_signal_connect(G_OBJECT(widgets->SaveMenuItem), "activate", G_CALLBACK(wrapper_all_save), widgets); } +gboolean select_page_notebook( + GtkNotebook* self, + gboolean object, + gpointer user_data +) { + int menu = gtk_notebook_get_current_page(GTK_NOTEBOOK(widgets->notebookMain)); + if (menu == 0 || menu == 2) { + yon_terminal_integrated_launch(widgets->vteDispatcher, "clear", NULL, NULL); + main_update_dispatcher(); + } +} void wrapper_add_show(GtkWidget *self) { add_show(NULL, glade_path); g_signal_connect(G_OBJECT(get_widget_add()->btnSaveTempSave), "clicked", G_CALLBACK(main_add_btn_save), NULL); diff --git a/source/ubl-settings-resourcequota.h b/source/ubl-settings-resourcequota.h index 9640965..bcf988c 100644 --- a/source/ubl-settings-resourcequota.h +++ b/source/ubl-settings-resourcequota.h @@ -214,4 +214,5 @@ char* template_format_str_set_save(char* source_set_cmd); 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* add_io_str_format_ubconfig(char* cmd_io, char* key, int** i_o_limit, int** i_o_limit_size, char*** disk_read, int index); -char* format_io_limit_in_tree_view(config_str* disk, int** i_o_limit, int** i_o_limit_size, int index); \ No newline at end of file +char* format_io_limit_in_tree_view(config_str* disk, int** i_o_limit, int** i_o_limit_size, int index); +gboolean select_page_notebook(GtkNotebook* self, gboolean object, gpointer user_data); \ No newline at end of file diff --git a/ubl-settings-resourcequota.glade b/ubl-settings-resourcequota.glade index ea4b257..0110e63 100644 --- a/ubl-settings-resourcequota.glade +++ b/ubl-settings-resourcequota.glade @@ -3702,6 +3702,12 @@ limit False + + + + + + True -- 2.35.1 From e600fab7cca6c230549402940c8459318b0bedcd Mon Sep 17 00:00:00 2001 From: Igor Belitskiy Date: Thu, 29 Jun 2023 17:22:23 +0600 Subject: [PATCH 59/91] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB=20=D0=BE=D1=88=D0=B8=D0=B1=D0=BA=D1=83=20=D0=B7?= =?UTF-8?q?=D0=B0=D0=BF=D0=B8=D1=81=D0=B8=20=D0=BA=D0=BE=D0=BD=D1=84=D0=B8?= =?UTF-8?q?=D0=B3=D1=83=D1=80=D0=B0=D1=86=D0=B8=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/ubl-settings-resourcequota.c | 64 ++++++++++++++++++----------- source/ubl-settings-resourcequota.h | 4 +- source/view_add.c | 2 +- 3 files changed, 42 insertions(+), 28 deletions(-) diff --git a/source/ubl-settings-resourcequota.c b/source/ubl-settings-resourcequota.c index 551d92b..c41493a 100644 --- a/source/ubl-settings-resourcequota.c +++ b/source/ubl-settings-resourcequota.c @@ -975,15 +975,14 @@ void wrapper_system_save() { char* save_format_key(int index) { - char* key = NULL; - if (strstr(main_config.quota_volume[index], "-") == NULL) { - key = yon_char_unite("CGROUP_QUOTA[", main_config.quota_volume[index] , "]", NULL); + if (strstr(main_config.quota_volume[index], "-") != NULL) { + return yon_char_unite("CGROUP_QUOTA[", main_config.quota_volume[index] , "]", NULL); } - return key; + return NULL; } char* save_format_value(int index) { - char* value = ""; + char* value = yon_char_new(""); char split_simvol[2] = {0}; split_simvol[0] = 0; split_simvol[1] = 0; @@ -1019,30 +1018,46 @@ char* save_format_value(int index) { split_simvol[0] = ','; split_simvol[1] = '\0'; } - value = add_io_str_format_ubconfig(value, "IOReadBandwidthMax", main_config.i_o_limit_read, main_config.i_o_limit_read_size, main_config.disk, index); - value = add_io_str_format_ubconfig(value, "IOWriteBandwidthMax", main_config.i_o_limit_write, main_config.i_o_limit_write_size, main_config.disk, index); + + char* value_read = add_io_str_format_ubconfig("IOReadBandwidthMax", main_config.i_o_limit_read, main_config.i_o_limit_read_size, main_config.disk, index); + char* value_write = add_io_str_format_ubconfig("IOWriteBandwidthMax", main_config.i_o_limit_write, main_config.i_o_limit_write_size, main_config.disk, index); + if (strlen(value_read) > 5){ + if (strlen(value) > 5) { + value = yon_char_unite(value, ",", value_read, NULL); + } + else { + value = yon_char_unite(value_read, NULL); + } + + } + if (strlen(value_write)> 5) { + if (strlen(value) > 5) { + value = yon_char_unite(value, ",", value_write, NULL); + } + else { + value = yon_char_unite(value_write, NULL); + } + } return value; } -char* add_io_str_format_ubconfig(char* cmd_io, char* key, int** i_o_limit, int** i_o_limit_size, char*** disk, int index) { +char* add_io_str_format_ubconfig(char* key, int** i_o_limit, int** i_o_limit_size, char*** disk, int index) { char split_simvol[2] = {0}; - if (i_o_limit== NULL) {return cmd_io;} - if (i_o_limit_size[index] == NULL) {return cmd_io;} - if (i_o_limit[index] == NULL) {return cmd_io;} + char* cmd_io = ""; + if (i_o_limit== NULL) {return NULL;} + if (i_o_limit_size[index] == NULL) {return NULL;} + if (i_o_limit[index] == NULL) {return NULL;} int len_array = 0; for (int i = 0;i_o_limit[index][i] != -2; i++) { len_array += 1; } for (int i=0; i 1 && check_save()== 0) { + if (cmd != NULL && check_save()== 0) { + cmd = yon_char_unite(source_set_cmd, " " ,cmd, NULL); + puts(cmd); return cmd; } free(cmd); diff --git a/source/ubl-settings-resourcequota.h b/source/ubl-settings-resourcequota.h index bcf988c..b4b5196 100644 --- a/source/ubl-settings-resourcequota.h +++ b/source/ubl-settings-resourcequota.h @@ -44,7 +44,7 @@ #define CMD_GET_GROUP "cut -d: -f1 /etc/group" typedef char *string; -string version_application; +string version_application="1.2"; static char *local; @@ -213,6 +213,6 @@ char* template_format_str_remove_save(char* source_remove_cmd); char* template_format_str_set_save(char* source_set_cmd); 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* add_io_str_format_ubconfig(char* cmd_io, char* key, int** i_o_limit, int** i_o_limit_size, char*** disk_read, int index); +char* add_io_str_format_ubconfig(char* key, int** i_o_limit, int** i_o_limit_size, char*** disk_read, int index); char* format_io_limit_in_tree_view(config_str* disk, int** i_o_limit, int** i_o_limit_size, int index); gboolean select_page_notebook(GtkNotebook* self, gboolean object, gpointer user_data); \ No newline at end of file diff --git a/source/view_add.c b/source/view_add.c index 3efd5f3..772fa99 100644 --- a/source/view_add.c +++ b/source/view_add.c @@ -169,7 +169,7 @@ void add_show(GtkWidget *self, char* glade_path) { char* add_get_select_device_to_level_2() { char* text = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(add_widgets->cbxTempQuotaLevel2)); int disk_id = gtk_combo_box_get_active(GTK_COMBO_BOX(add_widgets->cbxTempQuotaLevel2)); - if (disk_id != -1) { + if (disk_id >= 0) { return text; } else { -- 2.35.1 From e6f06db2a6062b2924d736c5fc7aed91fb9075a9 Mon Sep 17 00:00:00 2001 From: Igor Belitskiy Date: Thu, 29 Jun 2023 17:24:31 +0600 Subject: [PATCH 60/91] fix --- source/ubl-settings-resourcequota.c | 1 - 1 file changed, 1 deletion(-) diff --git a/source/ubl-settings-resourcequota.c b/source/ubl-settings-resourcequota.c index c41493a..6276702 100644 --- a/source/ubl-settings-resourcequota.c +++ b/source/ubl-settings-resourcequota.c @@ -1122,7 +1122,6 @@ char* template_format_str_set_save(char* source_set_cmd) { } if (cmd != NULL && check_save()== 0) { cmd = yon_char_unite(source_set_cmd, " " ,cmd, NULL); - puts(cmd); return cmd; } free(cmd); -- 2.35.1 From 08615bfb24d9a11cad83671dc492849bbb06fe48 Mon Sep 17 00:00:00 2001 From: Igor Belitskiy Date: Fri, 30 Jun 2023 12:22:16 +0600 Subject: [PATCH 61/91] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB=20=D0=BE=D1=88=D0=B8=D0=B1=D0=BA=D1=83=20=D0=BF?= =?UTF-8?q?=D0=B5=D1=80=D0=B5=D0=B2=D0=BE=D0=B4=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/ubl-settings-resourcequota.h | 2 +- ubl-settings-resourcequota.glade | 75 +++++++++++++++++++++++++++-- 2 files changed, 71 insertions(+), 6 deletions(-) diff --git a/source/ubl-settings-resourcequota.h b/source/ubl-settings-resourcequota.h index b4b5196..b0485e9 100644 --- a/source/ubl-settings-resourcequota.h +++ b/source/ubl-settings-resourcequota.h @@ -44,7 +44,7 @@ #define CMD_GET_GROUP "cut -d: -f1 /etc/group" typedef char *string; -string version_application="1.2"; +string version_application; static char *local; diff --git a/ubl-settings-resourcequota.glade b/ubl-settings-resourcequota.glade index 0110e63..30d9472 100644 --- a/ubl-settings-resourcequota.glade +++ b/ubl-settings-resourcequota.glade @@ -2431,7 +2431,8 @@ True False - False + True + combo imagemenuitem @@ -4002,12 +4003,44 @@ limit True - gtk-cancel True True True center - True + + + True + False + + + True + False + gtk-stop + + + False + True + 0 + + + + + True + False + 5 + 5 + 5 + 5 + Cancel + + + False + True + 1 + + + + False @@ -4017,12 +4050,44 @@ limit - gtk-save True True True center - True + + + True + False + + + True + False + gtk-save + + + False + True + 0 + + + + + True + False + 5 + 5 + 5 + 5 + Save + + + False + True + 1 + + + + False -- 2.35.1 From 042511ef9352fca4d86a19bc21bd9f07a2cdacbd Mon Sep 17 00:00:00 2001 From: Igor Belitskiy Date: Fri, 30 Jun 2023 13:57:13 +0600 Subject: [PATCH 62/91] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB=20=D0=B8=D0=BA=D0=BE=D0=BD=D0=BA=D1=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/ubl-settings-resourcequota.c | 4 ++-- source/ubl-utils.c | 2 +- ubl-settings-resourcequota.glade | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/source/ubl-settings-resourcequota.c b/source/ubl-settings-resourcequota.c index 6276702..08670cc 100644 --- a/source/ubl-settings-resourcequota.c +++ b/source/ubl-settings-resourcequota.c @@ -568,12 +568,12 @@ void main_cbx_2_event() { char* cmd = NULL; if (menu_id >= 0) { cmd = yon_char_unite("systemctl status ", cmd_text_param ," --no-pager", NULL); + puts(cmd); yon_terminal_integrated_launch(widgets->vteInformation, cmd, NULL, NULL); + } if (menu_id >= 0) { free(cmd_text_param); - } - if (menu_id >= 0) { free(cmd); } } diff --git a/source/ubl-utils.c b/source/ubl-utils.c index eb06336..46ff5ad 100644 --- a/source/ubl-utils.c +++ b/source/ubl-utils.c @@ -1236,7 +1236,7 @@ void yon_terminal_integrated_launch(GtkWidget *place_to_show, char* command, voi VtePty *pty = vte_pty_new_sync(VTE_PTY_DEFAULT,NULL,NULL); vte_terminal_set_pty(VTE_TERMINAL(terminal),pty); gtk_container_add(GTK_CONTAINER(place_to_show),terminal); - char *install_command=yon_char_unite("tput cup 0 0 && tput ed; ",command," ; sleep 5;exit 0","\n",NULL); + char *install_command=yon_char_unite("tput cup 0 0 && tput ed; ",command," ;exit 0","\n",NULL); printf("%s\n",install_command); if(endwork_function) g_signal_connect(G_OBJECT(terminal), "child-exited", G_CALLBACK(endwork_function), endwork_function_argument); diff --git a/ubl-settings-resourcequota.glade b/ubl-settings-resourcequota.glade index 30d9472..f7535b9 100644 --- a/ubl-settings-resourcequota.glade +++ b/ubl-settings-resourcequota.glade @@ -3379,7 +3379,7 @@ limit True False - system-reboot-symbolic + emblem-synchronizing-symbolic -- 2.35.1 From 1ec9283278b7b42002813282c791091bfcf06f76 Mon Sep 17 00:00:00 2001 From: Igor Belitskiy Date: Fri, 30 Jun 2023 17:02:22 +0600 Subject: [PATCH 63/91] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB=20=D0=B1=D0=B0=D0=B3=20=D1=81=20=D1=81=D0=BE=D1=85?= =?UTF-8?q?=D1=80=D0=B0=D0=BD=D0=B5=D0=BD=D0=B8=D0=B5=D0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/ubl-settings-resourcequota.c | 24 ++++++---- source/ubl-settings-resourcequota.h | 3 +- ubl-settings-resourcequota.glade | 68 +++++++++++------------------ 3 files changed, 43 insertions(+), 52 deletions(-) mode change 100644 => 100755 source/ubl-settings-resourcequota.h diff --git a/source/ubl-settings-resourcequota.c b/source/ubl-settings-resourcequota.c index 08670cc..4bf5dd8 100644 --- a/source/ubl-settings-resourcequota.c +++ b/source/ubl-settings-resourcequota.c @@ -115,6 +115,7 @@ void config_init(){ main_config.flag_load = 0; main_config.size_array_del_line = 0; main_config.flag_set_data = 0; + main_config.flag_save=0; main_config.i_o_limit_read_size=NULL; main_config.i_o_limit_write_size=NULL; main_config.i_o_limit_write=NULL; @@ -568,7 +569,6 @@ void main_cbx_2_event() { char* cmd = NULL; if (menu_id >= 0) { cmd = yon_char_unite("systemctl status ", cmd_text_param ," --no-pager", NULL); - puts(cmd); yon_terminal_integrated_launch(widgets->vteInformation, cmd, NULL, NULL); } @@ -638,6 +638,7 @@ void tree_view_add(int index) { main_config.cpu_limit_size = philos_int_append(main_config.cpu_limit_size, &main_config.size_tree_view, add_get_limit_cpu_size()); fill_tree_view(main_config.size_tree_view-1, main_config.size_tree_view, 1); main_config.flag_set_data = 1; + main_config.flag_save = 2; } void fill_tree_view(int start, int size, int flag_gui_add) { @@ -722,6 +723,7 @@ int tree_view_edit() { GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->treeViewMain)); if(gtk_tree_selection_get_selected(selection, &model, &iter)) { main_config.flag_set_data = 1; + main_config.flag_save = 2; char* str_iter = gtk_tree_model_get_string_from_iter(model, &iter); index = atoi(str_iter); main_config.soft_raw_limit[index] = edit_get_soft(); @@ -933,11 +935,13 @@ void tree_view_del_line() { gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->treeViewMain), model); free(str_iter); main_config.flag_set_data = 1; + main_config.flag_save = 2; } } void wrapper_all_save() { int flag_mess_save = 0; + if (main_config.flag_load == 0) { flag_mess_save = template_format_str_save(CMD_ALL_SAVE, CMD_ALL_REMOVE); } @@ -946,26 +950,31 @@ void wrapper_all_save() { } if (flag_mess_save) { yon_ubl_status_box_render(GLOBAL_LOCAL_SAVE_SUCCESS,BACKGROUND_IMAGE_SUCCESS_TYPE); + main_config.flag_save=0; } else { yon_ubl_status_box_render(MESS_NOTHING_SAVE, BACKGROUND_IMAGE_SUCCESS_TYPE); } + } void wrapper_global_save() { if (template_format_str_save(CMD_SAVE_GLOBAL, CMD_REMOVE_GLOBAL)) { yon_ubl_status_box_render(GLOBAL_LOAD_SUCCESS,BACKGROUND_IMAGE_SUCCESS_TYPE); + main_config.flag_save-=1; } else { yon_ubl_status_box_render(MESS_NOTHING_SAVE, BACKGROUND_IMAGE_SUCCESS_TYPE); } + } void wrapper_system_save() { if (template_format_str_save(CMD_SAVE_SYSTEM, CMD_REMOVE_SYSTEM)) { yon_ubl_status_box_render(LOCAL_SAVE_SUCCESS,BACKGROUND_IMAGE_SUCCESS_TYPE); + main_config.flag_save-=1; } else { yon_ubl_status_box_render(MESS_NOTHING_SAVE, BACKGROUND_IMAGE_SUCCESS_TYPE); @@ -975,10 +984,7 @@ void wrapper_system_save() { char* save_format_key(int index) { - if (strstr(main_config.quota_volume[index], "-") != NULL) { - return yon_char_unite("CGROUP_QUOTA[", main_config.quota_volume[index] , "]", NULL); - } - return NULL; + return yon_char_unite("CGROUP_QUOTA[", main_config.quota_volume[index] , "]", NULL); } char* save_format_value(int index) { @@ -1070,10 +1076,10 @@ char* add_io_str_format_ubconfig(char* key, int** i_o_limit, int** i_o_limit_s int check_save() { - if (main_config.flag_set_data == 1) { + if (main_config.flag_set_data == 1 || main_config.flag_save>0) { return 0; } - else if (main_config.flag_set_data == 0) { + else if (main_config.flag_set_data == 0 || main_config.flag_save<=0) { return 1; } return 0; @@ -1110,7 +1116,7 @@ char* template_format_str_set_save(char* source_set_cmd) { for (size_t index = 0; index < main_config.size_tree_view; index++) { char* key = save_format_key(index); char* value = save_format_value(index); - if (key != NULL && value != NULL) { + if (strlen(key)>4 && strlen(value) > 4) { cmd = yon_char_unite(cmd, " " , key, "=\"" , value, "\" ", NULL); } if (key != NULL) { @@ -1120,7 +1126,7 @@ char* template_format_str_set_save(char* source_set_cmd) { free(value); } } - if (cmd != NULL && check_save()== 0) { + if (strlen(cmd) > 8 && check_save()== 0) { cmd = yon_char_unite(source_set_cmd, " " ,cmd, NULL); return cmd; } diff --git a/source/ubl-settings-resourcequota.h b/source/ubl-settings-resourcequota.h old mode 100644 new mode 100755 index b0485e9..2823e9c --- a/source/ubl-settings-resourcequota.h +++ b/source/ubl-settings-resourcequota.h @@ -44,7 +44,7 @@ #define CMD_GET_GROUP "cut -d: -f1 /etc/group" typedef char *string; -string version_application; +string version_application="1.2"; static char *local; @@ -97,6 +97,7 @@ typedef struct int size_tree_view; int flag_set_data; + int flag_save; int flag_load; // flag_load = 0 -> system // flag_load = 1 -> global } config; diff --git a/ubl-settings-resourcequota.glade b/ubl-settings-resourcequota.glade index f7535b9..5fdca43 100644 --- a/ubl-settings-resourcequota.glade +++ b/ubl-settings-resourcequota.glade @@ -2418,46 +2418,6 @@ - - True - False - dialog-information-symbolic - - - True - False - dialog-question-symbolic - - - True - False - True - combo - - - imagemenuitem - True - False - image2 - False - - - - - - imagemenuitem - True - False - image1 - False - - - - True False @@ -2681,6 +2641,31 @@ translated and supported by community. + + True + False + False + False + + + True + False + + + + + + True + False + + + + True False @@ -2730,7 +2715,6 @@ translated and supported by community. True False - True @@ -3778,7 +3762,7 @@ limit True False - + True True False -- 2.35.1 From 49ef8210fab542a5f0789860383db4e8f8d3f274 Mon Sep 17 00:00:00 2001 From: Igor Belitskiy Date: Fri, 30 Jun 2023 17:38:05 +0600 Subject: [PATCH 64/91] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB=20=D0=B7=D0=B0=D0=B4=D0=B0=D1=87=D1=83=20=E2=84=96?= =?UTF-8?q?12?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/ubl-settings-resourcequota.c | 1 + source/ubl-settings-resourcequota.h | 2 +- ubl-settings-resourcequota.glade | 148 ++++++++++------------------ 3 files changed, 52 insertions(+), 99 deletions(-) diff --git a/source/ubl-settings-resourcequota.c b/source/ubl-settings-resourcequota.c index 4bf5dd8..6b87c9e 100644 --- a/source/ubl-settings-resourcequota.c +++ b/source/ubl-settings-resourcequota.c @@ -1111,6 +1111,7 @@ int template_format_str_save(char* source_set_cmd, char* source_remove_cmd) { return 1; } + char* template_format_str_set_save(char* source_set_cmd) { char* cmd = yon_char_new(""); for (size_t index = 0; index < main_config.size_tree_view; index++) { diff --git a/source/ubl-settings-resourcequota.h b/source/ubl-settings-resourcequota.h index 2823e9c..bdb4c82 100755 --- a/source/ubl-settings-resourcequota.h +++ b/source/ubl-settings-resourcequota.h @@ -44,7 +44,7 @@ #define CMD_GET_GROUP "cut -d: -f1 /etc/group" typedef char *string; -string version_application="1.2"; +string version_application; static char *local; diff --git a/ubl-settings-resourcequota.glade b/ubl-settings-resourcequota.glade index 5fdca43..9d8ac3a 100644 --- a/ubl-settings-resourcequota.glade +++ b/ubl-settings-resourcequota.glade @@ -173,50 +173,33 @@ - - 1 - 100000 - 1 + + 100 1 10 - - 10000 + + 100 1 10 - - 10000 + + 100 1 10 - - 1000023 + + 100 1 10 - - 10000 + + 100 1 10 - - 100023 - 1 - 10 - - - 100023 - 1 - 10 - - - 10000 - 1 - 10 - - - 10000 + + 100 1 10 @@ -329,7 +312,7 @@ True False - 12 + 5 True @@ -374,9 +357,6 @@ 5 5 True - - - False @@ -394,7 +374,8 @@ 5 5 5 - adjustment4 + 7 + a1 False @@ -481,9 +462,6 @@ 5 5 True - - - False @@ -501,7 +479,8 @@ 5 5 5 - adjustment6 + 7 + a2 False @@ -592,7 +571,7 @@ True False - 12 + 5 True @@ -609,9 +588,6 @@ 5 5 True - - - False @@ -629,7 +605,8 @@ 5 5 5 - adjustment7 + 7 + a3 False @@ -681,7 +658,7 @@ - True + False True 0 @@ -702,7 +679,7 @@ True False - 12 + 5 True @@ -719,9 +696,6 @@ 5 5 True - - - False @@ -739,7 +713,8 @@ 5 5 5 - adjustment5 + 7 + a4 False @@ -812,7 +787,7 @@ True False - 12 + 5 True @@ -906,12 +881,9 @@ 5 5 5 - 4 + 5 5 True - - - False @@ -929,7 +901,8 @@ 5 5 5 - adjustment8 + 7 + a5 False @@ -1016,9 +989,6 @@ 5 5 True - - - False @@ -1036,7 +1006,8 @@ 5 5 5 - adjustment9 + 7 + a6 False @@ -1130,7 +1101,7 @@ True False - 12 + 5 True @@ -1423,7 +1394,7 @@ True False - 12 + 5 True @@ -1468,9 +1439,6 @@ 5 5 True - - - False @@ -1488,7 +1456,8 @@ 5 5 5 - adjustment4 + 7 + a1 False @@ -1575,9 +1544,6 @@ 5 5 True - - - False @@ -1595,7 +1561,8 @@ 5 5 5 - adjustment6 + 7 + a2 False @@ -1686,7 +1653,7 @@ True False - 12 + 5 True @@ -1703,9 +1670,6 @@ 5 5 True - - - False @@ -1723,7 +1687,8 @@ 5 5 5 - adjustment7 + 7 + a3 False @@ -1775,7 +1740,7 @@ - True + False True 0 @@ -1796,7 +1761,7 @@ True False - 12 + 5 True @@ -1813,9 +1778,6 @@ 5 5 True - - - False @@ -1833,7 +1795,8 @@ 5 5 5 - adjustment5 + 7 + a4 False @@ -1906,7 +1869,7 @@ True False - 12 + 5 True @@ -2001,12 +1964,9 @@ 5 5 5 - 4 + 5 5 True - - - False @@ -2024,7 +1984,8 @@ 5 5 5 - adjustment9 + 7 + a5 False @@ -2111,9 +2072,6 @@ 5 5 True - - - False @@ -2131,7 +2089,8 @@ 5 5 5 - adjustment8 + 7 + a6 False @@ -2225,7 +2184,7 @@ True False - 12 + 5 True @@ -3322,7 +3281,6 @@ limit 5 5 5 - adjustment1 False @@ -3390,7 +3348,6 @@ limit False True natural - adjustment3 natural UTF-8 True @@ -3407,7 +3364,6 @@ limit True False vertical - adjustment3 False @@ -3504,7 +3460,6 @@ limit False True natural - adjustment2 natural UTF-8 1024 @@ -3522,7 +3477,6 @@ limit True False vertical - adjustment2 False @@ -3639,7 +3593,6 @@ limit False True natural - adjustment3 natural UTF-8 True @@ -3656,7 +3609,6 @@ limit True False vertical - adjustment3 False -- 2.35.1 From 7b1a0075a6e09d70abce4a1e361aa22752a827aa Mon Sep 17 00:00:00 2001 From: Igor Belitskiy Date: Fri, 30 Jun 2023 17:51:17 +0600 Subject: [PATCH 65/91] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB=20=D0=B7=D0=B0=D0=B4=D0=B0=D1=87=D1=83=20=E2=84=96?= =?UTF-8?q?11?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/ubl-settings-resourcequota.c | 7 +- source/ubl-utils.c | 28 +++++- source/ubl-utils.h | 4 + ubl-settings-resourcequota.css | 147 ++++++++++++++++------------ ubl-settings-resourcequota.glade | 19 ---- 5 files changed, 122 insertions(+), 83 deletions(-) diff --git a/source/ubl-settings-resourcequota.c b/source/ubl-settings-resourcequota.c index 6b87c9e..bc87ac7 100644 --- a/source/ubl-settings-resourcequota.c +++ b/source/ubl-settings-resourcequota.c @@ -180,8 +180,11 @@ main_window *setup_window(){ widgets->LoadLocalMenuItem = yon_gtk_builder_get_widget(builder,"LoadLocalConfigurationMenuItem"); widgets->LeftBox = yon_gtk_builder_get_widget(builder,"HeaderLeftBox"); - widgets->DocumentationMenuItem = yon_gtk_builder_get_widget(builder,"DocumentationMenuItem"); - widgets->AboutMenuItem = yon_gtk_builder_get_widget(builder,"AboutMenuItem"); + widgets->DocumentationMenuItem = yon_ubl_menu_item_documentation_new(DOCUMENTATION_LABEL); // yon_gtk_builder_get_widget(builder,"DocumentationMenuItem"); + widgets->AboutMenuItem = yon_ubl_menu_item_about_new(ABOUT_LABEL); + GtkWidget *menu = yon_gtk_builder_get_widget(builder,"menuAbout"); + gtk_menu_shell_append(GTK_MENU_SHELL(menu),widgets->DocumentationMenuItem); + gtk_menu_shell_append(GTK_MENU_SHELL(menu),widgets->AboutMenuItem); widgets->btnShowFilters = yon_gtk_builder_get_widget(builder,"btnShowFilters"); if (main_config.lock_load_global == 1){ diff --git a/source/ubl-utils.c b/source/ubl-utils.c index 46ff5ad..4def2f6 100644 --- a/source/ubl-utils.c +++ b/source/ubl-utils.c @@ -1413,7 +1413,33 @@ void yon_terminal_integrated_start(GtkWidget *terminal, char* command, void *end gtk_window_move(__yon_window_config_target_window,__yon_main_window_config.x,__yon_main_window_config.y); gtk_window_resize(__yon_window_config_target_window,__yon_main_window_config.width,__yon_main_window_config.height); } - +GtkWidget *yon_ubl_menu_item_about_new(char *buttonname){ + GtkWidget *menu_item = gtk_menu_item_new(); + gtk_style_context_add_class(gtk_widget_get_style_context(menu_item),"menuitembottom"); + GtkWidget *box = gtk_box_new(GTK_ORIENTATION_HORIZONTAL,0); + GtkWidget *label = gtk_label_new(buttonname); + GtkWidget *image = gtk_image_new_from_icon_name("dialog-information-symbolic",GTK_ICON_SIZE_BUTTON); + gtk_label_set_xalign(GTK_LABEL(label),0.0); + gtk_box_pack_start(GTK_BOX(box),image,0,0,5); + gtk_box_pack_start(GTK_BOX(box),label,0,0,5); + gtk_container_add(GTK_CONTAINER(menu_item),box); + gtk_widget_show_all(menu_item); + return menu_item; +} + +GtkWidget *yon_ubl_menu_item_documentation_new(char *buttonname){ + GtkWidget *menu_item = gtk_menu_item_new(); + gtk_style_context_add_class(gtk_widget_get_style_context(menu_item),"menuitemtop"); + GtkWidget *box = gtk_box_new(GTK_ORIENTATION_HORIZONTAL,0); + GtkWidget *label = gtk_label_new(buttonname); + GtkWidget *image = gtk_image_new_from_icon_name("dialog-question-symbolic",GTK_ICON_SIZE_BUTTON); + gtk_label_set_xalign(GTK_LABEL(label),0.0); + gtk_box_pack_start(GTK_BOX(box),image,0,0,5); + gtk_box_pack_start(GTK_BOX(box),label,0,0,5); + gtk_container_add(GTK_CONTAINER(menu_item),box); + gtk_widget_show_all(menu_item); + return menu_item; +} int yon_gtk_combo_box_text_fill(GtkWidget *combo, config_str parameters,int size){ if (combo&¶meters){ for (int i=0;i* { border-color:alpha(@theme_text_color, 0.01); -} -.menuitembottom{ - margin-top:0px; - margin-bottom:3px; -} -.menuitemmiddle{ - margin-top:0px; - margin-bottom:0px; -} - -.menuitemtop{ - margin-bottom:0px; -} -.menuitemtop *{ - margin:2px 2px 0 2px; - padding: 5px 10px 3px 5px; -} -.menuitemmiddle *{ - margin:0 2px 0 2px; - padding: 3px 10px 3px 5px; -} -.menuitembottom *{ - margin:0 2px 2px 2px; - padding: 3px 10px 5px 5px; -} -.menuitemtop:hover { - background:@theme_bg_color; - border-color:inherit; - border-left-width:inherit; - border-right-width:inherit; -} -.menuitemmiddle:hover { - background:@theme_bg_color; - border-color:inherit; - border-left-width:inherit; - border-right-width:inherit; -} -.menuitembottom:hover { - background:@theme_bg_color; - border-color:inherit; - border-left-width:inherit; - border-right-width:inherit; +}.menuitembottom{ + margin-top:0px; + margin-bottom:3px; + border-color:inherit; + border-left-width:inherit; + border-right-width:inherit; + } + .menuitemmiddle{ + margin-top:0px; + margin-bottom:0px; + border-color:inherit; + border-left-width:inherit; + border-right-width:inherit; + } -} -.menuitemtop:hover* { - margin:2px 2px 0 2px; - padding: 5px 10px 3px 5px; - background:@theme_selected_bg_color; - border-radius:2px; -} -.menuitemmiddle:hover* { - margin:0 2px 0 2px; - padding: 3px 10px 3px 5px; - background:@theme_selected_bg_color; - border-radius:2px; -} -.menuitembottom:hover* { - margin:0 2px 2px 2px; - padding: 3px 10px 5px 5px; - background:@theme_selected_bg_color; - border-radius:2px; -} + .menuitemtop{ + margin-bottom:0px; + border-color:inherit; + border-top-width:inherit; + border-left-width:inherit; + border-right-width:inherit; + } + .menuitemtop *{ + margin:2px 2px 0 2px; + padding-top:2px; + padding-bottom:2px; + /* padding: 5px 0px 3px 5px; */ + border:transparent; + } + .menuitemmiddle *{ + margin:0 2px 0 2px; + padding-top:2px; + padding-bottom:2px; + /* padding: 3px 0px 3px 5px; */ + border:transparent; + } + .menuitembottom *{ + margin:0 2px 2px 2px; + padding-top:2px; + padding-bottom:2px; + /* padding: 3px 0px 5px 5px; */ + } + .menuitemtop:hover { + background:@theme_bg_color; + border-color:inherit; + border-top-width:inherit; + border-left-width:inherit; + border-right-width:inherit; + } + .menuitemmiddle:hover { + background:@theme_bg_color; + border-color:inherit; + border-left-width:inherit; + border-right-width:inherit; + } + .menuitembottom:hover { + background:@theme_bg_color; + border-color:inherit; + border-bottom-width:0px; + border-left-width:inherit; + border-right-width:inherit; + + } + .menuitemtop:hover* { + margin:2px 2px 0 2px; + padding-top:2px; + padding-bottom:2px; + /* padding: 5px 0 3px 5px; */ + background:@theme_selected_bg_color; + border-radius:2px; + } + .menuitemmiddle:hover* { + margin:0 2px 0px 2px; + padding-top:2px; + padding-bottom:2px; + /* padding: 3px 0px 3px 5px; */ + background:@theme_selected_bg_color; + border-radius:2px; + } + .menuitembottom:hover* { + margin:0 2px 2px 2px; + padding-top:2px; + padding-bottom:2px; + /* padding: 3px 0px 5px 5px; */ + background:@theme_selected_bg_color; + border-radius:2px; + } .workingbg, #workingbg { background-color:@theme_base_color; diff --git a/ubl-settings-resourcequota.glade b/ubl-settings-resourcequota.glade index 9d8ac3a..56092ce 100644 --- a/ubl-settings-resourcequota.glade +++ b/ubl-settings-resourcequota.glade @@ -2605,25 +2605,6 @@ translated and supported by community. False False False - - - True - False - - - - - - True - False - - - True -- 2.35.1 From 39b69f8fa0d7a033e2acd42baa8a533c598ebd82 Mon Sep 17 00:00:00 2001 From: Igor Belitskiy Date: Mon, 3 Jul 2023 11:33:54 +0600 Subject: [PATCH 66/91] fix --- ubl-settings-resourcequota.glade | 9 +++++++++ ubl-settings-resourcequota_ru.po | 9 ++++++--- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/ubl-settings-resourcequota.glade b/ubl-settings-resourcequota.glade index 56092ce..8bcbe70 100644 --- a/ubl-settings-resourcequota.glade +++ b/ubl-settings-resourcequota.glade @@ -2377,6 +2377,12 @@ + + 10000 + 1 + 1 + 10 + True False @@ -3262,6 +3268,9 @@ limit 5 5 5 + 6 + 1 + adjustDisp False diff --git a/ubl-settings-resourcequota_ru.po b/ubl-settings-resourcequota_ru.po index 6b5307c..1ec6c3f 100644 --- a/ubl-settings-resourcequota_ru.po +++ b/ubl-settings-resourcequota_ru.po @@ -20,14 +20,17 @@ msgstr "" #: source/ubl-strings.h:8 #: source/ubl-strings.h:1 +msgid "Open documentation" +msgstr "Прочитать справку" + +msgid "Config loading failed" +msgstr "Не удалось загрузить конфигурацию" + msgid "" "Warning! Application was launched without root - root-dependent actions are " "locked" msgstr "Внимание! Приложение было запущено без прав суперпользователя - действия, требующие их наличия заблокированы" -msgid "Config loading failed" -msgstr "Не удалось загрузить конфигурацию" - msgid "Quota deleted" msgstr "Квота удалена" -- 2.35.1 From a716abbe477f585d709ab3678c61b111e68660be Mon Sep 17 00:00:00 2001 From: Igor Belitskiy Date: Mon, 3 Jul 2023 17:52:37 +0600 Subject: [PATCH 67/91] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB=20=D0=BE=D1=88=D0=B8=D0=B1=D0=BA=D1=83=20=D1=81=20?= =?UTF-8?q?=D0=B3=D1=80=D1=83=D0=BF=D0=BF=D0=B0=D0=BC=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/ubl-settings-resourcequota.c | 17 +---------------- source/ubl-settings-resourcequota.h | 1 - source/view_add.c | 10 +--------- ubl-settings-resourcequota.glade | 4 +--- 4 files changed, 3 insertions(+), 29 deletions(-) diff --git a/source/ubl-settings-resourcequota.c b/source/ubl-settings-resourcequota.c index bc87ac7..703fa5d 100644 --- a/source/ubl-settings-resourcequota.c +++ b/source/ubl-settings-resourcequota.c @@ -244,14 +244,10 @@ void main_update_information() { } else if (menu_id == 1) { - fill_cmb_2 = yon_config_load(CMD_GET_GROUP, &size); - philos_array_string_remove_char(&fill_cmb_2, "\n", size); - } - else if (menu_id == 2) { fill_cmb_2 = philos_pars_terminal_systemd_cgls(CMD_GET_SLICE_SERVICE, ".service", &size); philos_array_string_remove_char(&fill_cmb_2, "\n", size); } - else if (menu_id == 3) { + else if (menu_id == 2) { fill_cmb_2 = philos_pars_terminal_systemd_cgls(CMD_GET_SLICE_SERVICE, ".slice", &size); philos_array_string_remove_char(&fill_cmb_2, "\n", size); } @@ -421,15 +417,6 @@ void str_split_key(char* source_value, int index) { main_config.type_quota = yon_char_parsed_append(main_config.type_quota, &index, STR_USER); index--; } - // Группа - else { - main_config.type_quota_size = philos_int_append(main_config.type_quota_size, &index, 1); - index--; - main_config.quota_volume = yon_char_parsed_append(main_config.quota_volume, &index, value); - index--; - main_config.type_quota = yon_char_parsed_append(main_config.type_quota, &index, STR_GROUP); - index--; - } } } @@ -1280,8 +1267,6 @@ int main(int argc, char *argv[]){ main_config.lock_save_local=1; } gtk_init(&argc,&argv); - - add_get_cmd_group(CMD_GET_GROUP); add_get_systemd_cgls(CMD_GET_SLICE_SERVICE); gtk_init(&argc,&argv); device_disk_parsed(); diff --git a/source/ubl-settings-resourcequota.h b/source/ubl-settings-resourcequota.h index bdb4c82..e065fe1 100755 --- a/source/ubl-settings-resourcequota.h +++ b/source/ubl-settings-resourcequota.h @@ -42,7 +42,6 @@ #define CMD_REMOVE_SYSTEM "ubconfig --target system remove security " #define CMD_GET_SLICE_SERVICE "systemd-cgls --no-page" -#define CMD_GET_GROUP "cut -d: -f1 /etc/group" typedef char *string; string version_application; diff --git a/source/view_add.c b/source/view_add.c index 772fa99..beffe5a 100644 --- a/source/view_add.c +++ b/source/view_add.c @@ -126,10 +126,6 @@ void add_event(temp_set_window *widgets) { g_signal_connect(G_OBJECT(widgets->chbTempWrite), "toggled", G_CALLBACK(event_check_io_device), NULL); } - -void add_get_cmd_group(char* cmd_get_group) { - CMD_GET_GROUP = cmd_get_group; -} void add_get_systemd_cgls(char* cmd_systemd_cgls) { CMD_GET_SLICE_SERVICE = cmd_systemd_cgls; } @@ -283,14 +279,10 @@ void add_update_combo_box() { } else if (menu_id == 1) { - fill_cmb_2 = yon_config_load(CMD_GET_GROUP, &size); - philos_array_string_remove_char(&fill_cmb_2, "\n", size); - } - else if (menu_id == 2) { fill_cmb_2 = philos_pars_terminal_systemd_cgls(CMD_GET_SLICE_SERVICE, ".service", &size); philos_array_string_remove_char(&fill_cmb_2, "\n", size); } - else if (menu_id == 3) { + else if (menu_id == 2) { fill_cmb_2 = philos_pars_terminal_systemd_cgls(CMD_GET_SLICE_SERVICE, ".slice", &size); philos_array_string_remove_char(&fill_cmb_2, "\n", size); } diff --git a/ubl-settings-resourcequota.glade b/ubl-settings-resourcequota.glade index 8bcbe70..d920255 100644 --- a/ubl-settings-resourcequota.glade +++ b/ubl-settings-resourcequota.glade @@ -1,5 +1,5 @@ - + @@ -256,7 +256,6 @@ 0 User - Group Process Slice @@ -3538,7 +3537,6 @@ limit 0 User - Group Process Slice -- 2.35.1 From 9ec912d553baca9a7ce8a44c03d99cdbe525696a Mon Sep 17 00:00:00 2001 From: Igor Belitskiy Date: Mon, 3 Jul 2023 18:01:03 +0600 Subject: [PATCH 68/91] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=BE=20=D0=B7=D0=B0=D0=BF=D0=BE=D0=BB=D0=BD?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=B2=20=D1=82=D0=B0=D0=B1=D0=BB?= =?UTF-8?q?=D0=B8=D1=86=D0=B5=20=D1=81=D0=BB=D0=B0=D0=B9=D1=81=D0=B0=20?= =?UTF-8?q?=D0=B8=20=D1=81=D0=B5=D1=80=D0=B2=D0=B8=D1=81=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/ubl-settings-resourcequota.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/source/ubl-settings-resourcequota.c b/source/ubl-settings-resourcequota.c index 703fa5d..e78cf56 100644 --- a/source/ubl-settings-resourcequota.c +++ b/source/ubl-settings-resourcequota.c @@ -383,17 +383,17 @@ void str_split_key(char* source_value, int index) { if (strstr(value, ".slice") != NULL) { main_config.quota_volume = yon_char_parsed_append(main_config.quota_volume, &index, value); index--; - main_config.type_quota_size = philos_int_append(main_config.type_quota_size, &index, 4); + main_config.type_quota_size = philos_int_append(main_config.type_quota_size, &index, 2); index--; - main_config.type_quota = yon_char_parsed_append(main_config.type_quota, &index, STR_PROCESS); + main_config.type_quota = yon_char_parsed_append(main_config.type_quota, &index, STR_SLICE); index--; } else if (strstr(value, ".service") != NULL) { main_config.quota_volume = yon_char_parsed_append(main_config.quota_volume, &index, value); index--; - main_config.type_quota_size = philos_int_append(main_config.type_quota_size, &index, 3); + main_config.type_quota_size = philos_int_append(main_config.type_quota_size, &index, 1); index--; - main_config.type_quota = yon_char_parsed_append(main_config.type_quota, &index, STR_SLICE); + main_config.type_quota = yon_char_parsed_append(main_config.type_quota, &index, STR_PROCESS); index--; } else { @@ -410,7 +410,7 @@ void str_split_key(char* source_value, int index) { for (int user_index = 0; user_index < user_size; user_index++) { // Пользователь if (strstr(arr_users[user_index], value) != NULL) { - main_config.type_quota_size = philos_int_append(main_config.type_quota_size, &index, -1); + main_config.type_quota_size = philos_int_append(main_config.type_quota_size, &index, 0); index--; main_config.quota_volume = yon_char_parsed_append(main_config.quota_volume, &index, value); index--; -- 2.35.1 From f98ad8b4310fd87517115df478fa6d2cb0ce00b3 Mon Sep 17 00:00:00 2001 From: Igor Belitskiy Date: Tue, 4 Jul 2023 10:36:38 +0600 Subject: [PATCH 69/91] =?UTF-8?q?=D0=A7=D0=B0=D1=81=D1=82=D0=B8=D1=87?= =?UTF-8?q?=D0=BD=D0=BE=20=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=B8=D0=BB?= =?UTF-8?q?=20=D0=B7=D0=B0=D0=B4=D0=B0=D1=87=D1=83=20=E2=84=9613?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/ubl-settings-resourcequota.c | 41 +++++++++++++---------------- 1 file changed, 19 insertions(+), 22 deletions(-) diff --git a/source/ubl-settings-resourcequota.c b/source/ubl-settings-resourcequota.c index e78cf56..cb76684 100644 --- a/source/ubl-settings-resourcequota.c +++ b/source/ubl-settings-resourcequota.c @@ -1,4 +1,5 @@ #include "ubl-settings-resourcequota.h" +#include "ubl-utils.h" config main_config; main_window *widgets; @@ -611,7 +612,6 @@ void tree_view_add(int index) { main_config.i_o_limit_write = yon_remalloc(main_config.i_o_limit_write, (main_config.size_tree_view + 1) * sizeof(int*)); main_config.i_o_limit_write_size = yon_remalloc(main_config.i_o_limit_write_size, (main_config.size_tree_view + 1) * sizeof(int*)); - main_config.disk = yon_remalloc(main_config.disk, (main_config.size_tree_view + 1) * sizeof(char**)); philos_array_int_copy(&main_config.i_o_limit_write[main_config.size_tree_view], add_get_write_device()); philos_array_int_copy(&main_config.i_o_limit_write_size[main_config.size_tree_view], add_get_write_device_size_pow()); @@ -670,9 +670,16 @@ char* format_io_limit_in_tree_view(config_str* disk, int** i_o_limit, int** i_o_ if (!strstr(str, "-")) { char* num_and_pow_size = philos_format_cfg_str_size_memory(" ", i_o_limit[index][index_to_n2] , i_o_limit_size[index][index_to_n2]); if (!strstr(num_and_pow_size, "-")) { - str = yon_char_unite(str, ",", - disk[index][index_to_n2], " ", - num_and_pow_size, NULL); + if (strlen(str)>3) { + str = yon_char_unite(str, ",", + disk[index][index_to_n2], + num_and_pow_size, NULL); + } + else { + str = yon_char_unite(disk[index][index_to_n2], + num_and_pow_size, NULL); + } + } free(num_and_pow_size); } @@ -683,7 +690,7 @@ char* format_io_limit_in_tree_view(config_str* disk, int** i_o_limit, int** i_o_ char* num_and_pow_size = philos_format_cfg_str_size_memory(" ", i_o_limit[index][index_to_n2], i_o_limit_size[index][index_to_n2]); if (!strstr(num_and_pow_size, "-")) { str = yon_char_unite(str, - disk[index][index_to_n2], " ", + disk[index][index_to_n2], num_and_pow_size, NULL); } free(num_and_pow_size); @@ -1043,25 +1050,15 @@ char* add_io_str_format_ubconfig(char* key, int** i_o_limit, int** i_o_limit_s if (i_o_limit_size[index] == NULL) {return NULL;} if (i_o_limit[index] == NULL) {return NULL;} int len_array = 0; - for (int i = 0;i_o_limit[index][i] != -2; i++) { - len_array += 1; - } - for (int i=0; i= 0 && read_disk && read_limit_size >= 0) { - if (i==0 && strlen(cmd_io) < 3) { - cmd_io = yon_char_unite(cmd_io, key, "=", NULL); - } - char* num_and_pow_size = philos_format_cfg_str_size_memory("",read_limit, read_limit_size); - cmd_io = yon_char_unite(cmd_io, split_simvol, read_disk, " ",num_and_pow_size, NULL); - split_simvol[0] = ','; - split_simvol[1] = '\0'; - free(num_and_pow_size); - } + cmd_io = format_io_limit_in_tree_view(disk, i_o_limit, i_o_limit_size, index); + if (strlen(cmd_io) > 5) { + return yon_char_unite(key, "=", cmd_io, NULL); + } + else { + return yon_char_new(""); } return cmd_io; + } -- 2.35.1 From aa3864f6653bb84db04f1e8c830a345d74e6ac72 Mon Sep 17 00:00:00 2001 From: Igor Belitskiy Date: Tue, 4 Jul 2023 18:03:56 +0600 Subject: [PATCH 70/91] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB=20=D0=BF=D0=B0=D1=80=D1=81=D0=B5=D1=80=20=D0=BA?= =?UTF-8?q?=D0=BE=D0=BD=D1=84=D0=B8=D0=B3=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/philos_utils.c | 92 +++++++++++++++++++++++++---- source/philos_utils.h | 2 + source/ubl-settings-resourcequota.c | 82 ++++++++++++++----------- 3 files changed, 130 insertions(+), 46 deletions(-) diff --git a/source/philos_utils.c b/source/philos_utils.c index e34f4e8..1974254 100644 --- a/source/philos_utils.c +++ b/source/philos_utils.c @@ -14,38 +14,80 @@ void philos_set_pow_size_memory(char* str_find, int** array_size,int index, char char* STR_TB = array_size_pow[3]; size_t length = strlen(str_find); if (strstr(str_find,"K") != NULL) { - *array_size = philos_int_append(*array_size, &index, 0); + if (index!=-1) { + *array_size = philos_int_append(*array_size, &index, 0); + } + else { + philos_array_int_pars_to(array_size,0); + } str_find = yon_char_divide(str_find, length-1); str_find = yon_char_unite(str_find, " ", STR_KB, NULL); - index--; + if (index!=-1) { + index--; + } } else if (strstr(str_find,"M") != NULL) { - *array_size = philos_int_append(*array_size, &index, 1); + if (index!=-1) { + *array_size = philos_int_append(*array_size, &index, 1); + } + else { + philos_array_int_pars_to(array_size,1); + } str_find = yon_char_divide(str_find, length-1); str_find = yon_char_unite(str_find," ", STR_MB, NULL); - index--; + if (index!=-1) { + index--; + } } else if (strstr(str_find,"G") != NULL) { - *array_size = philos_int_append(*array_size, &index, 2); + if (index!=-1) { + *array_size = philos_int_append(*array_size, &index, 2); + } + else { + philos_array_int_pars_to(array_size,2); + } str_find = yon_char_divide(str_find, length-1); str_find = yon_char_unite(str_find," ", STR_GB, NULL); - index--; + if (index!=-1) { + index--; + } } else if (strstr(str_find,"T") != NULL) { - *array_size = philos_int_append(*array_size, &index, 3); + if (index!=-1) { + *array_size = philos_int_append(*array_size, &index, 3); + } + else { + philos_array_int_pars_to(array_size,3); + } str_find = yon_char_divide(str_find, length-1); str_find = yon_char_unite(str_find," ", STR_TB, NULL); - index--; + if (index!=-1) { + index--; + } } else if (strstr(str_find,"%%") != NULL) { - *array_size = philos_int_append(*array_size, &index, -1); + if (index!=-1) { + *array_size = philos_int_append(*array_size, &index, -1); + } + else { + philos_array_int_pars_to(array_size,-1); + } str_find = yon_char_divide(str_find, length-1); - index--; + if (index!=-1) { + index--; + } } else if (strstr(str_find,"-") != NULL) { - *array_size = philos_int_append(*array_size, &index, -1); - index--; + if (index!=-1) { + *array_size = philos_int_append(*array_size, &index, -1); + } + else { + philos_array_int_pars_to(array_size,-1); + } + if (index!=-1) { + index--; + } } } @@ -990,4 +1032,28 @@ int philos_config_save(char *command) { FILE *output = popen(command, "r"); return 1; -} \ No newline at end of file +} + +void philos_array_int_pars_to(int** array, int to) { + int flag = 0; + int i = 0; + for (i = 0; (*array)[i] != -2; i++) { + if ((*array)[i]==-3) { + (*array)[i] = to; + flag = 1; + break; + } + } +} + +void philos_array_char_pars_to(char*** array, char* to) { + int flag = 0; + int i = 0; + for (i = 0; (*array)[i] != NULL; i++) { + if (strcmp((*array)[i], "-") == 0) { + (*array)[i] = yon_char_new(to); + flag = 1; + break; + } + } +} diff --git a/source/philos_utils.h b/source/philos_utils.h index b91cda2..56fc4a3 100644 --- a/source/philos_utils.h +++ b/source/philos_utils.h @@ -109,4 +109,6 @@ dictionary *yon_dictionary_create_conneced(dictionary *targetdict); void yon_int_array_append(int **source, int append); static void child_ready(VteTerminal *terminal, GPid pid, GError *error, gpointer user_data); int philos_config_save(char *command); +void philos_array_int_pars_to(int** array, int to); +void philos_array_char_pars_to(char*** array, char* to); #endif \ No newline at end of file diff --git a/source/ubl-settings-resourcequota.c b/source/ubl-settings-resourcequota.c index cb76684..96ef93d 100644 --- a/source/ubl-settings-resourcequota.c +++ b/source/ubl-settings-resourcequota.c @@ -352,9 +352,12 @@ void init_cfg_array(int index) { int* array_limit = NULL; char** array_disk = NULL; int index_n2 = 0; - array_limit = philos_int_append(array_limit, &index_n2, -3); - index_n2--; - array_disk = yon_char_parsed_append(array_disk, &index_n2, "-"); + for (int index = 0; index < get_device_cfg()->size_disk; index++) { + array_limit = philos_int_append(array_limit, &index_n2, -3); + index_n2--; + array_disk = yon_char_parsed_append(array_disk, &index_n2, "-"); + + } array_limit = philos_int_append(array_limit, &index_n2, -2); index_n2--; array_disk = yon_char_parsed_append(array_disk, &index_n2, NULL); @@ -460,13 +463,22 @@ void str_split_value(char* values, int index) { set_size_memory_integer(yon_char_new(value), &main_config.cpu_limit, index); } } -} +} void get_param_io_limit(char** arr_values, int index_start, int size, int index_n1, char *key_find) { int* array_limit = NULL; char** array_disk = NULL; int* array_limit_size = NULL; + if (strstr(key_find, "IOReadBandwidthMax")!=NULL) { + array_limit = main_config.i_o_limit_read[index_n1]; + array_limit_size = main_config.i_o_limit_read_size[index_n1]; + } + else { + array_limit = main_config.i_o_limit_write[index_n1]; + array_limit_size = main_config.i_o_limit_write_size[index_n1]; + } + array_disk = main_config.disk[index_n1]; int index_n2 = 0; int flag_parsed = 0; int flag_exit = 0; @@ -477,10 +489,10 @@ void get_param_io_limit(char** arr_values, int index_start, int size, int index_ 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, disk); + philos_array_char_pars_to(&array_disk, disk); index_n2--; - philos_set_pow_size_memory(yon_char_new(value), &array_limit_size, index_n2, array_size_pow); - set_size_memory_integer(yon_char_new(value), &array_limit, index_n2); + philos_set_pow_size_memory(yon_char_new(value), &array_limit_size, -1, array_size_pow); + set_size_memory_integer(yon_char_new(value), &array_limit, -1); flag_parsed = 1; index_n2++; } @@ -493,10 +505,10 @@ void get_param_io_limit(char** arr_values, int index_start, int size, int index_ } 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, disk); + philos_array_char_pars_to(&array_disk, disk); index_n2--; - philos_set_pow_size_memory(yon_char_new(arr_values[i]), &array_limit_size, index_n2, array_size_pow); - set_size_memory_integer(yon_char_new(arr_values[i]), &array_limit, index_n2); + philos_set_pow_size_memory(yon_char_new(arr_values[i]), &array_limit_size, -1, array_size_pow); + set_size_memory_integer(yon_char_new(arr_values[i]), &array_limit, -1); index_n2++; } else if (flag_exit == 1) { @@ -504,26 +516,17 @@ void get_param_io_limit(char** arr_values, int index_start, int size, int index_ } } if (index_n2 != 0) { - array_limit = philos_int_append(array_limit, &index_n2, -2); - index_n2--; - array_disk = yon_char_parsed_append(array_disk, &index_n2, NULL); - index_n2--; - array_limit_size = philos_int_append(array_limit_size, &index_n2, -2); - if (strstr(key_find, "IOReadBandwidthMax")!=NULL) { - main_config.i_o_limit_read = yon_remalloc(main_config.i_o_limit_read, (index_n1 + 1) * sizeof(int*)); - main_config.i_o_limit_read_size = yon_remalloc(main_config.i_o_limit_read_size, (index_n1 + 1) * sizeof(int*)); - main_config.disk = yon_remalloc(main_config.disk, (index_n1 + 1) * sizeof(char**)); - philos_array_int_copy(&main_config.i_o_limit_read[index_n1], &array_limit); - philos_array_int_copy(&main_config.i_o_limit_read_size[index_n1], &array_limit_size); - yon_char_parsed_copy(&main_config.disk[index_n1], &array_disk); - } - else { - main_config.i_o_limit_write = yon_remalloc(main_config.i_o_limit_write, (index_n1 + 1) * sizeof(int*)); - main_config.i_o_limit_write_size = yon_remalloc(main_config.i_o_limit_write_size, (index_n1 + 1) * sizeof(int*)); - main_config.disk = yon_remalloc(main_config.disk, (index_n1 + 1) * sizeof(char**)); - philos_array_int_copy(&main_config.i_o_limit_write[index_n1], &array_limit); - philos_array_int_copy(&main_config.i_o_limit_write_size[index_n1], &array_limit_size); - yon_char_parsed_copy(&main_config.disk[index_n1], &array_disk); + if (strstr(key_find, "BandwidthMax")!=NULL) { + if (strstr(key_find, "IOReadBandwidthMax")!=NULL) { + philos_array_int_copy(&main_config.i_o_limit_read[index_n1], &array_limit); + philos_array_int_copy(&main_config.i_o_limit_read_size[index_n1], &array_limit_size); + yon_char_parsed_copy(&main_config.disk[index_n1], &array_disk); + } + else { + philos_array_int_copy(&main_config.i_o_limit_write[index_n1], &array_limit); + philos_array_int_copy(&main_config.i_o_limit_write_size[index_n1], &array_limit_size); + yon_char_parsed_copy(&main_config.disk[index_n1], &array_disk); + } } philos_free_int_array(&array_limit, index_n2); philos_free_string_array(&array_disk, index_n2); @@ -532,6 +535,7 @@ void get_param_io_limit(char** arr_values, int index_start, int size, int index_ else { } + } void set_size_memory_integer(char* str_find, int** array_data, int index) { @@ -545,10 +549,20 @@ void set_size_memory_integer(char* str_find, int** array_data, int index) { } } if (strstr(str_find, "-")==NULL) { - *array_data = philos_int_append(*array_data, &index, atoi(str_find)); + if (index!=-1) { + *array_data = philos_int_append(*array_data, &index, atoi(str_find)); + } + else { + philos_array_int_pars_to(array_data,atoi(str_find)); + } } else { - *array_data = philos_int_append(*array_data, &index, -1); + if (index!=-1) { + *array_data = philos_int_append(*array_data, &index, -1); + } + else { + philos_array_int_pars_to(array_data,atoi(str_find)); + } } @@ -696,11 +710,12 @@ char* format_io_limit_in_tree_view(config_str* disk, int** i_o_limit, int** i_o_ free(num_and_pow_size); } } - index_to_n2++; + } else { break; } + index_to_n2++; } else { break; @@ -1278,6 +1293,7 @@ int main(int argc, char *argv[]){ yon_ubl_status_box_setup(widgets->StatusIcon,widgets->StatusBox,widgets->StatusLabel); if (getuid()!=0) { yon_ubl_status_box_render(ROOT_WARNING_LABEL,BACKGROUND_IMAGE_FAIL_TYPE); + load_system_cfg(); } else { yon_ubl_status_box_render(LOAD_LOCAL_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE); -- 2.35.1 From 60f1d35389f6e6924fcc504ed82f0fbbc0167452 Mon Sep 17 00:00:00 2001 From: Igor Belitskiy Date: Tue, 4 Jul 2023 18:11:20 +0600 Subject: [PATCH 71/91] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8?= =?UTF-8?q?=D0=BB=20pkexec=20=D0=B2=20desktop?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ubl-settings-resourcequota.desktop | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ubl-settings-resourcequota.desktop b/ubl-settings-resourcequota.desktop index 9d7483e..32ab4e6 100644 --- a/ubl-settings-resourcequota.desktop +++ b/ubl-settings-resourcequota.desktop @@ -7,7 +7,7 @@ GenericName[ru]=Квоты процессора и ОЗУ Comment=Configuring CPU and RAM quota settings for groups and users of the system Comment[ru]=Настройка параметров квот процессорного времени и ОЗУ для групп и пользователей системы Type=Application -Exec=ubl-settings-resourcequota +Exec=pkexec ubl-settings-resourcequota Icon=com.ublinux.ubl-settings-resourcequota Terminal=false X-XfcePluggable=true -- 2.35.1 From fba4bc9811a85aac6019675b1f069dc5c0010db1 Mon Sep 17 00:00:00 2001 From: Igor Belitskiy Date: Tue, 4 Jul 2023 18:26:20 +0600 Subject: [PATCH 72/91] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB=20=D0=B8=D0=BD=D0=B8=D1=86=D0=B8=D0=B0=D0=BB=D0=B8?= =?UTF-8?q?=D0=B7=D0=B0=D1=86=D0=B8=D1=8E=20=D0=BC=D0=B0=D1=81=D1=81=D0=B8?= =?UTF-8?q?=D0=B2=D0=B0=20=D0=B4=D0=BB=D1=8F=20=D1=83=D1=81=D1=82=D1=80?= =?UTF-8?q?=D0=BE=D0=B9=D1=81=D1=82=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/ubl-settings-resourcequota.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/source/ubl-settings-resourcequota.c b/source/ubl-settings-resourcequota.c index 96ef93d..395e5b5 100644 --- a/source/ubl-settings-resourcequota.c +++ b/source/ubl-settings-resourcequota.c @@ -352,15 +352,16 @@ void init_cfg_array(int index) { int* array_limit = NULL; char** array_disk = NULL; int index_n2 = 0; - for (int index = 0; index < get_device_cfg()->size_disk; index++) { + for (int index = 0; index < (get_device_cfg()->size_disk*2); index++) { array_limit = philos_int_append(array_limit, &index_n2, -3); - index_n2--; - array_disk = yon_char_parsed_append(array_disk, &index_n2, "-"); - } array_limit = philos_int_append(array_limit, &index_n2, -2); - index_n2--; + index_n2 = 0; + for (int index = 0; index < get_device_cfg()->size_disk; index++) { + array_disk = yon_char_parsed_append(array_disk, &index_n2, "-"); + } array_disk = yon_char_parsed_append(array_disk, &index_n2, NULL); + index_n2 = 0; main_config.i_o_limit_read = yon_remalloc(main_config.i_o_limit_read, (index + 1) * sizeof(int*)); main_config.i_o_limit_read_size = yon_remalloc(main_config.i_o_limit_read_size, (index + 1) * sizeof(int*)); main_config.disk = yon_remalloc(main_config.disk, (index + 1) * sizeof(char**)); -- 2.35.1 From 0c77eb11c46a9bffb4893ca379381088ca1b4b77 Mon Sep 17 00:00:00 2001 From: Igor Belitskiy Date: Tue, 4 Jul 2023 18:28:59 +0600 Subject: [PATCH 73/91] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8?= =?UTF-8?q?=D0=BB=20=D1=81=20=D1=81=D1=82=D1=80=D1=83=D0=BA=D1=82=D1=83?= =?UTF-8?q?=D1=80=D1=83=20=D0=BC=D0=B0=D1=81=D1=81=D0=B8=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/ubl-settings-resourcequota.c | 2 +- source/ubl-settings-resourcequota.h | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/source/ubl-settings-resourcequota.c b/source/ubl-settings-resourcequota.c index 395e5b5..57706c9 100644 --- a/source/ubl-settings-resourcequota.c +++ b/source/ubl-settings-resourcequota.c @@ -357,7 +357,7 @@ void init_cfg_array(int index) { } array_limit = philos_int_append(array_limit, &index_n2, -2); index_n2 = 0; - for (int index = 0; index < get_device_cfg()->size_disk; index++) { + for (int index = 0; index < (get_device_cfg()->size_disk*2); index++) { array_disk = yon_char_parsed_append(array_disk, &index_n2, "-"); } array_disk = yon_char_parsed_append(array_disk, &index_n2, NULL); diff --git a/source/ubl-settings-resourcequota.h b/source/ubl-settings-resourcequota.h index e065fe1..aa4d0f3 100755 --- a/source/ubl-settings-resourcequota.h +++ b/source/ubl-settings-resourcequota.h @@ -82,6 +82,8 @@ typedef struct int** i_o_limit_read; int** i_o_limit_write; config_str* disk; + config_str* disk_read; + config_str* disk_write; config_str array_del_line; int size_array_del_line; -- 2.35.1 From ab4cc2f3a5f751ebfb39de71bedb57fb9b03ebd6 Mon Sep 17 00:00:00 2001 From: Igor Belitskiy Date: Wed, 5 Jul 2023 11:07:57 +0600 Subject: [PATCH 74/91] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB=20=D0=BF=D0=B0=D1=80=D1=81=D0=B5=D1=80=20=D0=BA?= =?UTF-8?q?=D0=BE=D0=BD=D1=84=D0=B8=D0=B3=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/philos_utils.c | 242 ++++++++++++++++++---------- source/philos_utils.h | 14 +- source/ubl-settings-resourcequota.c | 78 +++++---- source/ubl-settings-resourcequota.h | 1 - source/view_add.c | 51 ++++-- source/view_add.h | 5 +- source/view_edit.c | 85 +++++++--- source/view_edit.h | 9 +- 8 files changed, 317 insertions(+), 168 deletions(-) diff --git a/source/philos_utils.c b/source/philos_utils.c index 1974254..884bd6a 100644 --- a/source/philos_utils.c +++ b/source/philos_utils.c @@ -390,20 +390,20 @@ char** philos_pars_terminal_systemd_cgls(char* CMD_GET_SLICE_SERVICE, char* str_ } return array_data; } -char* philos_pard_array_add_cmd(char* cmd, temp_config* _config, char* key, int* array_io, int* array_io_pow_size) { +char* philos_pard_array_add_cmd(char* cmd, temp_config* _config, char* key, int* array_io, int* array_io_pow_size, char** disk, int size) { char* split_simvol = g_malloc0(sizeof(char)*2); int flag_format = 0; char* cmd_old = yon_char_new(cmd); char* cmd_new = ""; - if (_config->disk && _config->size && array_io && array_io_pow_size) { + if (disk && size && array_io && array_io_pow_size) { int index_find = 0; - for (int index = 0; index < _config->size; index++) { + for (int index = 0; index < size; index++) { if (array_io_pow_size[index] >= 0 && array_io[index]>= 0) { char* num_and_pow_size = philos_format_cfg_str_size_memory(" ", array_io[index], array_io_pow_size[index]); if (!strstr(num_and_pow_size, "-")) { cmd_new = yon_char_unite(cmd_new, split_simvol, - _config->disk[index], + disk[index], num_and_pow_size, NULL); split_simvol[0] = ','; split_simvol[1] = '\0'; @@ -431,12 +431,12 @@ char* philos_pard_array_add_cmd(char* cmd, temp_config* _config, char* key, int* } } -int philos_check_activ_disk(temp_set_window *widgets, temp_config* _config) { +int philos_check_activ_disk(temp_set_window *widgets, temp_config* _config, int flag_check_array) { char* disk = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(widgets->cbtTempDevice)); disk = yon_char_divide_search(disk," ", -1); int bool_read = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->chbTempRead)); int bool_write = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->chbTempWrite)); - if (disk == NULL || _config->size == 0) { + if (disk == NULL || (_config->size_read == 0 && flag_check_array == 0) && (_config->size_write == 0 && flag_check_array==1)) { return 0; } return 1; @@ -483,28 +483,43 @@ void philos_temp_generate_cmd(temp_set_window *widgets, temp_config* _config) { split_simvol[1] = '\0'; } if (gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->cbtTempDevice))!=-1) { - if (_config->size!=0) { - str_cmd = philos_pard_array_add_cmd(str_cmd, _config, "IOReadBandwidthMax=", _config->i_o_limit_read, _config->i_o_limit_read_size); - str_cmd = philos_pard_array_add_cmd(str_cmd, _config, "IOWriteBandwidthMax=", _config->i_o_limit_write, _config->i_o_limit_write_size); + if (_config->size_read!=0) { + str_cmd = philos_pard_array_add_cmd(str_cmd, _config, "IOReadBandwidthMax=", _config->i_o_limit_read, _config->i_o_limit_read_size, _config->disk_read, _config->size_read); + + } + else if (_config->size_write!=0) { + str_cmd = philos_pard_array_add_cmd(str_cmd, _config, "IOWriteBandwidthMax=", _config->i_o_limit_write, _config->i_o_limit_write_size, _config->disk_write, _config->size_write); } } gtk_entry_set_text(GTK_ENTRY(widgets->entryTempCmd), str_cmd); free(split_simvol); } -void philos_temp_del_disk(temp_set_window *widgets, temp_config* _config) { +// flag_check_array = 0 READ +// flag_check_array = 1 WRITE +void philos_temp_del_disk(temp_set_window *widgets, temp_config* _config, int flag_check_array) { char* disk = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(widgets->cbtTempDevice)); disk = yon_char_divide_search(disk, " ", -1); int bool_read = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->chbTempRead)); int bool_write = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->chbTempWrite)); - if (philos_check_activ_disk(widgets, _config) == 0) { + char** ptr_disk = NULL; + int size = -1; + if (flag_check_array == 0) { + ptr_disk = _config->disk_read; + size = _config->size_read; + } + else if (flag_check_array == 1) { + ptr_disk = _config->disk_write; + size = _config->size_write; + } + if (philos_check_activ_disk(widgets, _config, flag_check_array) == 0) { return; } - if (_config->size) { + if (size) { int index_find = -1; - if (_config->disk) { - for (int index = 0; index < _config->size; index++) { - char* disk_cfg = _config->disk[index]; + if (ptr_disk) { + for (int index = 0; index < size; index++) { + char* disk_cfg = ptr_disk[index]; if (disk_cfg) { if (strstr(disk_cfg, disk) != NULL) { index_find = index; @@ -515,33 +530,50 @@ void philos_temp_del_disk(temp_set_window *widgets, temp_config* _config) { } if ((bool_read == 0 && bool_write == 0 && index_find != -1)) { - _config->disk = yon_char_parsed_shrink(_config->disk,&_config->size, index_find); - _config->size++; - _config->i_o_limit_read_size = remove_element_int_array(_config->i_o_limit_read_size,&_config->size, index_find); - _config->size++; - _config->i_o_limit_write_size = remove_element_int_array(_config->i_o_limit_write_size,&_config->size, index_find); - _config->size++; - _config->i_o_limit_read = remove_element_int_array(_config->i_o_limit_read,&_config->size, index_find); - _config->size++; - _config->i_o_limit_write = remove_element_int_array(_config->i_o_limit_write,&_config->size, index_find); + ptr_disk = yon_char_parsed_shrink(ptr_disk,&size, index_find); + size++; + _config->i_o_limit_read_size = remove_element_int_array(_config->i_o_limit_read_size,&size, index_find); + size++; + _config->i_o_limit_write_size = remove_element_int_array(_config->i_o_limit_write_size,&size, index_find); + size++; + _config->i_o_limit_read = remove_element_int_array(_config->i_o_limit_read,&size, index_find); + size++; + _config->i_o_limit_write = remove_element_int_array(_config->i_o_limit_write,&size, index_find); } - } + } + if (flag_check_array == 0) { + if (ptr_disk) { + _config->disk_read = ptr_disk; + _config->size_read = size; + } + } + else if (flag_check_array == 1) { + if (ptr_disk) { + _config->disk_write = ptr_disk; + _config->size_write = size; + } + } } void philos_temp_config_init(temp_config* _config) { - if (_config->size != 0) { - philos_free_string_array(&_config->disk, _config->size); - philos_free_int_array(&_config->i_o_limit_read, _config->size); - philos_free_int_array(&_config->i_o_limit_read_size, _config->size); - philos_free_int_array(&_config->i_o_limit_write, _config->size); - philos_free_int_array(&_config->i_o_limit_write_size, _config->size); - } - _config->disk = NULL; + if (_config->size_read != 0) { + philos_free_string_array(&_config->disk_read, _config->size_read); + philos_free_int_array(&_config->i_o_limit_read, _config->size_read); + philos_free_int_array(&_config->i_o_limit_read_size, _config->size_read); + } + else if (_config->size_write != 0) { + philos_free_string_array(&_config->disk_write, _config->size_write); + philos_free_int_array(&_config->i_o_limit_write, _config->size_write); + philos_free_int_array(&_config->i_o_limit_write_size, _config->size_write); + } + _config->disk_read = NULL; + _config->disk_write = NULL; _config->i_o_limit_read = NULL; _config->i_o_limit_write = NULL; _config->i_o_limit_read_size = NULL; _config->i_o_limit_write_size = NULL; - _config->size = 0; + _config->size_read = 0; + _config->size_write = 0; } // flag_check_array = 0 READ @@ -552,18 +584,34 @@ void philos_update_device_to_entry(temp_set_window *widgets, temp_config* _confi disk = yon_char_divide_search(disk, " ", -1); if (disk_id != -1) { int index_find = -1; - if (_config->disk) { - for (int index = 0; index < _config->size; index++) { - char* disk_cfg = _config->disk[index]; - if (disk_cfg) { - if (strstr(disk_cfg, disk) != NULL) { - index_find = index; - break; + if (flag_check_array == 0) { + if (_config->disk_read) { + for (int index = 0; index < _config->size_read; index++) { + char* disk_cfg = _config->disk_read[index]; + if (disk_cfg) { + if (strstr(disk_cfg, disk) != NULL) { + index_find = index; + break; + } + } + } + } + } + else if (flag_check_array == 1) { + if (_config->disk_write) { + for (int index = 0; index < _config->size_write; index++) { + char* disk_cfg = _config->disk_write[index]; + if (disk_cfg) { + if (strstr(disk_cfg, disk) != NULL) { + index_find = index; + break; + } } } } } + if (index_find != -1) { if (flag_check_array==0) { if (_config->i_o_limit_read[index_find]<0 || _config->i_o_limit_read_size[index_find]<0) { @@ -617,18 +665,29 @@ void philos_update_device_to_entry(temp_set_window *widgets, temp_config* _confi gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->cbtTempRead), 0); } } - -void philos_temp_add_disk(temp_set_window *widgets, temp_config* _config) { +// flag_check_array = 0 READ +// flag_check_array = 1 WRITE +void philos_temp_add_disk(temp_set_window *widgets, temp_config* _config, int flag_check_array) { char* disk = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(widgets->cbtTempDevice)); disk = yon_char_divide_search(disk, " ", -1); int disk_id = gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->cbtTempDevice)); int bool_read = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->chbTempRead)); int bool_write = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->chbTempWrite)); - if (disk_id >= 0 && _config->size !=0) { + char** ptr_disk = NULL; + int size = -1; + if (flag_check_array == 0) { + ptr_disk = _config->disk_read; + size = _config->size_read; + } + else if (flag_check_array == 1) { + ptr_disk = _config->disk_write; + size = _config->size_write; + } + if (disk_id >= 0 && size !=0) { int index_find = -1; - if (_config->disk){ - for (int index = 0; index < _config->size; index++) { - char* disk_cfg = _config->disk[index]; + if (ptr_disk){ + for (int index = 0; index < size; index++) { + char* disk_cfg = ptr_disk[index]; if (disk_cfg) { if (strstr(disk_cfg, disk) != NULL) { index_find = index; @@ -640,33 +699,33 @@ void philos_temp_add_disk(temp_set_window *widgets, temp_config* _config) { if (index_find == -1) { // Добавление - _config->disk = yon_char_parsed_append(_config->disk,&_config->size, disk); - _config->size--; + ptr_disk = yon_char_parsed_append(ptr_disk,&size, disk); + size--; if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->chbTempRead))) { - _config->i_o_limit_read_size = philos_int_append(_config->i_o_limit_read_size,&_config->size,(int)gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->cbtTempRead))); - _config->size--; - _config->i_o_limit_read = philos_int_append(_config->i_o_limit_read,&_config->size,gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(widgets->spinTempRead))); - _config->size--; + _config->i_o_limit_read_size = philos_int_append(_config->i_o_limit_read_size,&size,(int)gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->cbtTempRead))); + size--; + _config->i_o_limit_read = philos_int_append(_config->i_o_limit_read,&size,gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(widgets->spinTempRead))); + size--; } else { - _config->i_o_limit_read_size = philos_int_append(_config->i_o_limit_read_size,&_config->size,-3); - _config->size--; - _config->i_o_limit_read = philos_int_append(_config->i_o_limit_read,&_config->size,-3); - _config->size--; + _config->i_o_limit_read_size = philos_int_append(_config->i_o_limit_read_size,&size,-3); + size--; + _config->i_o_limit_read = philos_int_append(_config->i_o_limit_read,&size,-3); + size--; } if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->chbTempWrite))) { - _config->i_o_limit_write_size = philos_int_append(_config->i_o_limit_write_size,&_config->size,(int)gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->cbtTempWrite))); - _config->size--; - _config->i_o_limit_write = philos_int_append(_config->i_o_limit_write,&_config->size,gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(widgets->spinTempWrite))); - _config->size--; + _config->i_o_limit_write_size = philos_int_append(_config->i_o_limit_write_size,&size,(int)gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->cbtTempWrite))); + size--; + _config->i_o_limit_write = philos_int_append(_config->i_o_limit_write,&size,gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(widgets->spinTempWrite))); + size--; } else { - _config->i_o_limit_write_size = philos_int_append(_config->i_o_limit_write_size,&_config->size,-3); - _config->size--; - _config->i_o_limit_write = philos_int_append(_config->i_o_limit_write,&_config->size,-3); - _config->size--; + _config->i_o_limit_write_size = philos_int_append(_config->i_o_limit_write_size,&size,-3); + size--; + _config->i_o_limit_write = philos_int_append(_config->i_o_limit_write,&size,-3); + size--; } - _config->size++; + size--; } else { @@ -692,37 +751,50 @@ void philos_temp_add_disk(temp_set_window *widgets, temp_config* _config) { } else { if (bool_read == 1 || bool_write == 1) { - _config->disk = yon_char_parsed_append(_config->disk,&_config->size, disk); - _config->size--; + ptr_disk = yon_char_parsed_append(ptr_disk,&size, disk); + size--; if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->chbTempRead))) { - _config->i_o_limit_read_size = philos_int_append(_config->i_o_limit_read_size,&_config->size,(int)gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->cbtTempRead))); - _config->size--; - _config->i_o_limit_read = philos_int_append(_config->i_o_limit_read,&_config->size,gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(widgets->spinTempRead))); - _config->size--; + _config->i_o_limit_read_size = philos_int_append(_config->i_o_limit_read_size,&size,(int)gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->cbtTempRead))); + size--; + _config->i_o_limit_read = philos_int_append(_config->i_o_limit_read,&size,gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(widgets->spinTempRead))); + size--; } else { - _config->i_o_limit_read_size = philos_int_append(_config->i_o_limit_read_size,&_config->size,-3); - _config->size--; - _config->i_o_limit_read = philos_int_append(_config->i_o_limit_read,&_config->size,-3); - _config->size--; + _config->i_o_limit_read_size = philos_int_append(_config->i_o_limit_read_size,&size,-3); + size--; + _config->i_o_limit_read = philos_int_append(_config->i_o_limit_read,&size,-3); + size--; } if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->chbTempWrite))) { - _config->i_o_limit_write_size = philos_int_append(_config->i_o_limit_write_size,&_config->size,(int)gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->cbtTempWrite))); - _config->size--; - _config->i_o_limit_write = philos_int_append(_config->i_o_limit_write,&_config->size,gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(widgets->spinTempWrite))); - _config->size--; + _config->i_o_limit_write_size = philos_int_append(_config->i_o_limit_write_size,&size,(int)gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->cbtTempWrite))); + size--; + _config->i_o_limit_write = philos_int_append(_config->i_o_limit_write,&size,gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(widgets->spinTempWrite))); + size--; } else { - _config->i_o_limit_write_size = philos_int_append(_config->i_o_limit_write_size,&_config->size,-3); - _config->size--; - _config->i_o_limit_write = philos_int_append(_config->i_o_limit_write,&_config->size,-3); - _config->size--; + _config->i_o_limit_write_size = philos_int_append(_config->i_o_limit_write_size,&size,-3); + size--; + _config->i_o_limit_write = philos_int_append(_config->i_o_limit_write,&size,-3); + size--; } - _config->size++; + size++; } else { } } + if (flag_check_array == 0) { + if (ptr_disk) { + _config->disk_read = ptr_disk; + _config->size_read = size; + + } + } + else if (flag_check_array == 1) { + if (ptr_disk) { + _config->disk_write = ptr_disk; + _config->size_write = size; + } + } } int* philos_int_append(int* array, int* size, int value) { array = yon_remalloc(array, (*size+1)*sizeof(int)); diff --git a/source/philos_utils.h b/source/philos_utils.h index 56fc4a3..b7ebf6e 100644 --- a/source/philos_utils.h +++ b/source/philos_utils.h @@ -20,12 +20,14 @@ #define file_source_login_min_max "/etc/login.defs" static char** array_size_pow; typedef struct { - char** disk; + char** disk_read; + char** disk_write; int* i_o_limit_read; int* i_o_limit_write; int* i_o_limit_read_size; int* i_o_limit_write_size; - int size; + int size_write; + int size_read; } temp_config; typedef struct { @@ -82,13 +84,13 @@ char** philos_str_split(char *parameters, int *size, char *divider); void philos_array_str_copy(char*** source, char*** copy); void philos_array_int_copy(int** source, int** copy); char** philos_pars_terminal_systemd_cgls(char* CMD_GET_SLICE_SERVICE, char* str_find, int* size_array_data); -char* philos_pard_array_add_cmd(char* cmd, temp_config* _config, char* key, int* array_io, int* array_io_pow_size); -int philos_check_activ_disk(temp_set_window *widgets, temp_config* _config); +char* philos_pard_array_add_cmd(char* cmd, temp_config* _config, char* key, int* array_io, int* array_io_pow_size, char** disk, int size); +int philos_check_activ_disk(temp_set_window *widgets, temp_config* _config, int flag_check_array); void philos_temp_generate_cmd(temp_set_window *widgets, temp_config* _config); -void philos_temp_del_disk(temp_set_window *widgets, temp_config* _config); +void philos_temp_del_disk(temp_set_window *widgets, temp_config* _config, int flag_check_array); void philos_temp_config_init(temp_config* _config); void philos_update_device_to_entry(temp_set_window *widgets, temp_config* _config, int flag_check_array); -void philos_temp_add_disk(temp_set_window *widgets, temp_config* _config); +void philos_temp_add_disk(temp_set_window *widgets, temp_config* _config, int flag_check_array); int* philos_int_append(int* array, int* size, int value); int* remove_element_int_array(int* array, int* size, int item_to_delete); int** remove_element_int_array_n3(int** array, int* size, int item_to_delete); diff --git a/source/ubl-settings-resourcequota.c b/source/ubl-settings-resourcequota.c index 57706c9..a815d45 100644 --- a/source/ubl-settings-resourcequota.c +++ b/source/ubl-settings-resourcequota.c @@ -281,7 +281,8 @@ void clear_array() { philos_free_int_array(&main_config.cpu_limit, main_config.size_tree_view); philos_free_int_array_n2(&main_config.i_o_limit_read, main_config.size_tree_view); philos_free_int_array_n2(&main_config.i_o_limit_write, main_config.size_tree_view); - philos_free_string_array_n3(&main_config.disk, 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; @@ -299,7 +300,8 @@ void clear_array() { main_config.i_o_limit_read_size = NULL; main_config.i_o_limit_write = NULL; main_config.i_o_limit_write_size = NULL; - main_config.disk = NULL; + main_config.disk_write = NULL; + main_config.disk_read = NULL; main_config.size_tree_view = 0; } @@ -364,18 +366,18 @@ void init_cfg_array(int index) { index_n2 = 0; main_config.i_o_limit_read = yon_remalloc(main_config.i_o_limit_read, (index + 1) * sizeof(int*)); main_config.i_o_limit_read_size = yon_remalloc(main_config.i_o_limit_read_size, (index + 1) * sizeof(int*)); - main_config.disk = yon_remalloc(main_config.disk, (index + 1) * sizeof(char**)); + main_config.disk_read = yon_remalloc(main_config.disk_read, (index + 1) * sizeof(char**)); main_config.i_o_limit_write = yon_remalloc(main_config.i_o_limit_write, (index + 1) * sizeof(int*)); main_config.i_o_limit_write_size = yon_remalloc(main_config.i_o_limit_write_size, (index + 1) * sizeof(int*)); - main_config.disk = yon_remalloc(main_config.disk, (index + 1) * sizeof(char**)); + main_config.disk_write = yon_remalloc(main_config.disk_write, (index + 1) * sizeof(char**)); philos_array_int_copy(&main_config.i_o_limit_read[index], &array_limit); philos_array_int_copy(&main_config.i_o_limit_read_size[index], &array_limit); - yon_char_parsed_copy(&main_config.disk[index], &array_disk); + yon_char_parsed_copy(&main_config.disk_read[index], &array_disk); - philos_array_int_copy(&main_config.i_o_limit_write[main_config.size_tree_view], &array_limit); - philos_array_int_copy(&main_config.i_o_limit_write_size[main_config.size_tree_view], &array_limit); - yon_char_parsed_copy(&main_config.disk[main_config.size_tree_view], &array_disk); + philos_array_int_copy(&main_config.i_o_limit_write[index], &array_limit); + philos_array_int_copy(&main_config.i_o_limit_write_size[index], &array_limit); + yon_char_parsed_copy(&main_config.disk_write[index], &array_disk); philos_free_int_array(&array_limit, 1); philos_free_string_array(&array_disk, 1); } @@ -474,12 +476,16 @@ void get_param_io_limit(char** arr_values, int index_start, int size, int index_ if (strstr(key_find, "IOReadBandwidthMax")!=NULL) { array_limit = main_config.i_o_limit_read[index_n1]; array_limit_size = main_config.i_o_limit_read_size[index_n1]; + array_disk = main_config.disk_read[index_n1]; } - else { + else if (strstr(key_find, "IOWriteBandwidthMax")!=NULL) { array_limit = main_config.i_o_limit_write[index_n1]; array_limit_size = main_config.i_o_limit_write_size[index_n1]; + array_disk = main_config.disk_write[index_n1]; + } + else { + return; } - array_disk = main_config.disk[index_n1]; int index_n2 = 0; int flag_parsed = 0; int flag_exit = 0; @@ -521,12 +527,12 @@ void get_param_io_limit(char** arr_values, int index_start, int size, int index_ if (strstr(key_find, "IOReadBandwidthMax")!=NULL) { philos_array_int_copy(&main_config.i_o_limit_read[index_n1], &array_limit); philos_array_int_copy(&main_config.i_o_limit_read_size[index_n1], &array_limit_size); - yon_char_parsed_copy(&main_config.disk[index_n1], &array_disk); + yon_char_parsed_copy(&main_config.disk_read[index_n1], &array_disk); } - else { + else if (strstr(key_find, "IOWriteBandwidthMax")!=NULL) { philos_array_int_copy(&main_config.i_o_limit_write[index_n1], &array_limit); philos_array_int_copy(&main_config.i_o_limit_write_size[index_n1], &array_limit_size); - yon_char_parsed_copy(&main_config.disk[index_n1], &array_disk); + yon_char_parsed_copy(&main_config.disk_write[index_n1], &array_disk); } } philos_free_int_array(&array_limit, index_n2); @@ -620,11 +626,13 @@ void tree_view_add(int index) { main_config.i_o_limit_read = yon_remalloc(main_config.i_o_limit_read, (main_config.size_tree_view + 1) * sizeof(int*)); main_config.i_o_limit_read_size = yon_remalloc(main_config.i_o_limit_read_size, (main_config.size_tree_view + 1) * sizeof(int*)); - main_config.disk = yon_remalloc(main_config.disk, (main_config.size_tree_view + 1) * sizeof(char**)); + main_config.disk_read = yon_remalloc(main_config.disk_read, (main_config.size_tree_view + 1) * sizeof(char**)); + yon_char_parsed_copy(&main_config.disk_read[main_config.size_tree_view], add_get_select_read_device()); philos_array_int_copy(&main_config.i_o_limit_read[main_config.size_tree_view], add_get_read_device()); philos_array_int_copy(&main_config.i_o_limit_read_size[main_config.size_tree_view], add_get_read_device_size_pow()); - yon_char_parsed_copy(&main_config.disk[main_config.size_tree_view], add_get_select_device()); + main_config.disk_write = yon_remalloc(main_config.disk_write, (main_config.size_tree_view + 1) * sizeof(char**)); + yon_char_parsed_copy(&main_config.disk_write[main_config.size_tree_view], add_get_select_write_device()); main_config.i_o_limit_write = yon_remalloc(main_config.i_o_limit_write, (main_config.size_tree_view + 1) * sizeof(int*)); main_config.i_o_limit_write_size = yon_remalloc(main_config.i_o_limit_write_size, (main_config.size_tree_view + 1) * sizeof(int*)); philos_array_int_copy(&main_config.i_o_limit_write[main_config.size_tree_view], add_get_write_device()); @@ -655,8 +663,8 @@ void fill_tree_view(int start, int size, int flag_gui_add) { for (int index = start; index < size; index++) { GtkTreeIter iter; gtk_list_store_append(main_config.list,&iter); - char* str_io_read = format_io_limit_in_tree_view(main_config.disk, 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, main_config.i_o_limit_write, main_config.i_o_limit_write_size, index); + 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], @@ -746,7 +754,8 @@ int tree_view_edit() { philos_array_int_copy(&main_config.i_o_limit_read[index], edit_get_read_device()); philos_array_int_copy(&main_config.i_o_limit_read_size[index], edit_get_read_device_size_pow()); - yon_char_parsed_copy(&main_config.disk[index], edit_get_select_device()); + yon_char_parsed_copy(&main_config.disk_read[index], edit_get_select_read_device()); + yon_char_parsed_copy(&main_config.disk_write[index], edit_get_select_write_device()); philos_array_int_copy(&main_config.i_o_limit_write[index], edit_get_write_device()); philos_array_int_copy(&main_config.i_o_limit_write_size[index], edit_get_write_device_size_pow()); @@ -756,8 +765,8 @@ int tree_view_edit() { main_config.swap_size[index] = edit_get_limit_swap_size(); main_config.cpu_limit_size[index] = edit_get_limit_cpu_size(); - char* str_io_read = format_io_limit_in_tree_view(main_config.disk, 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, main_config.i_o_limit_write, main_config.i_o_limit_write_size, index); + 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], @@ -864,14 +873,21 @@ void wrapper_edit_show() { if(gtk_tree_selection_get_selected(selection, &model, &iter)) { char* str_iter = gtk_tree_model_get_string_from_iter(model, &iter); int index = atoi(str_iter); - size_t size_disk_array = 0; - if (main_config.disk) { - for (size_disk_array; main_config.disk[index][size_disk_array]; size_disk_array++) { + size_t size_disk_read_array = 0; + size_t size_disk_write_array = 0; + if (main_config.disk_read) { + for (size_disk_read_array=0; main_config.disk_read[index][size_disk_read_array]; size_disk_read_array++) { + } + } + if (main_config.disk_write) { + for (size_disk_write_array; main_config.disk_write[index][size_disk_write_array]; size_disk_write_array++) { } } edit_show(NULL, glade_path); - edit_set_size_arrays(size_disk_array); - edit_set_select_device(&main_config.disk[index]); + edit_set_size_arrays_read(size_disk_read_array); + edit_set_size_arrays_write(size_disk_write_array); + edit_set_select_read_device(&main_config.disk_read[index]); + edit_set_select_write_device(&main_config.disk_write[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_hard(main_config.hard_raw_limit[index], main_config.hard_raw_limit_size[index]); @@ -925,7 +941,9 @@ void tree_view_del_line() { main_config.size_tree_view++; main_config.i_o_limit_write = remove_element_int_array_n3(main_config.i_o_limit_write, &main_config.size_tree_view,index); main_config.size_tree_view++; - main_config.disk = yon_char_parsed_shrink_n3(main_config.disk, &main_config.size_tree_view,index); + main_config.disk_read = yon_char_parsed_shrink_n3(main_config.disk_read, &main_config.size_tree_view,index); + main_config.size_tree_view++; + main_config.disk_write = yon_char_parsed_shrink_n3(main_config.disk_write, &main_config.size_tree_view,index); main_config.size_tree_view++; main_config.i_o_limit_read_size = remove_element_int_array_n3(main_config.i_o_limit_read_size, &main_config.size_tree_view,index); @@ -1038,8 +1056,8 @@ char* save_format_value(int index) { split_simvol[1] = '\0'; } - char* value_read = add_io_str_format_ubconfig("IOReadBandwidthMax", main_config.i_o_limit_read, main_config.i_o_limit_read_size, main_config.disk, index); - char* value_write = add_io_str_format_ubconfig("IOWriteBandwidthMax", main_config.i_o_limit_write, main_config.i_o_limit_write_size, main_config.disk, index); + char* value_read = add_io_str_format_ubconfig("IOReadBandwidthMax", main_config.i_o_limit_read, main_config.i_o_limit_read_size, main_config.disk_read, index); + char* value_write = add_io_str_format_ubconfig("IOWriteBandwidthMax", main_config.i_o_limit_write, main_config.i_o_limit_write_size, main_config.disk_write, index); if (strlen(value_read) > 5){ if (strlen(value) > 5) { value = yon_char_unite(value, ",", value_read, NULL); @@ -1165,8 +1183,8 @@ void main_fill_tree_view_after_remove() { for (int index= 0; index < main_config.size_tree_view; index++) { GtkTreeIter iter; gtk_list_store_append(main_config.list,&iter); - char* str_io_read = format_io_limit_in_tree_view(main_config.disk, 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, main_config.i_o_limit_write, main_config.i_o_limit_write_size, index); + 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], diff --git a/source/ubl-settings-resourcequota.h b/source/ubl-settings-resourcequota.h index aa4d0f3..5d5e725 100755 --- a/source/ubl-settings-resourcequota.h +++ b/source/ubl-settings-resourcequota.h @@ -81,7 +81,6 @@ typedef struct int* cpu_limit; int** i_o_limit_read; int** i_o_limit_write; - config_str* disk; config_str* disk_read; config_str* disk_write; config_str array_del_line; diff --git a/source/view_add.c b/source/view_add.c index beffe5a..9ffadd3 100644 --- a/source/view_add.c +++ b/source/view_add.c @@ -72,8 +72,10 @@ void add_init_windows() { void event_check_io_device() { add_init_windows(); - philos_temp_add_disk(add_widgets, &obj_add_config); - philos_temp_del_disk(add_widgets, &obj_add_config); + philos_temp_add_disk(add_widgets, &obj_add_config, 0); + philos_temp_add_disk(add_widgets, &obj_add_config, 1); + philos_temp_del_disk(add_widgets, &obj_add_config, 0); + philos_temp_del_disk(add_widgets, &obj_add_config, 1); philos_temp_generate_cmd(add_widgets, &obj_add_config); } @@ -177,39 +179,54 @@ char* add_get_select_device_to_level_2() { } int** add_get_read_device() { - obj_add_config.i_o_limit_read = philos_int_append(obj_add_config.i_o_limit_read,&obj_add_config.size, -2); - obj_add_config.size--; + obj_add_config.i_o_limit_read = philos_int_append(obj_add_config.i_o_limit_read,&obj_add_config.size_read, -2); + obj_add_config.size_read--; return &obj_add_config.i_o_limit_read; } int** add_get_read_device_size_pow() { - obj_add_config.i_o_limit_read_size = philos_int_append(obj_add_config.i_o_limit_read_size,&obj_add_config.size, -2); - obj_add_config.size--; + obj_add_config.i_o_limit_read_size = philos_int_append(obj_add_config.i_o_limit_read_size,&obj_add_config.size_read, -2); + obj_add_config.size_read--; return &obj_add_config.i_o_limit_read_size; } int** add_get_write_device() { - obj_add_config.i_o_limit_write = philos_int_append(obj_add_config.i_o_limit_write, &obj_add_config.size, -2); - obj_add_config.size--; + obj_add_config.i_o_limit_write = philos_int_append(obj_add_config.i_o_limit_write, &obj_add_config.size_write, -2); + obj_add_config.size_write--; return &obj_add_config.i_o_limit_write; } int** add_get_write_device_size_pow() { - obj_add_config.i_o_limit_write_size = philos_int_append(obj_add_config.i_o_limit_write_size,&obj_add_config.size, -2); - obj_add_config.size--; + obj_add_config.i_o_limit_write_size = philos_int_append(obj_add_config.i_o_limit_write_size,&obj_add_config.size_write, -2); + obj_add_config.size_write--; return &obj_add_config.i_o_limit_write_size; } -char*** add_get_select_device() { +char*** add_get_select_read_device() { int flag = 0; - if (obj_add_config.size == 0) { - obj_add_config.disk = yon_char_parsed_append(obj_add_config.disk,&obj_add_config.size, "-"); + if (obj_add_config.size_read == 0) { + obj_add_config.disk_read = yon_char_parsed_append(obj_add_config.disk_read,&obj_add_config.size_read, "-"); flag = 1; } - obj_add_config.disk = yon_char_parsed_append(obj_add_config.disk,&obj_add_config.size, NULL); + obj_add_config.disk_read = yon_char_parsed_append(obj_add_config.disk_read,&obj_add_config.size_read, NULL); if (flag == 1) { - obj_add_config.size-=2; + obj_add_config.size_read-=2; } else { - obj_add_config.size-=1; + obj_add_config.size_read-=1; } - return &obj_add_config.disk; + return &obj_add_config.disk_read; +} +char*** add_get_select_write_device() { + int flag = 0; + if (obj_add_config.size_read == 0) { + obj_add_config.disk_write = yon_char_parsed_append(obj_add_config.disk_write,&obj_add_config.size_write, "-"); + flag = 1; + } + obj_add_config.disk_write = yon_char_parsed_append(obj_add_config.disk_write,&obj_add_config.size_write, NULL); + if (flag == 1) { + obj_add_config.size_write-=2; + } + else { + obj_add_config.size_write-=1; + } + return &obj_add_config.disk_write; } int add_get_soft_size() { diff --git a/source/view_add.h b/source/view_add.h index 98ee32f..790d323 100644 --- a/source/view_add.h +++ b/source/view_add.h @@ -33,7 +33,7 @@ void add_destroy(GtkWidget *self); void add_set_active_widgets(GtkWidget *check, GtkWidget *spin, GtkWidget *combo, int flag_cpu, char* cmd); void add_init_windows(); void add_update_combo_box(); -char*** add_get_select_device(); +char*** add_get_select_read_device(); int** add_get_read_device(); int** add_get_write_device(); int add_get_soft(); @@ -41,7 +41,8 @@ int add_get_hard(); int add_get_limit_cpu(); int add_get_limit_swap(); char* add_get_quota_object(); - +char*** add_get_select_write_device(); +char*** add_get_select_read_device(); void combo_box_device(); int** add_get_write_device_size_pow(); int** add_get_read_device_size_pow(); diff --git a/source/view_edit.c b/source/view_edit.c index 21c733b..f2bb4d2 100644 --- a/source/view_edit.c +++ b/source/view_edit.c @@ -98,8 +98,10 @@ void edit_show(GtkWidget *self, char* glade_path) { } void wrapper_edit_init_windows_size_memory() { - philos_temp_add_disk(edit_widgets, &obj_edit_config); - philos_temp_del_disk(edit_widgets, &obj_edit_config); + philos_temp_add_disk(edit_widgets, &obj_edit_config, 0); + philos_temp_add_disk(edit_widgets, &obj_edit_config, 1); + philos_temp_del_disk(edit_widgets, &obj_edit_config, 0); + philos_temp_del_disk(edit_widgets, &obj_edit_config, 1); edit_init_windows(); philos_temp_generate_cmd(edit_widgets, &obj_edit_config); } @@ -171,36 +173,48 @@ int edit_get_quota_object_size() { } int** edit_get_read_device() { - obj_edit_config.i_o_limit_read = philos_int_append(obj_edit_config.i_o_limit_read,&obj_edit_config.size, -2); - obj_edit_config.size--; + obj_edit_config.i_o_limit_read = philos_int_append(obj_edit_config.i_o_limit_read,&obj_edit_config.size_read, -2); + obj_edit_config.size_read--; return &obj_edit_config.i_o_limit_read; } int** edit_get_read_device_size_pow() { - obj_edit_config.i_o_limit_read_size = philos_int_append(obj_edit_config.i_o_limit_read_size,&obj_edit_config.size, -2); - obj_edit_config.size--; + obj_edit_config.i_o_limit_read_size = philos_int_append(obj_edit_config.i_o_limit_read_size,&obj_edit_config.size_read, -2); + obj_edit_config.size_read--; return &obj_edit_config.i_o_limit_read_size; } int** edit_get_write_device() { - obj_edit_config.i_o_limit_write = philos_int_append(obj_edit_config.i_o_limit_write, &obj_edit_config.size, -2); - obj_edit_config.size--; + obj_edit_config.i_o_limit_write = philos_int_append(obj_edit_config.i_o_limit_write, &obj_edit_config.size_write, -2); + obj_edit_config.size_write--; return &obj_edit_config.i_o_limit_write; } int** edit_get_write_device_size_pow() { - obj_edit_config.i_o_limit_write_size = philos_int_append(obj_edit_config.i_o_limit_write_size,&obj_edit_config.size, -2); - obj_edit_config.size--; + obj_edit_config.i_o_limit_write_size = philos_int_append(obj_edit_config.i_o_limit_write_size,&obj_edit_config.size_write, -2); + obj_edit_config.size_write--; return &obj_edit_config.i_o_limit_write_size; } -char*** edit_get_select_device() { +char*** edit_get_select_write_device() { int index = 0; - if (!obj_edit_config.disk) { - obj_edit_config.disk = yon_char_parsed_append(obj_edit_config.disk,&index, "-"); - obj_edit_config.disk = yon_char_parsed_append(obj_edit_config.disk,&index, NULL); + if (!obj_edit_config.disk_write) { + obj_edit_config.disk_write = yon_char_parsed_append(obj_edit_config.disk_write,&index, "-"); + obj_edit_config.disk_write = yon_char_parsed_append(obj_edit_config.disk_write,&index, NULL); } if (index == 0) { - obj_edit_config.disk = yon_char_parsed_append(obj_edit_config.disk,&obj_edit_config.size, NULL); - obj_edit_config.size--; + obj_edit_config.disk_write = yon_char_parsed_append(obj_edit_config.disk_write,&obj_edit_config.size_write, NULL); + obj_edit_config.size_write--; } - return &obj_edit_config.disk; + return &obj_edit_config.disk_write; +} +char*** edit_get_select_read_device() { + int index = 0; + if (!obj_edit_config.disk_read) { + obj_edit_config.disk_read = yon_char_parsed_append(obj_edit_config.disk_read,&index, "-"); + obj_edit_config.disk_read = yon_char_parsed_append(obj_edit_config.disk_read,&index, NULL); + } + if (index == 0) { + obj_edit_config.disk_read = yon_char_parsed_append(obj_edit_config.disk_read,&obj_edit_config.size_read, NULL); + obj_edit_config.size_read--; + } + return &obj_edit_config.disk_read; } int edit_get_soft() { return gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(edit_widgets->spiSevereRestrictionTemp)); @@ -220,24 +234,44 @@ int edit_get_limit_swap() { return gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(edit_widgets->spinPaddingFLTemp)); } -void edit_set_select_device(char*** str_value) { +void edit_set_select_read_device(char*** str_value) { if (str_value) { if ((*str_value)) { if ((*str_value)[0] != NULL && strstr((*str_value)[0], "-") == NULL) { - yon_char_parsed_copy(&obj_edit_config.disk, str_value); + yon_char_parsed_copy(&obj_edit_config.disk_read, str_value); int index = yon_gtk_combo_box_text_find(edit_widgets->cbtTempDevice, (*str_value)[0]); gtk_combo_box_set_active(GTK_COMBO_BOX(edit_widgets->cbtTempDevice), index); } else { - obj_edit_config.size = 0; + obj_edit_config.size_read = 0; } } else { - obj_edit_config.size = 0; + obj_edit_config.size_read = 0; } } else { - obj_edit_config.size = 0; + obj_edit_config.size_read = 0; + } +} +void edit_set_select_write_device(char*** str_value) { + if (str_value) { + if ((*str_value)) { + if ((*str_value)[0] != NULL && strstr((*str_value)[0], "-") == NULL) { + yon_char_parsed_copy(&obj_edit_config.disk_write, str_value); + int index = yon_gtk_combo_box_text_find(edit_widgets->cbtTempDevice, (*str_value)[0]); + gtk_combo_box_set_active(GTK_COMBO_BOX(edit_widgets->cbtTempDevice), index); + } + else { + obj_edit_config.size_write = 0; + } + } + else { + obj_edit_config.size_write = 0; + } + } + else { + obj_edit_config.size_write = 0; } } void edit_set_read_device(int* str_value, int* pow_mem) { @@ -266,8 +300,11 @@ void edit_set_write_device(int* str_value, int* pow_mem) { } } -void edit_set_size_arrays(size_t size_array) { - obj_edit_config.size = size_array; +void edit_set_size_arrays_write(size_t size_array) { + obj_edit_config.size_write = size_array; +} +void edit_set_size_arrays_read(size_t size_array) { + obj_edit_config.size_read = size_array; } void edit_set_soft(int value, int pow_mem) { edit_temp_set(value,pow_mem, edit_widgets->chkSoftRestrictionTemp, diff --git a/source/view_edit.h b/source/view_edit.h index 174638b..3e8069a 100644 --- a/source/view_edit.h +++ b/source/view_edit.h @@ -30,7 +30,8 @@ void edit_destroy(GtkWidget *self); void edit_init_windows(); void wrapper_edit_init_windows_size_memory(); void edit_set_active_widgets(GtkWidget *check, GtkWidget *spin, GtkWidget *combo, int flag_cpu, char* cmd); -char*** edit_get_select_device(); +char*** edit_get_select_read_device(); +char*** edit_get_select_write_device(); int** edit_get_read_device(); int** edit_get_write_device(); int edit_get_soft(); @@ -38,7 +39,8 @@ int edit_get_hard(); int edit_get_limit_cpu(); int edit_get_limit_swap(); void wrapper_edit_show(); -void edit_set_select_device(char*** str_value); +void edit_set_select_write_device(char*** str_value); +void edit_set_select_read_device(char*** str_value); void edit_set_read_device(int* str_value, int* pow_mem); void edit_set_write_device(int* str_value, int* pow_mem); void edit_set_soft(int value, int pow_mem); @@ -49,7 +51,8 @@ void edit_temp_set(int value, int pow_mem, GtkWidget* cheek, GtkWidget* spin, Gt int** edit_get_read_device_size_pow(); int** edit_get_write_device_size_pow(); -void edit_set_size_arrays(size_t size_array); +void edit_set_size_arrays_read(size_t size_array); +void edit_set_size_arrays_write(size_t size_array); int edit_get_soft_size(); int edit_get_hard_size(); int edit_get_limit_cpu_size(); -- 2.35.1 From 3fb4363ceb8110d79c1e013b25eb4e6db78024ef Mon Sep 17 00:00:00 2001 From: Igor Belitskiy Date: Wed, 5 Jul 2023 11:45:22 +0600 Subject: [PATCH 75/91] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20=D0=B8=20=D1=80=D0=B5=D0=B4=D0=B0=D0=BA?= =?UTF-8?q?=D1=82=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D0=B5=20=D0=B1?= =?UTF-8?q?=D0=BB=D0=BE=D1=87=D0=BD=D1=8B=D1=85=20=D1=83=D1=81=D1=82=D1=80?= =?UTF-8?q?=D0=BE=D0=B9=D1=81=D1=82=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/philos_utils.c | 156 +++++++++++++++++++++++------------------- source/philos_utils.h | 2 +- 2 files changed, 86 insertions(+), 72 deletions(-) diff --git a/source/philos_utils.c b/source/philos_utils.c index 884bd6a..da4db9e 100644 --- a/source/philos_utils.c +++ b/source/philos_utils.c @@ -431,12 +431,10 @@ char* philos_pard_array_add_cmd(char* cmd, temp_config* _config, char* key, int* } } -int philos_check_activ_disk(temp_set_window *widgets, temp_config* _config, int flag_check_array) { +int philos_check_activ_disk(temp_set_window *widgets, temp_config* _config, int size_disk) { char* disk = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(widgets->cbtTempDevice)); disk = yon_char_divide_search(disk," ", -1); - int bool_read = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->chbTempRead)); - int bool_write = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->chbTempWrite)); - if (disk == NULL || (_config->size_read == 0 && flag_check_array == 0) && (_config->size_write == 0 && flag_check_array==1)) { + if (disk == NULL || size_disk == 0) { return 0; } return 1; @@ -487,7 +485,7 @@ void philos_temp_generate_cmd(temp_set_window *widgets, temp_config* _config) { str_cmd = philos_pard_array_add_cmd(str_cmd, _config, "IOReadBandwidthMax=", _config->i_o_limit_read, _config->i_o_limit_read_size, _config->disk_read, _config->size_read); } - else if (_config->size_write!=0) { + if (_config->size_write!=0) { str_cmd = philos_pard_array_add_cmd(str_cmd, _config, "IOWriteBandwidthMax=", _config->i_o_limit_write, _config->i_o_limit_write_size, _config->disk_write, _config->size_write); } @@ -503,17 +501,21 @@ void philos_temp_del_disk(temp_set_window *widgets, temp_config* _config, int fl int bool_read = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->chbTempRead)); int bool_write = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->chbTempWrite)); char** ptr_disk = NULL; - int size = -1; + int size = 0; + if (flag_check_array == 0) { - ptr_disk = _config->disk_read; size = _config->size_read; + if (philos_check_activ_disk(widgets, _config, size) == 0) { + return; + } + ptr_disk = _config->disk_read; } else if (flag_check_array == 1) { - ptr_disk = _config->disk_write; size = _config->size_write; - } - if (philos_check_activ_disk(widgets, _config, flag_check_array) == 0) { - return; + if (philos_check_activ_disk(widgets, _config, size) == 0) { + return; + } + ptr_disk = _config->disk_write; } if (size) { int index_find = -1; @@ -674,7 +676,7 @@ void philos_temp_add_disk(temp_set_window *widgets, temp_config* _config, int fl int bool_read = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->chbTempRead)); int bool_write = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->chbTempWrite)); char** ptr_disk = NULL; - int size = -1; + int size = 0; if (flag_check_array == 0) { ptr_disk = _config->disk_read; size = _config->size_read; @@ -701,50 +703,58 @@ void philos_temp_add_disk(temp_set_window *widgets, temp_config* _config, int fl // Добавление ptr_disk = yon_char_parsed_append(ptr_disk,&size, disk); size--; - if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->chbTempRead))) { - _config->i_o_limit_read_size = philos_int_append(_config->i_o_limit_read_size,&size,(int)gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->cbtTempRead))); - size--; - _config->i_o_limit_read = philos_int_append(_config->i_o_limit_read,&size,gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(widgets->spinTempRead))); - size--; - } - else { - _config->i_o_limit_read_size = philos_int_append(_config->i_o_limit_read_size,&size,-3); - size--; - _config->i_o_limit_read = philos_int_append(_config->i_o_limit_read,&size,-3); - size--; - } - if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->chbTempWrite))) { - _config->i_o_limit_write_size = philos_int_append(_config->i_o_limit_write_size,&size,(int)gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->cbtTempWrite))); - size--; - _config->i_o_limit_write = philos_int_append(_config->i_o_limit_write,&size,gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(widgets->spinTempWrite))); - size--; + if (flag_check_array == 0) { + if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->chbTempRead))) { + _config->i_o_limit_read_size = philos_int_append(_config->i_o_limit_read_size,&size,(int)gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->cbtTempRead))); + size--; + _config->i_o_limit_read = philos_int_append(_config->i_o_limit_read,&size,gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(widgets->spinTempRead))); + size--; + } + else { + _config->i_o_limit_read_size = philos_int_append(_config->i_o_limit_read_size,&size,-3); + size--; + _config->i_o_limit_read = philos_int_append(_config->i_o_limit_read,&size,-3); + size--; + } } - else { - _config->i_o_limit_write_size = philos_int_append(_config->i_o_limit_write_size,&size,-3); - size--; - _config->i_o_limit_write = philos_int_append(_config->i_o_limit_write,&size,-3); - size--; + if (flag_check_array == 1) { + if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->chbTempWrite))) { + _config->i_o_limit_write_size = philos_int_append(_config->i_o_limit_write_size,&size,(int)gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->cbtTempWrite))); + size--; + _config->i_o_limit_write = philos_int_append(_config->i_o_limit_write,&size,gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(widgets->spinTempWrite))); + size--; + } + else { + _config->i_o_limit_write_size = philos_int_append(_config->i_o_limit_write_size,&size,-3); + size--; + _config->i_o_limit_write = philos_int_append(_config->i_o_limit_write,&size,-3); + size--; + } } - size--; + size++; } else { // Редактирование - if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->chbTempRead))) { - _config->i_o_limit_read_size[index_find] =(int)gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->cbtTempRead)); - _config->i_o_limit_read[index_find] = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(widgets->spinTempRead)); - } - else { - _config->i_o_limit_read_size[index_find] = -3; - _config->i_o_limit_read[index_find] = -3; - } - if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->chbTempWrite))) { - _config->i_o_limit_write_size[index_find] = (int)gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->cbtTempWrite)); - _config->i_o_limit_write[index_find] = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(widgets->spinTempWrite)); + if (flag_check_array == 0) { + if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->chbTempRead))) { + _config->i_o_limit_read_size[index_find] =(int)gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->cbtTempRead)); + _config->i_o_limit_read[index_find] = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(widgets->spinTempRead)); + } + else { + _config->i_o_limit_read_size[index_find] = -3; + _config->i_o_limit_read[index_find] = -3; + } } - else { - _config->i_o_limit_write_size[index_find] = -3; - _config->i_o_limit_write[index_find] = -3; + if (flag_check_array == 1) { + if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->chbTempWrite))) { + _config->i_o_limit_write_size[index_find] = (int)gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->cbtTempWrite)); + _config->i_o_limit_write[index_find] = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(widgets->spinTempWrite)); + } + else { + _config->i_o_limit_write_size[index_find] = -3; + _config->i_o_limit_write[index_find] = -3; + } } } @@ -753,29 +763,33 @@ void philos_temp_add_disk(temp_set_window *widgets, temp_config* _config, int fl if (bool_read == 1 || bool_write == 1) { ptr_disk = yon_char_parsed_append(ptr_disk,&size, disk); size--; - if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->chbTempRead))) { - _config->i_o_limit_read_size = philos_int_append(_config->i_o_limit_read_size,&size,(int)gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->cbtTempRead))); - size--; - _config->i_o_limit_read = philos_int_append(_config->i_o_limit_read,&size,gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(widgets->spinTempRead))); - size--; - } - else { - _config->i_o_limit_read_size = philos_int_append(_config->i_o_limit_read_size,&size,-3); - size--; - _config->i_o_limit_read = philos_int_append(_config->i_o_limit_read,&size,-3); - size--; - } - if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->chbTempWrite))) { - _config->i_o_limit_write_size = philos_int_append(_config->i_o_limit_write_size,&size,(int)gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->cbtTempWrite))); - size--; - _config->i_o_limit_write = philos_int_append(_config->i_o_limit_write,&size,gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(widgets->spinTempWrite))); - size--; + if (flag_check_array == 0) { + if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->chbTempRead))) { + _config->i_o_limit_read_size = philos_int_append(_config->i_o_limit_read_size,&size,(int)gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->cbtTempRead))); + size--; + _config->i_o_limit_read = philos_int_append(_config->i_o_limit_read,&size,gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(widgets->spinTempRead))); + size--; + } + else { + _config->i_o_limit_read_size = philos_int_append(_config->i_o_limit_read_size,&size,-3); + size--; + _config->i_o_limit_read = philos_int_append(_config->i_o_limit_read,&size,-3); + size--; + } } - else { - _config->i_o_limit_write_size = philos_int_append(_config->i_o_limit_write_size,&size,-3); - size--; - _config->i_o_limit_write = philos_int_append(_config->i_o_limit_write,&size,-3); - size--; + if (flag_check_array == 1) { + if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->chbTempWrite))) { + _config->i_o_limit_write_size = philos_int_append(_config->i_o_limit_write_size,&size,(int)gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->cbtTempWrite))); + size--; + _config->i_o_limit_write = philos_int_append(_config->i_o_limit_write,&size,gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(widgets->spinTempWrite))); + size--; + } + else { + _config->i_o_limit_write_size = philos_int_append(_config->i_o_limit_write_size,&size,-3); + size--; + _config->i_o_limit_write = philos_int_append(_config->i_o_limit_write,&size,-3); + size--; + } } size++; } diff --git a/source/philos_utils.h b/source/philos_utils.h index b7ebf6e..b7e680e 100644 --- a/source/philos_utils.h +++ b/source/philos_utils.h @@ -85,7 +85,7 @@ void philos_array_str_copy(char*** source, char*** copy); void philos_array_int_copy(int** source, int** copy); char** philos_pars_terminal_systemd_cgls(char* CMD_GET_SLICE_SERVICE, char* str_find, int* size_array_data); char* philos_pard_array_add_cmd(char* cmd, temp_config* _config, char* key, int* array_io, int* array_io_pow_size, char** disk, int size); -int philos_check_activ_disk(temp_set_window *widgets, temp_config* _config, int flag_check_array); +int philos_check_activ_disk(temp_set_window *widgets, temp_config* _config, int size_disk); void philos_temp_generate_cmd(temp_set_window *widgets, temp_config* _config); void philos_temp_del_disk(temp_set_window *widgets, temp_config* _config, int flag_check_array); void philos_temp_config_init(temp_config* _config); -- 2.35.1 From 6224f6fd666cb9eb39fe5d4ccf7704fd86f4a86d Mon Sep 17 00:00:00 2001 From: Igor Belitskiy Date: Wed, 5 Jul 2023 16:21:01 +0600 Subject: [PATCH 76/91] fix --- source/philos_utils.c | 130 ++++++++++++++-------------- source/philos_utils.h | 1 + source/ubl-settings-resourcequota.c | 71 +++++++++------ source/ubl-settings-resourcequota.h | 1 + source/view_add.c | 58 +++++++------ 5 files changed, 142 insertions(+), 119 deletions(-) diff --git a/source/philos_utils.c b/source/philos_utils.c index da4db9e..28d5be8 100644 --- a/source/philos_utils.c +++ b/source/philos_utils.c @@ -14,84 +14,83 @@ void philos_set_pow_size_memory(char* str_find, int** array_size,int index, char char* STR_TB = array_size_pow[3]; size_t length = strlen(str_find); if (strstr(str_find,"K") != NULL) { - if (index!=-1) { - *array_size = philos_int_append(*array_size, &index, 0); - } - else { - philos_array_int_pars_to(array_size,0); - } + *array_size = philos_int_append(*array_size, &index, 0); str_find = yon_char_divide(str_find, length-1); str_find = yon_char_unite(str_find, " ", STR_KB, NULL); - if (index!=-1) { - index--; - } + index--; } else if (strstr(str_find,"M") != NULL) { - if (index!=-1) { - *array_size = philos_int_append(*array_size, &index, 1); - } - else { - philos_array_int_pars_to(array_size,1); - } + *array_size = philos_int_append(*array_size, &index, 1); str_find = yon_char_divide(str_find, length-1); str_find = yon_char_unite(str_find," ", STR_MB, NULL); - if (index!=-1) { - index--; - } + index--; } else if (strstr(str_find,"G") != NULL) { - if (index!=-1) { - *array_size = philos_int_append(*array_size, &index, 2); - } - else { - philos_array_int_pars_to(array_size,2); - } + *array_size = philos_int_append(*array_size, &index, 2); str_find = yon_char_divide(str_find, length-1); str_find = yon_char_unite(str_find," ", STR_GB, NULL); - if (index!=-1) { - index--; - } + index--; } else if (strstr(str_find,"T") != NULL) { - if (index!=-1) { - *array_size = philos_int_append(*array_size, &index, 3); - } - else { - philos_array_int_pars_to(array_size,3); - } + *array_size = philos_int_append(*array_size, &index, 3); str_find = yon_char_divide(str_find, length-1); str_find = yon_char_unite(str_find," ", STR_TB, NULL); - if (index!=-1) { - index--; - } + index--; } else if (strstr(str_find,"%%") != NULL) { - if (index!=-1) { - *array_size = philos_int_append(*array_size, &index, -1); - } - else { - philos_array_int_pars_to(array_size,-1); - } + *array_size = philos_int_append(*array_size, &index, -1); str_find = yon_char_divide(str_find, length-1); - if (index!=-1) { - index--; - } + index--; } else if (strstr(str_find,"-") != NULL) { - if (index!=-1) { - *array_size = philos_int_append(*array_size, &index, -1); - } - else { - philos_array_int_pars_to(array_size,-1); - } - if (index!=-1) { - index--; - } + *array_size = philos_int_append(*array_size, &index, -1); + index--; + } + +} +void philos_set_pow_size_memory_device(char* str_find, int** array_size,int index, char** array_size_pow) { + char* STR_KB = array_size_pow[0]; + char* STR_MB = array_size_pow[1]; + char* STR_GB = array_size_pow[2]; + char* STR_TB = array_size_pow[3]; + size_t length = strlen(str_find); + if (strstr(str_find,"K") != NULL) { + (*array_size)[index] = 0; + str_find = yon_char_divide(str_find, length-1); + str_find = yon_char_unite(str_find, " ", STR_KB, NULL); + index--; + } + else if (strstr(str_find,"M") != NULL) { + (*array_size)[index] = 1; + str_find = yon_char_divide(str_find, length-1); + str_find = yon_char_unite(str_find," ", STR_MB, NULL); + index--; + } + else if (strstr(str_find,"G") != NULL) { + (*array_size)[index] = 2; + str_find = yon_char_divide(str_find, length-1); + str_find = yon_char_unite(str_find," ", STR_GB, NULL); + index--; + } + else if (strstr(str_find,"T") != NULL) { + (*array_size)[index] = 3; + str_find = yon_char_divide(str_find, length-1); + + str_find = yon_char_unite(str_find," ", STR_TB, NULL); + index--; + } + else if (strstr(str_find,"%%") != NULL) { + (*array_size)[index] = -1; + str_find = yon_char_divide(str_find, length-1); + index--; + } + else if (strstr(str_find,"-") != NULL) { + (*array_size)[index] = -1; + index--; } } - void philos_set_size_memory_integer_char(char* str_find, char*** array_data, int index) { char* simv_del_array[10] = {"K","M","G","T","k","m","g","t"," ","%"}; for (size_t i = 0; i < 10; i++) { @@ -324,8 +323,11 @@ char* philos_format_cfg_str_size_memory(char* str_key, int value, int pow_size_m else if (pow_size_memory== -1) { return yon_char_unite(str_key, str_value, "%" ,NULL); } + else if (pow_size_memory== -3) { + return yon_char_new("-"); + } else { - return yon_char_unite(str_key, str_value, "-" ,NULL); + return yon_char_new("-"); } } @@ -398,7 +400,7 @@ char* philos_pard_array_add_cmd(char* cmd, temp_config* _config, char* key, int* if (disk && size && array_io && array_io_pow_size) { int index_find = 0; for (int index = 0; index < size; index++) { - if (array_io_pow_size[index] >= 0 && array_io[index]>= 0) { + if (array_io_pow_size[index] >= 0 && array_io[index]>= 0 && !strstr(disk[index], "-")) { char* num_and_pow_size = philos_format_cfg_str_size_memory(" ", array_io[index], array_io_pow_size[index]); if (!strstr(num_and_pow_size, "-")) { cmd_new = yon_char_unite(cmd_new, @@ -532,15 +534,11 @@ void philos_temp_del_disk(temp_set_window *widgets, temp_config* _config, int fl } if ((bool_read == 0 && bool_write == 0 && index_find != -1)) { - ptr_disk = yon_char_parsed_shrink(ptr_disk,&size, index_find); - size++; - _config->i_o_limit_read_size = remove_element_int_array(_config->i_o_limit_read_size,&size, index_find); - size++; - _config->i_o_limit_write_size = remove_element_int_array(_config->i_o_limit_write_size,&size, index_find); - size++; - _config->i_o_limit_read = remove_element_int_array(_config->i_o_limit_read,&size, index_find); - size++; - _config->i_o_limit_write = remove_element_int_array(_config->i_o_limit_write,&size, index_find); + ptr_disk[index_find] = yon_char_new("-"); + _config->i_o_limit_read_size[index_find] = -3; + _config->i_o_limit_write_size[index_find] = -3; + _config->i_o_limit_read[index_find] = -3; + _config->i_o_limit_write[index_find] = -3; } } if (flag_check_array == 0) { diff --git a/source/philos_utils.h b/source/philos_utils.h index b7e680e..61e2786 100644 --- a/source/philos_utils.h +++ b/source/philos_utils.h @@ -82,6 +82,7 @@ void philos_split_size_memory(char* str_value, int* size, char* pow_memory); char* philos_format_cfg_str_size_memory(char* str_key, int value, int pow_size_memory); char** philos_str_split(char *parameters, int *size, char *divider); void philos_array_str_copy(char*** source, char*** copy); +void philos_set_pow_size_memory_device(char* str_find, int** array_size,int index, char** array_size_pow); void philos_array_int_copy(int** source, int** copy); char** philos_pars_terminal_systemd_cgls(char* CMD_GET_SLICE_SERVICE, char* str_find, int* size_array_data); char* philos_pard_array_add_cmd(char* cmd, temp_config* _config, char* key, int* array_io, int* array_io_pow_size, char** disk, int size); diff --git a/source/ubl-settings-resourcequota.c b/source/ubl-settings-resourcequota.c index a815d45..349b069 100644 --- a/source/ubl-settings-resourcequota.c +++ b/source/ubl-settings-resourcequota.c @@ -366,15 +366,13 @@ void init_cfg_array(int index) { index_n2 = 0; main_config.i_o_limit_read = yon_remalloc(main_config.i_o_limit_read, (index + 1) * sizeof(int*)); main_config.i_o_limit_read_size = yon_remalloc(main_config.i_o_limit_read_size, (index + 1) * sizeof(int*)); - main_config.disk_read = yon_remalloc(main_config.disk_read, (index + 1) * sizeof(char**)); main_config.i_o_limit_write = yon_remalloc(main_config.i_o_limit_write, (index + 1) * sizeof(int*)); main_config.i_o_limit_write_size = yon_remalloc(main_config.i_o_limit_write_size, (index + 1) * sizeof(int*)); main_config.disk_write = yon_remalloc(main_config.disk_write, (index + 1) * sizeof(char**)); - + main_config.disk_read = yon_remalloc(main_config.disk_read, (index + 1) * sizeof(char**)); philos_array_int_copy(&main_config.i_o_limit_read[index], &array_limit); philos_array_int_copy(&main_config.i_o_limit_read_size[index], &array_limit); yon_char_parsed_copy(&main_config.disk_read[index], &array_disk); - philos_array_int_copy(&main_config.i_o_limit_write[index], &array_limit); philos_array_int_copy(&main_config.i_o_limit_write_size[index], &array_limit); yon_char_parsed_copy(&main_config.disk_write[index], &array_disk); @@ -469,6 +467,22 @@ void str_split_value(char* values, int index) { } +void write_value_and_null_config(int index_n1, int* index_n2, char* key_find, char* str_disk) { + char* array_disk = NULL; + if (strstr(key_find, "IOReadBandwidthMax")!=NULL) { + array_disk = main_config.disk_write[index_n1][*index_n2]; + if (strcmp(array_disk, str_disk)!=0 && strcmp(array_disk, "-")!=0) { + (*index_n2)++; + } + } + else if (strstr(key_find, "IOWriteBandwidthMax")!=NULL) { + array_disk = main_config.disk_read[index_n1][*index_n2]; + if (strcmp(array_disk, str_disk)!=0 && strcmp(array_disk, "-")!=0) { + (*index_n2)++; + } + } +} + void get_param_io_limit(char** arr_values, int index_start, int size, int index_n1, char *key_find) { int* array_limit = NULL; char** array_disk = NULL; @@ -496,10 +510,10 @@ void get_param_io_limit(char** arr_values, int index_start, int size, int index_ if (strstr(arr_values[i], key_find)!=NULL) { // Найден ключ в массив char* disk = yon_char_divide_search(yon_char_new(value), " ", -1); - philos_array_char_pars_to(&array_disk, disk); - index_n2--; - philos_set_pow_size_memory(yon_char_new(value), &array_limit_size, -1, array_size_pow); - set_size_memory_integer(yon_char_new(value), &array_limit, -1); + write_value_and_null_config(index_n1,&index_n2,key_find, disk); + array_disk[index_n2] = yon_char_new(disk); + philos_set_pow_size_memory_device(yon_char_new(value), &array_limit_size, index_n2, array_size_pow); + set_size_memory_integer_device(yon_char_new(value), &array_limit, index_n2); flag_parsed = 1; index_n2++; } @@ -512,10 +526,10 @@ void get_param_io_limit(char** arr_values, int index_start, int size, int index_ } else if (flag_parsed == 1) { char* disk = yon_char_divide_search(yon_char_new(arr_values[i]), " ", -1); - philos_array_char_pars_to(&array_disk, disk); - index_n2--; - philos_set_pow_size_memory(yon_char_new(arr_values[i]), &array_limit_size, -1, array_size_pow); - set_size_memory_integer(yon_char_new(arr_values[i]), &array_limit, -1); + write_value_and_null_config(index_n1,&index_n2,key_find, disk); + array_disk[index_n2] = yon_char_new(disk); + philos_set_pow_size_memory_device(yon_char_new(arr_values[i]), &array_limit_size, index_n2, array_size_pow); + set_size_memory_integer_device(yon_char_new(arr_values[i]), &array_limit, index_n2); index_n2++; } else if (flag_exit == 1) { @@ -556,23 +570,29 @@ void set_size_memory_integer(char* str_find, int** array_data, int index) { } } if (strstr(str_find, "-")==NULL) { - if (index!=-1) { - *array_data = philos_int_append(*array_data, &index, atoi(str_find)); - } - else { - philos_array_int_pars_to(array_data,atoi(str_find)); - } + *array_data = philos_int_append(*array_data, &index, atoi(str_find)); } else { - if (index!=-1) { - *array_data = philos_int_append(*array_data, &index, -1); - } - else { - philos_array_int_pars_to(array_data,atoi(str_find)); - } + *array_data = philos_int_append(*array_data, &index, -1); } - +} +void set_size_memory_integer_device(char* str_find, int** array_data, int index) { + if (strstr(str_find, " ")) { + yon_char_divide_search(str_find, " ", -1); + } + char* simv_del_array[9] = {"K","M","G","T","k","m","g","t","%"}; + for (size_t i = 0; i < 9; i++) { + if (strstr(str_find, simv_del_array[i])) { + str_find = yon_char_divide_search(str_find, simv_del_array[i], -1); + } + } + if (strstr(str_find, "-")==NULL) { + (*array_data)[index] = atoi(str_find); + } + else { + (*array_data)[index] = -1; + } } void main_cbx_2_event() { @@ -612,7 +632,6 @@ void tree_view_select(GtkWidget *self, main_window *widgets) { void tree_view_add(int index) { main_config.type_quota = yon_char_parsed_append(main_config.type_quota, &main_config.size_tree_view, add_get_quota_object()); - main_config.size_tree_view--; main_config.quota_volume = yon_char_parsed_append(main_config.quota_volume, &main_config.size_tree_view, add_get_select_device_to_level_2()); main_config.size_tree_view--; main_config.soft_raw_limit = philos_int_append(main_config.soft_raw_limit, &main_config.size_tree_view, add_get_soft()); @@ -1311,8 +1330,8 @@ int main(int argc, char *argv[]){ yon_ubl_status_box_setup(widgets->StatusIcon,widgets->StatusBox,widgets->StatusLabel); if (getuid()!=0) { - yon_ubl_status_box_render(ROOT_WARNING_LABEL,BACKGROUND_IMAGE_FAIL_TYPE); load_system_cfg(); + yon_ubl_status_box_render(ROOT_WARNING_LABEL,BACKGROUND_IMAGE_FAIL_TYPE); } else { yon_ubl_status_box_render(LOAD_LOCAL_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE); diff --git a/source/ubl-settings-resourcequota.h b/source/ubl-settings-resourcequota.h index 5d5e725..135b7b7 100755 --- a/source/ubl-settings-resourcequota.h +++ b/source/ubl-settings-resourcequota.h @@ -199,6 +199,7 @@ void load_global_cfg(); void template_load_cfg(char *cmd); int template_format_str_save(char* source_set_cmd, char* source_remove_cmd); void str_split_value(char *values, int index); +void set_size_memory_integer_device(char* str_find, int** array_data, int index); void set_size_memory_integer(char* str_find, int** array_data, int index); void set_size_memory_integer_char(char* str_find, char*** array_data, int index); void set_pow_size_memory(char* str_find, int** array_size, int index); diff --git a/source/view_add.c b/source/view_add.c index 9ffadd3..80b16b1 100644 --- a/source/view_add.c +++ b/source/view_add.c @@ -179,53 +179,57 @@ char* add_get_select_device_to_level_2() { } int** add_get_read_device() { - obj_add_config.i_o_limit_read = philos_int_append(obj_add_config.i_o_limit_read,&obj_add_config.size_read, -2); - obj_add_config.size_read--; + int start_index = obj_add_config.size_read; + for (int index = start_index;index< (get_device_cfg()->size_disk*2);index++){ + obj_add_config.i_o_limit_read = philos_int_append(obj_add_config.i_o_limit_read, &obj_add_config.size_read, -3); + } + obj_add_config.i_o_limit_read = philos_int_append(obj_add_config.i_o_limit_read, &obj_add_config.size_read, -2); + obj_add_config.size_read = start_index; return &obj_add_config.i_o_limit_read; } int** add_get_read_device_size_pow() { - obj_add_config.i_o_limit_read_size = philos_int_append(obj_add_config.i_o_limit_read_size,&obj_add_config.size_read, -2); - obj_add_config.size_read--; + int start_index = obj_add_config.size_read; + for (int index = start_index;index< (get_device_cfg()->size_disk*2);index++){ + obj_add_config.i_o_limit_read_size = philos_int_append(obj_add_config.i_o_limit_read_size, &obj_add_config.size_read, -3); + } + obj_add_config.i_o_limit_read_size = philos_int_append(obj_add_config.i_o_limit_read_size, &obj_add_config.size_read, -2); + obj_add_config.size_read = start_index; return &obj_add_config.i_o_limit_read_size; } int** add_get_write_device() { + int start_index = obj_add_config.size_write; + for (int index = start_index;index< (get_device_cfg()->size_disk*2);index++){ + obj_add_config.i_o_limit_write = philos_int_append(obj_add_config.i_o_limit_write, &obj_add_config.size_write, -3); + } obj_add_config.i_o_limit_write = philos_int_append(obj_add_config.i_o_limit_write, &obj_add_config.size_write, -2); - obj_add_config.size_write--; + obj_add_config.size_write = start_index; return &obj_add_config.i_o_limit_write; } int** add_get_write_device_size_pow() { - obj_add_config.i_o_limit_write_size = philos_int_append(obj_add_config.i_o_limit_write_size,&obj_add_config.size_write, -2); - obj_add_config.size_write--; + int start_index = obj_add_config.size_write; + for (int index = start_index;index< (get_device_cfg()->size_disk*2);index++){ + obj_add_config.i_o_limit_write_size = philos_int_append(obj_add_config.i_o_limit_write_size, &obj_add_config.size_write, -3); + } + obj_add_config.i_o_limit_write_size = philos_int_append(obj_add_config.i_o_limit_write_size, &obj_add_config.size_write, -2); + obj_add_config.size_write = start_index; return &obj_add_config.i_o_limit_write_size; } char*** add_get_select_read_device() { - int flag = 0; - if (obj_add_config.size_read == 0) { + int start_index = obj_add_config.size_read; + for (int index = start_index;index< (get_device_cfg()->size_disk*2);index++){ obj_add_config.disk_read = yon_char_parsed_append(obj_add_config.disk_read,&obj_add_config.size_read, "-"); - flag = 1; - } - obj_add_config.disk_read = yon_char_parsed_append(obj_add_config.disk_read,&obj_add_config.size_read, NULL); - if (flag == 1) { - obj_add_config.size_read-=2; - } - else { - obj_add_config.size_read-=1; } + obj_add_config.disk_read = yon_char_parsed_append(obj_add_config.disk_read, &obj_add_config.size_read, NULL); + obj_add_config.size_read = start_index; return &obj_add_config.disk_read; } char*** add_get_select_write_device() { - int flag = 0; - if (obj_add_config.size_read == 0) { + int start_index = obj_add_config.size_write; + for (int index = start_index;index< (get_device_cfg()->size_disk*2);index++){ obj_add_config.disk_write = yon_char_parsed_append(obj_add_config.disk_write,&obj_add_config.size_write, "-"); - flag = 1; - } - obj_add_config.disk_write = yon_char_parsed_append(obj_add_config.disk_write,&obj_add_config.size_write, NULL); - if (flag == 1) { - obj_add_config.size_write-=2; - } - else { - obj_add_config.size_write-=1; } + obj_add_config.disk_write = yon_char_parsed_append(obj_add_config.disk_write, &obj_add_config.size_write, NULL); + obj_add_config.size_write = start_index; return &obj_add_config.disk_write; } -- 2.35.1 From c8bf3abf5bdda5ac08448fa66f978936dc4637bc Mon Sep 17 00:00:00 2001 From: Igor Belitskiy Date: Thu, 6 Jul 2023 12:25:17 +0600 Subject: [PATCH 77/91] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB=20=D0=B1=D0=B0=D0=B3=20=D1=81=20=D0=B4=D0=BE=D0=B1?= =?UTF-8?q?=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5=D0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/philos_utils.c | 203 ++++++++++++++-------------- source/philos_utils.h | 9 +- source/ubl-settings-resourcequota.c | 75 ++++------ source/view_add.c | 75 +++------- source/view_edit.c | 56 +------- source/view_edit.h | 3 +- 6 files changed, 160 insertions(+), 261 deletions(-) diff --git a/source/philos_utils.c b/source/philos_utils.c index 28d5be8..fbebec0 100644 --- a/source/philos_utils.c +++ b/source/philos_utils.c @@ -433,10 +433,10 @@ char* philos_pard_array_add_cmd(char* cmd, temp_config* _config, char* key, int* } } -int philos_check_activ_disk(temp_set_window *widgets, temp_config* _config, int size_disk) { +int philos_check_activ_disk(temp_set_window *widgets, temp_config* _config) { char* disk = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(widgets->cbtTempDevice)); disk = yon_char_divide_search(disk," ", -1); - if (disk == NULL || size_disk == 0) { + if (disk == NULL) { return 0; } return 1; @@ -483,12 +483,12 @@ void philos_temp_generate_cmd(temp_set_window *widgets, temp_config* _config) { split_simvol[1] = '\0'; } if (gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->cbtTempDevice))!=-1) { - if (_config->size_read!=0) { - str_cmd = philos_pard_array_add_cmd(str_cmd, _config, "IOReadBandwidthMax=", _config->i_o_limit_read, _config->i_o_limit_read_size, _config->disk_read, _config->size_read); + if (_config->size_disk!=0) { + str_cmd = philos_pard_array_add_cmd(str_cmd, _config, "IOReadBandwidthMax=", _config->i_o_limit_read, _config->i_o_limit_read_size, _config->disk_read, _config->size_disk); } - if (_config->size_write!=0) { - str_cmd = philos_pard_array_add_cmd(str_cmd, _config, "IOWriteBandwidthMax=", _config->i_o_limit_write, _config->i_o_limit_write_size, _config->disk_write, _config->size_write); + if (_config->size_disk!=0) { + str_cmd = philos_pard_array_add_cmd(str_cmd, _config, "IOWriteBandwidthMax=", _config->i_o_limit_write, _config->i_o_limit_write_size, _config->disk_write, _config->size_disk); } } @@ -506,65 +506,61 @@ void philos_temp_del_disk(temp_set_window *widgets, temp_config* _config, int fl int size = 0; if (flag_check_array == 0) { - size = _config->size_read; - if (philos_check_activ_disk(widgets, _config, size) == 0) { + size = _config->size_disk; + if (philos_check_activ_disk(widgets, _config) == 0) { return; } ptr_disk = _config->disk_read; } else if (flag_check_array == 1) { - size = _config->size_write; - if (philos_check_activ_disk(widgets, _config, size) == 0) { + size = _config->size_disk; + if (philos_check_activ_disk(widgets, _config) == 0) { return; } ptr_disk = _config->disk_write; } - if (size) { - int index_find = -1; - if (ptr_disk) { - for (int index = 0; index < size; index++) { - char* disk_cfg = ptr_disk[index]; - if (disk_cfg) { - if (strstr(disk_cfg, disk) != NULL) { - index_find = index; - break; - } + int index_find = -1; + if (ptr_disk) { + for (int index = 0; index < size; index++) { + char* disk_cfg = ptr_disk[index]; + if (disk_cfg) { + if (strstr(disk_cfg, disk) != NULL) { + index_find = index; + break; } } } - - if ((bool_read == 0 && bool_write == 0 && index_find != -1)) { - ptr_disk[index_find] = yon_char_new("-"); - _config->i_o_limit_read_size[index_find] = -3; - _config->i_o_limit_write_size[index_find] = -3; - _config->i_o_limit_read[index_find] = -3; - _config->i_o_limit_write[index_find] = -3; - } + } + + if ((bool_read == 0 && bool_write == 0 && index_find != -1)) { + ptr_disk[index_find] = yon_char_new("-"); + _config->i_o_limit_read_size[index_find] = -3; + _config->i_o_limit_write_size[index_find] = -3; + _config->i_o_limit_read[index_find] = -3; + _config->i_o_limit_write[index_find] = -3; } if (flag_check_array == 0) { if (ptr_disk) { - _config->disk_read = ptr_disk; - _config->size_read = size; + yon_char_parsed_copy(&_config->disk_read, &ptr_disk); } } else if (flag_check_array == 1) { if (ptr_disk) { - _config->disk_write = ptr_disk; - _config->size_write = size; + yon_char_parsed_copy(&_config->disk_write, &ptr_disk); } } } void philos_temp_config_init(temp_config* _config) { - if (_config->size_read != 0) { - philos_free_string_array(&_config->disk_read, _config->size_read); - philos_free_int_array(&_config->i_o_limit_read, _config->size_read); - philos_free_int_array(&_config->i_o_limit_read_size, _config->size_read); + if (_config->size_disk != 0) { + philos_free_string_array(&_config->disk_read, _config->size_disk); + philos_free_int_array(&_config->i_o_limit_read, _config->size_disk); + philos_free_int_array(&_config->i_o_limit_read_size, _config->size_disk); } - else if (_config->size_write != 0) { - philos_free_string_array(&_config->disk_write, _config->size_write); - philos_free_int_array(&_config->i_o_limit_write, _config->size_write); - philos_free_int_array(&_config->i_o_limit_write_size, _config->size_write); + else if (_config->size_disk != 0) { + philos_free_string_array(&_config->disk_write, _config->size_disk); + philos_free_int_array(&_config->i_o_limit_write, _config->size_disk); + philos_free_int_array(&_config->i_o_limit_write_size, _config->size_disk); } _config->disk_read = NULL; _config->disk_write = NULL; @@ -572,8 +568,8 @@ void philos_temp_config_init(temp_config* _config) { _config->i_o_limit_write = NULL; _config->i_o_limit_read_size = NULL; _config->i_o_limit_write_size = NULL; - _config->size_read = 0; - _config->size_write = 0; + _config->size_disk = 0; + _config->size_disk = 0; } // flag_check_array = 0 READ @@ -586,7 +582,7 @@ void philos_update_device_to_entry(temp_set_window *widgets, temp_config* _confi int index_find = -1; if (flag_check_array == 0) { if (_config->disk_read) { - for (int index = 0; index < _config->size_read; index++) { + for (int index = 0; index < _config->size_disk; index++) { char* disk_cfg = _config->disk_read[index]; if (disk_cfg) { if (strstr(disk_cfg, disk) != NULL) { @@ -599,7 +595,7 @@ void philos_update_device_to_entry(temp_set_window *widgets, temp_config* _confi } else if (flag_check_array == 1) { if (_config->disk_write) { - for (int index = 0; index < _config->size_write; index++) { + for (int index = 0; index < _config->size_disk; index++) { char* disk_cfg = _config->disk_write[index]; if (disk_cfg) { if (strstr(disk_cfg, disk) != NULL) { @@ -677,11 +673,11 @@ void philos_temp_add_disk(temp_set_window *widgets, temp_config* _config, int fl int size = 0; if (flag_check_array == 0) { ptr_disk = _config->disk_read; - size = _config->size_read; + size = _config->size_disk; } else if (flag_check_array == 1) { ptr_disk = _config->disk_write; - size = _config->size_write; + size = _config->size_disk; } if (disk_id >= 0 && size !=0) { int index_find = -1; @@ -697,46 +693,14 @@ void philos_temp_add_disk(temp_set_window *widgets, temp_config* _config, int fl } } - if (index_find == -1) { - // Добавление - ptr_disk = yon_char_parsed_append(ptr_disk,&size, disk); - size--; - if (flag_check_array == 0) { - if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->chbTempRead))) { - _config->i_o_limit_read_size = philos_int_append(_config->i_o_limit_read_size,&size,(int)gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->cbtTempRead))); - size--; - _config->i_o_limit_read = philos_int_append(_config->i_o_limit_read,&size,gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(widgets->spinTempRead))); - size--; - } - else { - _config->i_o_limit_read_size = philos_int_append(_config->i_o_limit_read_size,&size,-3); - size--; - _config->i_o_limit_read = philos_int_append(_config->i_o_limit_read,&size,-3); - size--; - } - } - if (flag_check_array == 1) { - if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->chbTempWrite))) { - _config->i_o_limit_write_size = philos_int_append(_config->i_o_limit_write_size,&size,(int)gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->cbtTempWrite))); - size--; - _config->i_o_limit_write = philos_int_append(_config->i_o_limit_write,&size,gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(widgets->spinTempWrite))); - size--; - } - else { - _config->i_o_limit_write_size = philos_int_append(_config->i_o_limit_write_size,&size,-3); - size--; - _config->i_o_limit_write = philos_int_append(_config->i_o_limit_write,&size,-3); - size--; - } + if (index_find == -1 || index_find>=0) { + if (index_find == -1) { + index_find = find_null_array(_config); } - size++; - - } - else { // Редактирование if (flag_check_array == 0) { if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->chbTempRead))) { - _config->i_o_limit_read_size[index_find] =(int)gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->cbtTempRead)); + _config->i_o_limit_read_size[index_find] = (int)gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->cbtTempRead)); _config->i_o_limit_read[index_find] = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(widgets->spinTempRead)); } else { @@ -754,59 +718,62 @@ void philos_temp_add_disk(temp_set_window *widgets, temp_config* _config, int fl _config->i_o_limit_write[index_find] = -3; } } - } } else { if (bool_read == 1 || bool_write == 1) { ptr_disk = yon_char_parsed_append(ptr_disk,&size, disk); - size--; + int index_find = find_null_array(_config); if (flag_check_array == 0) { if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->chbTempRead))) { - _config->i_o_limit_read_size = philos_int_append(_config->i_o_limit_read_size,&size,(int)gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->cbtTempRead))); - size--; - _config->i_o_limit_read = philos_int_append(_config->i_o_limit_read,&size,gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(widgets->spinTempRead))); - size--; + _config->i_o_limit_read_size[index_find] = (int)gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->cbtTempRead)); + _config->i_o_limit_read[index_find] = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(widgets->spinTempRead)); + } else { - _config->i_o_limit_read_size = philos_int_append(_config->i_o_limit_read_size,&size,-3); - size--; - _config->i_o_limit_read = philos_int_append(_config->i_o_limit_read,&size,-3); - size--; + _config->i_o_limit_read_size[index_find] = -3; + _config->i_o_limit_read[index_find] = -3; + } } if (flag_check_array == 1) { if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->chbTempWrite))) { - _config->i_o_limit_write_size = philos_int_append(_config->i_o_limit_write_size,&size,(int)gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->cbtTempWrite))); - size--; - _config->i_o_limit_write = philos_int_append(_config->i_o_limit_write,&size,gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(widgets->spinTempWrite))); - size--; + _config->i_o_limit_write_size[index_find] = (int)gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->cbtTempWrite)); + _config->i_o_limit_write[index_find] = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(widgets->spinTempWrite)); + } else { - _config->i_o_limit_write_size = philos_int_append(_config->i_o_limit_write_size,&size,-3); - size--; - _config->i_o_limit_write = philos_int_append(_config->i_o_limit_write,&size,-3); - size--; + _config->i_o_limit_write_size[index_find] = -3; + _config->i_o_limit_write[index_find] = -3; + } } - size++; } else { } } if (flag_check_array == 0) { if (ptr_disk) { - _config->disk_read = ptr_disk; - _config->size_read = size; + yon_char_parsed_copy(&_config->disk_read, &ptr_disk); } } else if (flag_check_array == 1) { if (ptr_disk) { - _config->disk_write = ptr_disk; - _config->size_write = size; + yon_char_parsed_copy(&_config->disk_write, &ptr_disk); + } + } +} +int find_null_array(temp_config* _config) { + int index = 0; + for (index = 0; (_config->disk_read[index]!=NULL && _config->disk_write[index]!=NULL); index++) { + if (strcmp(_config->disk_read[index], "-") == 0 && strcmp(_config->disk_write[index], "-") == 0) { + break; } } + return index; + + } int* philos_int_append(int* array, int* size, int value) { array = yon_remalloc(array, (*size+1)*sizeof(int)); @@ -1141,3 +1108,29 @@ void philos_array_char_pars_to(char*** array, char* to) { } } } +void init_device_disk(temp_config* _config) { + for (int index = 0;index< (get_device_cfg()->size_disk*2);index++){ + _config->disk_read = yon_char_parsed_append(_config->disk_read,&_config->size_disk, "-"); + _config->size_disk--; + _config->i_o_limit_write_size = philos_int_append(_config->i_o_limit_write_size, &_config->size_disk, -3); + _config->size_disk--; + _config->i_o_limit_write = philos_int_append(_config->i_o_limit_write, &_config->size_disk, -3); + _config->size_disk--; + _config->i_o_limit_read_size = philos_int_append(_config->i_o_limit_read_size, &_config->size_disk, -3); + _config->size_disk--; + _config->disk_write = yon_char_parsed_append(_config->disk_write,&_config->size_disk, "-"); + _config->size_disk--; + _config->i_o_limit_read = philos_int_append(_config->i_o_limit_read, &_config->size_disk, -3); + } + _config->i_o_limit_write_size = philos_int_append(_config->i_o_limit_write_size, &_config->size_disk, -2); + _config->size_disk--; + _config->disk_write = yon_char_parsed_append(_config->disk_write, &_config->size_disk, NULL); + _config->size_disk--; + _config->disk_read = yon_char_parsed_append(_config->disk_read, &_config->size_disk, NULL); + _config->size_disk--; + _config->i_o_limit_write = philos_int_append(_config->i_o_limit_write, &_config->size_disk, -2); + _config->size_disk--; + _config->i_o_limit_read = philos_int_append(_config->i_o_limit_read, &_config->size_disk, -2); + _config->size_disk--; + _config->i_o_limit_read_size = philos_int_append(_config->i_o_limit_read_size, &_config->size_disk, -2); +} \ No newline at end of file diff --git a/source/philos_utils.h b/source/philos_utils.h index 61e2786..8ec5af6 100644 --- a/source/philos_utils.h +++ b/source/philos_utils.h @@ -14,6 +14,7 @@ #include #include #include +#include "my_device.h" #define catch(x) ExitJmp:if(__HadError) #define throw(x) {__HadError=true;goto ExitJmp;} @@ -26,8 +27,8 @@ typedef struct { int* i_o_limit_write; int* i_o_limit_read_size; int* i_o_limit_write_size; - int size_write; - int size_read; + int size; + int size_disk; } temp_config; typedef struct { @@ -86,7 +87,7 @@ void philos_set_pow_size_memory_device(char* str_find, int** array_size,int inde void philos_array_int_copy(int** source, int** copy); char** philos_pars_terminal_systemd_cgls(char* CMD_GET_SLICE_SERVICE, char* str_find, int* size_array_data); char* philos_pard_array_add_cmd(char* cmd, temp_config* _config, char* key, int* array_io, int* array_io_pow_size, char** disk, int size); -int philos_check_activ_disk(temp_set_window *widgets, temp_config* _config, int size_disk); +int philos_check_activ_disk(temp_set_window *widgets, temp_config* _config); void philos_temp_generate_cmd(temp_set_window *widgets, temp_config* _config); void philos_temp_del_disk(temp_set_window *widgets, temp_config* _config, int flag_check_array); void philos_temp_config_init(temp_config* _config); @@ -114,4 +115,6 @@ static void child_ready(VteTerminal *terminal, GPid pid, GError *error, gpointer int philos_config_save(char *command); void philos_array_int_pars_to(int** array, int to); void philos_array_char_pars_to(char*** array, char* to); +int find_null_array(temp_config* _config); +void init_device_disk(temp_config* _config); #endif \ No newline at end of file diff --git a/source/ubl-settings-resourcequota.c b/source/ubl-settings-resourcequota.c index 349b069..101ab99 100644 --- a/source/ubl-settings-resourcequota.c +++ b/source/ubl-settings-resourcequota.c @@ -631,46 +631,38 @@ void tree_view_select(GtkWidget *self, main_window *widgets) { } void tree_view_add(int index) { - main_config.type_quota = yon_char_parsed_append(main_config.type_quota, &main_config.size_tree_view, add_get_quota_object()); - main_config.quota_volume = yon_char_parsed_append(main_config.quota_volume, &main_config.size_tree_view, add_get_select_device_to_level_2()); - main_config.size_tree_view--; - main_config.soft_raw_limit = philos_int_append(main_config.soft_raw_limit, &main_config.size_tree_view, add_get_soft()); - main_config.size_tree_view--; - main_config.hard_raw_limit = philos_int_append(main_config.hard_raw_limit, &main_config.size_tree_view, add_get_hard()); - main_config.size_tree_view--; - main_config.swap = philos_int_append(main_config.swap, &main_config.size_tree_view, add_get_limit_swap()); - main_config.size_tree_view--; - main_config.cpu_limit = philos_int_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_remalloc(main_config.i_o_limit_read, (main_config.size_tree_view + 1) * sizeof(int*)); - main_config.i_o_limit_read_size = yon_remalloc(main_config.i_o_limit_read_size, (main_config.size_tree_view + 1) * sizeof(int*)); - main_config.disk_read = yon_remalloc(main_config.disk_read, (main_config.size_tree_view + 1) * sizeof(char**)); - yon_char_parsed_copy(&main_config.disk_read[main_config.size_tree_view], add_get_select_read_device()); - philos_array_int_copy(&main_config.i_o_limit_read[main_config.size_tree_view], add_get_read_device()); - philos_array_int_copy(&main_config.i_o_limit_read_size[main_config.size_tree_view], add_get_read_device_size_pow()); - - main_config.disk_write = yon_remalloc(main_config.disk_write, (main_config.size_tree_view + 1) * sizeof(char**)); - yon_char_parsed_copy(&main_config.disk_write[main_config.size_tree_view], add_get_select_write_device()); - main_config.i_o_limit_write = yon_remalloc(main_config.i_o_limit_write, (main_config.size_tree_view + 1) * sizeof(int*)); - main_config.i_o_limit_write_size = yon_remalloc(main_config.i_o_limit_write_size, (main_config.size_tree_view + 1) * sizeof(int*)); - philos_array_int_copy(&main_config.i_o_limit_write[main_config.size_tree_view], add_get_write_device()); - philos_array_int_copy(&main_config.i_o_limit_write_size[main_config.size_tree_view], add_get_write_device_size_pow()); + init_cfg_array(index); + main_config.type_quota_size[index] = add_get_quota_object_size(); + main_config.quota_volume_size[index] = -1; + main_config.type_quota[index] = add_get_quota_object(); + main_config.quota_volume[index] = add_get_select_device_to_level_2(); + + main_config.soft_raw_limit[index] = add_get_soft(); + main_config.hard_raw_limit[index] = add_get_hard(); + main_config.swap[index] = add_get_limit_swap(); + main_config.cpu_limit[index] = add_get_limit_cpu(); + main_config.soft_raw_limit_size[index] = add_get_soft_size(); + main_config.hard_raw_limit_size[index] = add_get_hard_size(); + main_config.swap_size[index] = add_get_limit_swap_size(); + main_config.cpu_limit_size[index] = add_get_limit_cpu_size(); + philos_free_string_array(&main_config.disk_read[index],(get_device_cfg()->size_disk*2)); + philos_free_string_array(&main_config.disk_write[index],(get_device_cfg()->size_disk*2)); + philos_free_int_array(&main_config.i_o_limit_write[index],(get_device_cfg()->size_disk*2)); + philos_free_int_array(&main_config.i_o_limit_read[index],(get_device_cfg()->size_disk*2)); + philos_free_int_array(&main_config.i_o_limit_read_size[index],(get_device_cfg()->size_disk*2)); + philos_free_int_array(&main_config.i_o_limit_write_size[index],(get_device_cfg()->size_disk*2)); - 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--; - main_config.quota_volume_size = philos_int_append(main_config.quota_volume_size, &main_config.size_tree_view, -1); - main_config.size_tree_view--; - main_config.soft_raw_limit_size = philos_int_append(main_config.soft_raw_limit_size, &main_config.size_tree_view, add_get_soft_size()); - main_config.size_tree_view--; - main_config.hard_raw_limit_size = philos_int_append(main_config.hard_raw_limit_size, &main_config.size_tree_view, add_get_hard_size()); - main_config.size_tree_view--; - 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()); + philos_array_int_copy(&main_config.i_o_limit_read[index], add_get_read_device()); + philos_array_int_copy(&main_config.i_o_limit_write[index], add_get_write_device()); + philos_array_int_copy(&main_config.i_o_limit_read_size[index], add_get_read_device_size_pow()); + philos_array_int_copy(&main_config.i_o_limit_write_size[index], add_get_write_device_size_pow()); + yon_char_parsed_copy(&main_config.disk_read[index], add_get_select_read_device()); + yon_char_parsed_copy(&main_config.disk_write[index], add_get_select_write_device()); + main_config.size_tree_view += 1; fill_tree_view(main_config.size_tree_view-1, main_config.size_tree_view, 1); main_config.flag_set_data = 1; main_config.flag_save = 2; + } void fill_tree_view(int start, int size, int flag_gui_add) { @@ -894,17 +886,8 @@ void wrapper_edit_show() { int index = atoi(str_iter); size_t size_disk_read_array = 0; size_t size_disk_write_array = 0; - if (main_config.disk_read) { - for (size_disk_read_array=0; main_config.disk_read[index][size_disk_read_array]; size_disk_read_array++) { - } - } - if (main_config.disk_write) { - for (size_disk_write_array; main_config.disk_write[index][size_disk_write_array]; size_disk_write_array++) { - } - } edit_show(NULL, glade_path); - edit_set_size_arrays_read(size_disk_read_array); - edit_set_size_arrays_write(size_disk_write_array); + edit_set_size_arrays((get_device_cfg()->size_disk*2)+1); edit_set_select_read_device(&main_config.disk_read[index]); edit_set_select_write_device(&main_config.disk_write[index]); edit_set_write_device(main_config.i_o_limit_write[index], main_config.i_o_limit_write_size[index]); diff --git a/source/view_add.c b/source/view_add.c index 80b16b1..cd26198 100644 --- a/source/view_add.c +++ b/source/view_add.c @@ -48,6 +48,7 @@ temp_set_window *add_setup_window(char* glade_path) { add_init_windows(); add_localization(add_widgets); philos_temp_config_init(&obj_add_config); + init_device_disk(&obj_add_config); } return add_widgets; } @@ -178,60 +179,6 @@ char* add_get_select_device_to_level_2() { } } -int** add_get_read_device() { - int start_index = obj_add_config.size_read; - for (int index = start_index;index< (get_device_cfg()->size_disk*2);index++){ - obj_add_config.i_o_limit_read = philos_int_append(obj_add_config.i_o_limit_read, &obj_add_config.size_read, -3); - } - obj_add_config.i_o_limit_read = philos_int_append(obj_add_config.i_o_limit_read, &obj_add_config.size_read, -2); - obj_add_config.size_read = start_index; - return &obj_add_config.i_o_limit_read; -} -int** add_get_read_device_size_pow() { - int start_index = obj_add_config.size_read; - for (int index = start_index;index< (get_device_cfg()->size_disk*2);index++){ - obj_add_config.i_o_limit_read_size = philos_int_append(obj_add_config.i_o_limit_read_size, &obj_add_config.size_read, -3); - } - obj_add_config.i_o_limit_read_size = philos_int_append(obj_add_config.i_o_limit_read_size, &obj_add_config.size_read, -2); - obj_add_config.size_read = start_index; - return &obj_add_config.i_o_limit_read_size; -} -int** add_get_write_device() { - int start_index = obj_add_config.size_write; - for (int index = start_index;index< (get_device_cfg()->size_disk*2);index++){ - obj_add_config.i_o_limit_write = philos_int_append(obj_add_config.i_o_limit_write, &obj_add_config.size_write, -3); - } - obj_add_config.i_o_limit_write = philos_int_append(obj_add_config.i_o_limit_write, &obj_add_config.size_write, -2); - obj_add_config.size_write = start_index; - return &obj_add_config.i_o_limit_write; -} -int** add_get_write_device_size_pow() { - int start_index = obj_add_config.size_write; - for (int index = start_index;index< (get_device_cfg()->size_disk*2);index++){ - obj_add_config.i_o_limit_write_size = philos_int_append(obj_add_config.i_o_limit_write_size, &obj_add_config.size_write, -3); - } - obj_add_config.i_o_limit_write_size = philos_int_append(obj_add_config.i_o_limit_write_size, &obj_add_config.size_write, -2); - obj_add_config.size_write = start_index; - return &obj_add_config.i_o_limit_write_size; -} -char*** add_get_select_read_device() { - int start_index = obj_add_config.size_read; - for (int index = start_index;index< (get_device_cfg()->size_disk*2);index++){ - obj_add_config.disk_read = yon_char_parsed_append(obj_add_config.disk_read,&obj_add_config.size_read, "-"); - } - obj_add_config.disk_read = yon_char_parsed_append(obj_add_config.disk_read, &obj_add_config.size_read, NULL); - obj_add_config.size_read = start_index; - return &obj_add_config.disk_read; -} -char*** add_get_select_write_device() { - int start_index = obj_add_config.size_write; - for (int index = start_index;index< (get_device_cfg()->size_disk*2);index++){ - obj_add_config.disk_write = yon_char_parsed_append(obj_add_config.disk_write,&obj_add_config.size_write, "-"); - } - obj_add_config.disk_write = yon_char_parsed_append(obj_add_config.disk_write, &obj_add_config.size_write, NULL); - obj_add_config.size_write = start_index; - return &obj_add_config.disk_write; -} int add_get_soft_size() { if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(add_widgets->chkSoftRestrictionTemp))) { @@ -313,3 +260,23 @@ void add_update_combo_box() { } } +int** add_get_read_device() { + return &obj_add_config.i_o_limit_read; +} + +int** add_get_read_device_size_pow() { + return &obj_add_config.i_o_limit_read_size; +} +int** add_get_write_device() { + return &obj_add_config.i_o_limit_write; +} +int** add_get_write_device_size_pow() { + return &obj_add_config.i_o_limit_write_size; +} +char*** add_get_select_read_device() { + return &obj_add_config.disk_read; +} +char*** add_get_select_write_device() { + return &obj_add_config.disk_write; +} + diff --git a/source/view_edit.c b/source/view_edit.c index f2bb4d2..4379e08 100644 --- a/source/view_edit.c +++ b/source/view_edit.c @@ -173,47 +173,21 @@ int edit_get_quota_object_size() { } int** edit_get_read_device() { - obj_edit_config.i_o_limit_read = philos_int_append(obj_edit_config.i_o_limit_read,&obj_edit_config.size_read, -2); - obj_edit_config.size_read--; return &obj_edit_config.i_o_limit_read; } int** edit_get_read_device_size_pow() { - obj_edit_config.i_o_limit_read_size = philos_int_append(obj_edit_config.i_o_limit_read_size,&obj_edit_config.size_read, -2); - obj_edit_config.size_read--; return &obj_edit_config.i_o_limit_read_size; } int** edit_get_write_device() { - obj_edit_config.i_o_limit_write = philos_int_append(obj_edit_config.i_o_limit_write, &obj_edit_config.size_write, -2); - obj_edit_config.size_write--; return &obj_edit_config.i_o_limit_write; } int** edit_get_write_device_size_pow() { - obj_edit_config.i_o_limit_write_size = philos_int_append(obj_edit_config.i_o_limit_write_size,&obj_edit_config.size_write, -2); - obj_edit_config.size_write--; return &obj_edit_config.i_o_limit_write_size; } char*** edit_get_select_write_device() { - int index = 0; - if (!obj_edit_config.disk_write) { - obj_edit_config.disk_write = yon_char_parsed_append(obj_edit_config.disk_write,&index, "-"); - obj_edit_config.disk_write = yon_char_parsed_append(obj_edit_config.disk_write,&index, NULL); - } - if (index == 0) { - obj_edit_config.disk_write = yon_char_parsed_append(obj_edit_config.disk_write,&obj_edit_config.size_write, NULL); - obj_edit_config.size_write--; - } return &obj_edit_config.disk_write; } char*** edit_get_select_read_device() { - int index = 0; - if (!obj_edit_config.disk_read) { - obj_edit_config.disk_read = yon_char_parsed_append(obj_edit_config.disk_read,&index, "-"); - obj_edit_config.disk_read = yon_char_parsed_append(obj_edit_config.disk_read,&index, NULL); - } - if (index == 0) { - obj_edit_config.disk_read = yon_char_parsed_append(obj_edit_config.disk_read,&obj_edit_config.size_read, NULL); - obj_edit_config.size_read--; - } return &obj_edit_config.disk_read; } int edit_get_soft() { @@ -237,42 +211,24 @@ int edit_get_limit_swap() { void edit_set_select_read_device(char*** str_value) { if (str_value) { if ((*str_value)) { + yon_char_parsed_copy(&obj_edit_config.disk_read, str_value); if ((*str_value)[0] != NULL && strstr((*str_value)[0], "-") == NULL) { - yon_char_parsed_copy(&obj_edit_config.disk_read, str_value); int index = yon_gtk_combo_box_text_find(edit_widgets->cbtTempDevice, (*str_value)[0]); gtk_combo_box_set_active(GTK_COMBO_BOX(edit_widgets->cbtTempDevice), index); } - else { - obj_edit_config.size_read = 0; - } - } - else { - obj_edit_config.size_read = 0; } } - else { - obj_edit_config.size_read = 0; - } } void edit_set_select_write_device(char*** str_value) { if (str_value) { if ((*str_value)) { + yon_char_parsed_copy(&obj_edit_config.disk_write, str_value); if ((*str_value)[0] != NULL && strstr((*str_value)[0], "-") == NULL) { - yon_char_parsed_copy(&obj_edit_config.disk_write, str_value); int index = yon_gtk_combo_box_text_find(edit_widgets->cbtTempDevice, (*str_value)[0]); gtk_combo_box_set_active(GTK_COMBO_BOX(edit_widgets->cbtTempDevice), index); } - else { - obj_edit_config.size_write = 0; - } - } - else { - obj_edit_config.size_write = 0; } } - else { - obj_edit_config.size_write = 0; - } } void edit_set_read_device(int* str_value, int* pow_mem) { if (str_value && pow_mem) { @@ -300,12 +256,10 @@ void edit_set_write_device(int* str_value, int* pow_mem) { } } -void edit_set_size_arrays_write(size_t size_array) { - obj_edit_config.size_write = size_array; -} -void edit_set_size_arrays_read(size_t size_array) { - obj_edit_config.size_read = size_array; +void edit_set_size_arrays(size_t size_array) { + obj_edit_config.size_disk = size_array; } + void edit_set_soft(int value, int pow_mem) { edit_temp_set(value,pow_mem, edit_widgets->chkSoftRestrictionTemp, edit_widgets->spiSevereRestrictionTemp, diff --git a/source/view_edit.h b/source/view_edit.h index 3e8069a..df51f00 100644 --- a/source/view_edit.h +++ b/source/view_edit.h @@ -51,8 +51,7 @@ void edit_temp_set(int value, int pow_mem, GtkWidget* cheek, GtkWidget* spin, Gt int** edit_get_read_device_size_pow(); int** edit_get_write_device_size_pow(); -void edit_set_size_arrays_read(size_t size_array); -void edit_set_size_arrays_write(size_t size_array); +void edit_set_size_arrays(size_t size_array); int edit_get_soft_size(); int edit_get_hard_size(); int edit_get_limit_cpu_size(); -- 2.35.1 From e16c11292893ff01d21fedf3a8ead7803d509698 Mon Sep 17 00:00:00 2001 From: Igor Belitskiy Date: Thu, 6 Jul 2023 16:10:58 +0600 Subject: [PATCH 78/91] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8?= =?UTF-8?q?=D0=BB=20=D1=82=D0=B5=D0=BA=D1=81=D1=82=20=D0=BE=D0=B1=D0=BD?= =?UTF-8?q?=D0=BE=D0=B2=D0=B8=D1=82=D1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ubl-settings-resourcequota.glade | 34 +++++++++++++++++++++++++++++--- ubl-settings-resourcequota.pot | 3 +++ ubl-settings-resourcequota_ru.po | 3 +++ 3 files changed, 37 insertions(+), 3 deletions(-) diff --git a/ubl-settings-resourcequota.glade b/ubl-settings-resourcequota.glade index d920255..687a4f0 100644 --- a/ubl-settings-resourcequota.glade +++ b/ubl-settings-resourcequota.glade @@ -1,5 +1,5 @@ - + @@ -3307,10 +3307,38 @@ limit 5 5 - + True False - emblem-synchronizing-symbolic + center + + + True + False + emblem-synchronizing-symbolic + + + False + True + 0 + + + + + True + False + 5 + 5 + 5 + 5 + Update + + + False + True + 1 + + diff --git a/ubl-settings-resourcequota.pot b/ubl-settings-resourcequota.pot index f6a7a52..f9e2676 100644 --- a/ubl-settings-resourcequota.pot +++ b/ubl-settings-resourcequota.pot @@ -17,6 +17,9 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +msgid "Update" +msgstr "" + msgid "" "Warning! Application was launched without root - root-dependent actions are " "locked" diff --git a/ubl-settings-resourcequota_ru.po b/ubl-settings-resourcequota_ru.po index 1ec6c3f..731493d 100644 --- a/ubl-settings-resourcequota_ru.po +++ b/ubl-settings-resourcequota_ru.po @@ -20,6 +20,9 @@ msgstr "" #: source/ubl-strings.h:8 #: source/ubl-strings.h:1 +msgid "Update" +msgstr "Обновить" + msgid "Open documentation" msgstr "Прочитать справку" -- 2.35.1 From d6510581a3d10f43cd2edef74bc047ae854a9095 Mon Sep 17 00:00:00 2001 From: Igor Belitskiy Date: Thu, 6 Jul 2023 16:24:07 +0600 Subject: [PATCH 79/91] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D1=8B=20=D0=BF=D1=80=D0=BE=D0=BA=D1=80=D1=83?= =?UTF-8?q?=D1=82=D0=BA=D0=B8=20=D0=B2=20=D1=82=D0=B5=D1=80=D0=BC=D0=B8?= =?UTF-8?q?=D0=BD=D0=B0=D0=BB=D0=B0=D1=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/philos_utils.c | 71 +++++++++++++++-------------- source/philos_utils.h | 1 + source/ubl-settings-resourcequota.c | 4 +- source/view_add.c | 4 +- source/view_edit.c | 63 +++++++++++++++---------- source/view_edit.h | 1 + ubl-settings-resourcequota.glade | 21 +++++++++ 7 files changed, 105 insertions(+), 60 deletions(-) diff --git a/source/philos_utils.c b/source/philos_utils.c index fbebec0..16686f9 100644 --- a/source/philos_utils.c +++ b/source/philos_utils.c @@ -585,7 +585,7 @@ void philos_update_device_to_entry(temp_set_window *widgets, temp_config* _confi for (int index = 0; index < _config->size_disk; index++) { char* disk_cfg = _config->disk_read[index]; if (disk_cfg) { - if (strstr(disk_cfg, disk) != NULL) { + if (strstr(disk_cfg, disk)) { index_find = index; break; } @@ -598,7 +598,7 @@ void philos_update_device_to_entry(temp_set_window *widgets, temp_config* _confi for (int index = 0; index < _config->size_disk; index++) { char* disk_cfg = _config->disk_write[index]; if (disk_cfg) { - if (strstr(disk_cfg, disk) != NULL) { + if (strstr(disk_cfg, disk)) { index_find = index; break; } @@ -606,8 +606,6 @@ void philos_update_device_to_entry(temp_set_window *widgets, temp_config* _confi } } } - - if (index_find != -1) { if (flag_check_array==0) { if (_config->i_o_limit_read[index_find]<0 || _config->i_o_limit_read_size[index_find]<0) { @@ -635,35 +633,50 @@ void philos_update_device_to_entry(temp_set_window *widgets, temp_config* _confi } } else { - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widgets->chbTempWrite), 0); - gtk_spin_button_set_value(GTK_SPIN_BUTTON(widgets->spinTempWrite), 0); - gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->cbtTempWrite), 0); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widgets->chbTempRead), 0); - gtk_spin_button_set_value(GTK_SPIN_BUTTON(widgets->spinTempRead), 0); - gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->cbtTempRead), 0); + if (flag_check_array==0) { + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widgets->chbTempRead), 0); + gtk_spin_button_set_value(GTK_SPIN_BUTTON(widgets->spinTempRead), 0); + gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->cbtTempRead), 0); + } + else if (flag_check_array==1) { + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widgets->chbTempWrite), 0); + gtk_spin_button_set_value(GTK_SPIN_BUTTON(widgets->spinTempWrite), 0); + gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->cbtTempWrite), 0); + } } } else { - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widgets->chbTempWrite), 0); - gtk_spin_button_set_value(GTK_SPIN_BUTTON(widgets->spinTempWrite), 0); - gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->cbtTempWrite), 0); + if (flag_check_array==0) { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widgets->chbTempRead), 0); gtk_spin_button_set_value(GTK_SPIN_BUTTON(widgets->spinTempRead), 0); gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->cbtTempRead), 0); + } + else if (flag_check_array==1) { + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widgets->chbTempWrite), 0); + gtk_spin_button_set_value(GTK_SPIN_BUTTON(widgets->spinTempWrite), 0); + gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->cbtTempWrite), 0); + } } } else { - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widgets->chbTempWrite), 0); - gtk_spin_button_set_value(GTK_SPIN_BUTTON(widgets->spinTempWrite), 0); - gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->cbtTempWrite), 0); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widgets->chbTempRead), 0); - gtk_spin_button_set_value(GTK_SPIN_BUTTON(widgets->spinTempRead), 0); - gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->cbtTempRead), 0); + if (flag_check_array==0) { + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widgets->chbTempRead), 0); + gtk_spin_button_set_value(GTK_SPIN_BUTTON(widgets->spinTempRead), 0); + gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->cbtTempRead), 0); + } + else if (flag_check_array==1) { + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widgets->chbTempWrite), 0); + gtk_spin_button_set_value(GTK_SPIN_BUTTON(widgets->spinTempWrite), 0); + gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->cbtTempWrite), 0); + } } } // flag_check_array = 0 READ // flag_check_array = 1 WRITE void philos_temp_add_disk(temp_set_window *widgets, temp_config* _config, int flag_check_array) { + if (_config->block_table == 1) { + return; + } char* disk = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(widgets->cbtTempDevice)); disk = yon_char_divide_search(disk, " ", -1); int disk_id = gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->cbtTempDevice)); @@ -700,57 +713,49 @@ void philos_temp_add_disk(temp_set_window *widgets, temp_config* _config, int fl // Редактирование if (flag_check_array == 0) { if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->chbTempRead))) { + ptr_disk[index_find] = yon_char_new(disk); _config->i_o_limit_read_size[index_find] = (int)gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->cbtTempRead)); _config->i_o_limit_read[index_find] = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(widgets->spinTempRead)); } else { + ptr_disk[index_find] = yon_char_new("-"); _config->i_o_limit_read_size[index_find] = -3; _config->i_o_limit_read[index_find] = -3; } } if (flag_check_array == 1) { if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->chbTempWrite))) { + ptr_disk[index_find] = yon_char_new(disk); _config->i_o_limit_write_size[index_find] = (int)gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->cbtTempWrite)); _config->i_o_limit_write[index_find] = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(widgets->spinTempWrite)); } else { _config->i_o_limit_write_size[index_find] = -3; _config->i_o_limit_write[index_find] = -3; + ptr_disk[index_find] = yon_char_new("-"); } } } } else { if (bool_read == 1 || bool_write == 1) { - ptr_disk = yon_char_parsed_append(ptr_disk,&size, disk); int index_find = find_null_array(_config); if (flag_check_array == 0) { if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->chbTempRead))) { + ptr_disk[index_find] = yon_char_new(disk); _config->i_o_limit_read_size[index_find] = (int)gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->cbtTempRead)); _config->i_o_limit_read[index_find] = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(widgets->spinTempRead)); } - else { - _config->i_o_limit_read_size[index_find] = -3; - _config->i_o_limit_read[index_find] = -3; - - } } if (flag_check_array == 1) { if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widgets->chbTempWrite))) { + ptr_disk[index_find] = yon_char_new(disk); _config->i_o_limit_write_size[index_find] = (int)gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->cbtTempWrite)); _config->i_o_limit_write[index_find] = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(widgets->spinTempWrite)); - - } - else { - _config->i_o_limit_write_size[index_find] = -3; - _config->i_o_limit_write[index_find] = -3; - } } } - else { - } } if (flag_check_array == 0) { if (ptr_disk) { diff --git a/source/philos_utils.h b/source/philos_utils.h index 8ec5af6..6ca960e 100644 --- a/source/philos_utils.h +++ b/source/philos_utils.h @@ -29,6 +29,7 @@ typedef struct { int* i_o_limit_write_size; int size; int size_disk; + int block_table; } temp_config; typedef struct { diff --git a/source/ubl-settings-resourcequota.c b/source/ubl-settings-resourcequota.c index 101ab99..e4c31e1 100644 --- a/source/ubl-settings-resourcequota.c +++ b/source/ubl-settings-resourcequota.c @@ -889,14 +889,14 @@ void wrapper_edit_show() { edit_show(NULL, glade_path); edit_set_size_arrays((get_device_cfg()->size_disk*2)+1); edit_set_select_read_device(&main_config.disk_read[index]); + edit_set_read_device(main_config.i_o_limit_read[index], main_config.i_o_limit_read_size[index]); edit_set_select_write_device(&main_config.disk_write[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_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_limit_swap(main_config.swap[index], main_config.swap_size[index]); - + set_gui_device(); edit_event(get_widget_edit()); g_signal_connect(G_OBJECT(get_widget_edit()->btnSaveTempSave), "clicked", G_CALLBACK(main_edit_btn_save), NULL); edit_init_windows(); diff --git a/source/view_add.c b/source/view_add.c index cd26198..ddb72d3 100644 --- a/source/view_add.c +++ b/source/view_add.c @@ -75,8 +75,8 @@ void event_check_io_device() { add_init_windows(); philos_temp_add_disk(add_widgets, &obj_add_config, 0); philos_temp_add_disk(add_widgets, &obj_add_config, 1); - philos_temp_del_disk(add_widgets, &obj_add_config, 0); - philos_temp_del_disk(add_widgets, &obj_add_config, 1); + //philos_temp_del_disk(add_widgets, &obj_add_config, 0); + //philos_temp_del_disk(add_widgets, &obj_add_config, 1); philos_temp_generate_cmd(add_widgets, &obj_add_config); } diff --git a/source/view_edit.c b/source/view_edit.c index 4379e08..d7c43b3 100644 --- a/source/view_edit.c +++ b/source/view_edit.c @@ -100,10 +100,9 @@ void edit_show(GtkWidget *self, char* glade_path) { void wrapper_edit_init_windows_size_memory() { philos_temp_add_disk(edit_widgets, &obj_edit_config, 0); philos_temp_add_disk(edit_widgets, &obj_edit_config, 1); - philos_temp_del_disk(edit_widgets, &obj_edit_config, 0); - philos_temp_del_disk(edit_widgets, &obj_edit_config, 1); + //philos_temp_del_disk(edit_widgets, &obj_edit_config, 0); + //philos_temp_del_disk(edit_widgets, &obj_edit_config, 1); edit_init_windows(); - philos_temp_generate_cmd(edit_widgets, &obj_edit_config); } void edit_init_windows() { @@ -126,6 +125,7 @@ void combo_box_device_edit() { g_signal_handlers_block_by_func(G_OBJECT(edit_widgets->chbTempWrite), G_CALLBACK(wrapper_edit_init_windows_size_memory), NULL); philos_update_device_to_entry(edit_widgets, &obj_edit_config, 0); philos_update_device_to_entry(edit_widgets, &obj_edit_config, 1); + obj_edit_config.block_table = 1; g_signal_handlers_unblock_by_func(G_OBJECT(edit_widgets->cbtTempDevice), G_CALLBACK(combo_box_device_edit), NULL); g_signal_handlers_unblock_by_func(G_OBJECT(edit_widgets->cbtTempRead), G_CALLBACK(wrapper_edit_init_windows_size_memory), NULL); g_signal_handlers_unblock_by_func(G_OBJECT(edit_widgets->cbtTempWrite), G_CALLBACK(wrapper_edit_init_windows_size_memory), NULL); @@ -133,6 +133,7 @@ void combo_box_device_edit() { g_signal_handlers_unblock_by_func(G_OBJECT(edit_widgets->spinTempWrite), G_CALLBACK(wrapper_edit_init_windows_size_memory), NULL); g_signal_handlers_unblock_by_func(G_OBJECT(edit_widgets->chbTempRead), G_CALLBACK(wrapper_edit_init_windows_size_memory), NULL); g_signal_handlers_unblock_by_func(G_OBJECT(edit_widgets->chbTempWrite), G_CALLBACK(wrapper_edit_init_windows_size_memory), NULL); + obj_edit_config.block_table = 0; } int edit_get_soft_size() { @@ -212,10 +213,6 @@ void edit_set_select_read_device(char*** str_value) { if (str_value) { if ((*str_value)) { yon_char_parsed_copy(&obj_edit_config.disk_read, str_value); - if ((*str_value)[0] != NULL && strstr((*str_value)[0], "-") == NULL) { - int index = yon_gtk_combo_box_text_find(edit_widgets->cbtTempDevice, (*str_value)[0]); - gtk_combo_box_set_active(GTK_COMBO_BOX(edit_widgets->cbtTempDevice), index); - } } } } @@ -223,34 +220,54 @@ void edit_set_select_write_device(char*** str_value) { if (str_value) { if ((*str_value)) { yon_char_parsed_copy(&obj_edit_config.disk_write, str_value); - if ((*str_value)[0] != NULL && strstr((*str_value)[0], "-") == NULL) { - int index = yon_gtk_combo_box_text_find(edit_widgets->cbtTempDevice, (*str_value)[0]); - gtk_combo_box_set_active(GTK_COMBO_BOX(edit_widgets->cbtTempDevice), index); - } } } } -void edit_set_read_device(int* str_value, int* pow_mem) { - if (str_value && pow_mem) { - if (str_value[0] >=0 && pow_mem[0] >=0) { - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(edit_widgets->chbTempRead), 1); - edit_temp_set(str_value[0],pow_mem[0], edit_widgets->chbTempRead, +int set_template_gui_device(int flag_check_array) { + int index = -1; + if (flag_check_array==0) { + index = yon_gtk_combo_box_text_find(edit_widgets->cbtTempDevice, obj_edit_config.disk_read[0]); + gtk_combo_box_set_active(GTK_COMBO_BOX(edit_widgets->cbtTempDevice), index); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(edit_widgets->chbTempRead), 1); + edit_temp_set(obj_edit_config.i_o_limit_read[0], + obj_edit_config.i_o_limit_read_size[0], edit_widgets->chbTempRead, edit_widgets->spinTempRead, edit_widgets->cbtTempRead); + } + else if (flag_check_array==1) { + index = yon_gtk_combo_box_text_find(edit_widgets->cbtTempDevice, obj_edit_config.disk_write[0]); + gtk_combo_box_set_active(GTK_COMBO_BOX(edit_widgets->cbtTempDevice), index); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(edit_widgets->chbTempWrite), 1); + edit_temp_set(obj_edit_config.i_o_limit_write[0], + obj_edit_config.i_o_limit_write_size[0], + edit_widgets->chbTempWrite, + edit_widgets->spinTempWrite, + edit_widgets->cbtTempWrite); + } + return index; +} +void set_gui_device() { + int flag = -1; + if (obj_edit_config.disk_read && flag == -1) { + if (obj_edit_config.disk_read[0] != NULL && strstr(obj_edit_config.disk_read[0], "-") == NULL) { + flag = set_template_gui_device(0); + } + } + if (obj_edit_config.disk_write && flag == -1) { + if (obj_edit_config.disk_write[0] != NULL && strstr(obj_edit_config.disk_write[0], "-") == NULL) { + flag = set_template_gui_device(1); } + + } +} +void edit_set_read_device(int* str_value, int* pow_mem) { + if (str_value && pow_mem) { philos_array_int_copy(&obj_edit_config.i_o_limit_read, &str_value); philos_array_int_copy(&obj_edit_config.i_o_limit_read_size, &pow_mem); } } void edit_set_write_device(int* str_value, int* pow_mem) { if (str_value && pow_mem) { - if (str_value[0] >=0 && pow_mem[0] >=0) { - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(edit_widgets->chbTempWrite), 1); - edit_temp_set(str_value[0],pow_mem[0], edit_widgets->chbTempWrite, - edit_widgets->spinTempWrite, - edit_widgets->cbtTempWrite); - - } philos_array_int_copy(&obj_edit_config.i_o_limit_write, &str_value); philos_array_int_copy(&obj_edit_config.i_o_limit_write_size, &pow_mem); } diff --git a/source/view_edit.h b/source/view_edit.h index df51f00..e8bf8da 100644 --- a/source/view_edit.h +++ b/source/view_edit.h @@ -57,6 +57,7 @@ int edit_get_hard_size(); int edit_get_limit_cpu_size(); int edit_get_limit_swap_size(); void edit_config_init(); +void set_gui_device(); temp_config* get_edit_config(); void edit_set_active_widgets_device_io(GtkWidget *check, GtkWidget *spin, GtkWidget *combo); void edit_set_spin_adjustment(GtkWidget *check, GtkWidget *spin, GtkWidget *combo, size_t value); diff --git a/ubl-settings-resourcequota.glade b/ubl-settings-resourcequota.glade index 687a4f0..8a29fb4 100644 --- a/ubl-settings-resourcequota.glade +++ b/ubl-settings-resourcequota.glade @@ -2382,6 +2382,21 @@ 1 10 + + 100 + 1 + 10 + + + 100 + 1 + 10 + + + 100 + 1 + 10 + True False @@ -3365,6 +3380,7 @@ limit False True natural + adjustment1 natural UTF-8 True @@ -3381,6 +3397,7 @@ limit True False vertical + adjustment1 False @@ -3477,6 +3494,7 @@ limit False True natural + adjustment2 natural UTF-8 1024 @@ -3494,6 +3512,7 @@ limit True False vertical + adjustment2 False @@ -3609,6 +3628,7 @@ limit False True natural + adjustment3 natural UTF-8 True @@ -3625,6 +3645,7 @@ limit True False vertical + adjustment3 False -- 2.35.1 From 92972e8869945806077e2fc0c3bf91151d93e14e Mon Sep 17 00:00:00 2001 From: Igor Belitskiy Date: Thu, 6 Jul 2023 16:37:23 +0600 Subject: [PATCH 80/91] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=20=D0=B1=D0=B0=D0=B3=20=D1=81=20=D0=BD=D0=B5?= =?UTF-8?q?=D0=B0=D0=BA=D1=82=D0=B8=D0=B2=D0=BD=D1=8B=D0=BC=20=D1=8D=D0=BB?= =?UTF-8?q?=D0=B5=D0=BC=D0=B5=D0=BD=D1=82=D0=BE=D0=BC=20=D0=B4=D0=BE=D1=87?= =?UTF-8?q?=D0=B5=D1=80=D0=BD=D0=B5=D0=B3=D0=BE=20=D0=BE=D0=BA=D0=BD=D0=B0?= =?UTF-8?q?=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D1=82=D1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/view_add.c | 1 + source/view_edit.c | 1 + 2 files changed, 2 insertions(+) diff --git a/source/view_add.c b/source/view_add.c index ddb72d3..228dbdf 100644 --- a/source/view_add.c +++ b/source/view_add.c @@ -90,6 +90,7 @@ void combo_box_device() { g_signal_handlers_block_by_func(G_OBJECT(add_widgets->chbTempWrite), G_CALLBACK(event_check_io_device), NULL); philos_update_device_to_entry(add_widgets, &obj_add_config, 0); philos_update_device_to_entry(add_widgets, &obj_add_config, 1); + add_init_windows(); g_signal_handlers_unblock_by_func(G_OBJECT(add_widgets->cbtTempDevice), G_CALLBACK(combo_box_device), NULL); g_signal_handlers_unblock_by_func(G_OBJECT(add_widgets->cbtTempRead), G_CALLBACK(event_check_io_device), NULL); g_signal_handlers_unblock_by_func(G_OBJECT(add_widgets->cbtTempWrite), G_CALLBACK(event_check_io_device), NULL); diff --git a/source/view_edit.c b/source/view_edit.c index d7c43b3..d380dd5 100644 --- a/source/view_edit.c +++ b/source/view_edit.c @@ -125,6 +125,7 @@ void combo_box_device_edit() { g_signal_handlers_block_by_func(G_OBJECT(edit_widgets->chbTempWrite), G_CALLBACK(wrapper_edit_init_windows_size_memory), NULL); philos_update_device_to_entry(edit_widgets, &obj_edit_config, 0); philos_update_device_to_entry(edit_widgets, &obj_edit_config, 1); + edit_init_windows(); obj_edit_config.block_table = 1; g_signal_handlers_unblock_by_func(G_OBJECT(edit_widgets->cbtTempDevice), G_CALLBACK(combo_box_device_edit), NULL); g_signal_handlers_unblock_by_func(G_OBJECT(edit_widgets->cbtTempRead), G_CALLBACK(wrapper_edit_init_windows_size_memory), NULL); -- 2.35.1 From 02ee29c94c3f04aa9442dba5caec5be6cec00940 Mon Sep 17 00:00:00 2001 From: Igor Belitskiy Date: Thu, 6 Jul 2023 16:50:09 +0600 Subject: [PATCH 81/91] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB=20=D0=B1=D0=B0=D0=B3=20=D1=81=20=D1=80=D0=B5=D0=B4?= =?UTF-8?q?=D0=B0=D0=BA=D1=82=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8?= =?UTF-8?q?=D0=B5=20=D0=B4=D0=B8=D1=81=D0=BA=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/view_edit.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/source/view_edit.c b/source/view_edit.c index d380dd5..746ddf4 100644 --- a/source/view_edit.c +++ b/source/view_edit.c @@ -62,11 +62,11 @@ void edit_event(temp_set_window *widgets) { g_signal_connect(G_OBJECT(widgets->spinCPULimitTemp),"value-changed",G_CALLBACK(edit_init_windows), NULL); g_signal_connect(G_OBJECT(widgets->spinTempRead),"value-changed",G_CALLBACK(wrapper_edit_init_windows_size_memory), NULL); g_signal_connect(G_OBJECT(widgets->spinTempWrite),"value-changed",G_CALLBACK(wrapper_edit_init_windows_size_memory), NULL); - g_signal_connect(G_OBJECT(widgets->cmSevereRestrictionTemp),"changed",G_CALLBACK(wrapper_edit_init_windows_size_memory), widgets->spiSevereRestrictionTemp); - g_signal_connect(G_OBJECT(widgets->cmbSevereRestrictionTemp),"changed",G_CALLBACK(wrapper_edit_init_windows_size_memory), widgets->spinSevereRestrictionTemp); - g_signal_connect(G_OBJECT(widgets->cmbPaddingFLTemp),"changed",G_CALLBACK(wrapper_edit_init_windows_size_memory), widgets->spinPaddingFLTemp); - g_signal_connect(G_OBJECT(widgets->cbtTempRead),"changed",G_CALLBACK(wrapper_edit_init_windows_size_memory), widgets->spinTempRead); - g_signal_connect(G_OBJECT(widgets->cbtTempWrite),"changed",G_CALLBACK(wrapper_edit_init_windows_size_memory), widgets->spinTempWrite); + g_signal_connect(G_OBJECT(widgets->cmSevereRestrictionTemp),"changed",G_CALLBACK(wrapper_edit_init_windows_size_memory), NULL); + g_signal_connect(G_OBJECT(widgets->cmbSevereRestrictionTemp),"changed",G_CALLBACK(wrapper_edit_init_windows_size_memory), NULL); + g_signal_connect(G_OBJECT(widgets->cmbPaddingFLTemp),"changed",G_CALLBACK(wrapper_edit_init_windows_size_memory), NULL); + g_signal_connect(G_OBJECT(widgets->cbtTempRead),"changed",G_CALLBACK(wrapper_edit_init_windows_size_memory), NULL); + g_signal_connect(G_OBJECT(widgets->cbtTempWrite),"changed",G_CALLBACK(wrapper_edit_init_windows_size_memory), NULL); g_signal_connect(G_OBJECT(widgets->cbtTempDevice),"changed",G_CALLBACK(combo_box_device_edit), NULL); } -- 2.35.1 From 0f08fcd412785d2e4ed7d5c3e13d79942f07601b Mon Sep 17 00:00:00 2001 From: Igor Belitskiy Date: Thu, 6 Jul 2023 17:04:18 +0600 Subject: [PATCH 82/91] fix --- source/philos_utils.c | 3 --- source/philos_utils.h | 1 - source/view_edit.c | 6 ++---- 3 files changed, 2 insertions(+), 8 deletions(-) diff --git a/source/philos_utils.c b/source/philos_utils.c index 16686f9..b32822e 100644 --- a/source/philos_utils.c +++ b/source/philos_utils.c @@ -674,9 +674,6 @@ void philos_update_device_to_entry(temp_set_window *widgets, temp_config* _confi // flag_check_array = 0 READ // flag_check_array = 1 WRITE void philos_temp_add_disk(temp_set_window *widgets, temp_config* _config, int flag_check_array) { - if (_config->block_table == 1) { - return; - } char* disk = gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(widgets->cbtTempDevice)); disk = yon_char_divide_search(disk, " ", -1); int disk_id = gtk_combo_box_get_active(GTK_COMBO_BOX(widgets->cbtTempDevice)); diff --git a/source/philos_utils.h b/source/philos_utils.h index 6ca960e..8ec5af6 100644 --- a/source/philos_utils.h +++ b/source/philos_utils.h @@ -29,7 +29,6 @@ typedef struct { int* i_o_limit_write_size; int size; int size_disk; - int block_table; } temp_config; typedef struct { diff --git a/source/view_edit.c b/source/view_edit.c index 746ddf4..5805fe0 100644 --- a/source/view_edit.c +++ b/source/view_edit.c @@ -126,7 +126,6 @@ void combo_box_device_edit() { philos_update_device_to_entry(edit_widgets, &obj_edit_config, 0); philos_update_device_to_entry(edit_widgets, &obj_edit_config, 1); edit_init_windows(); - obj_edit_config.block_table = 1; g_signal_handlers_unblock_by_func(G_OBJECT(edit_widgets->cbtTempDevice), G_CALLBACK(combo_box_device_edit), NULL); g_signal_handlers_unblock_by_func(G_OBJECT(edit_widgets->cbtTempRead), G_CALLBACK(wrapper_edit_init_windows_size_memory), NULL); g_signal_handlers_unblock_by_func(G_OBJECT(edit_widgets->cbtTempWrite), G_CALLBACK(wrapper_edit_init_windows_size_memory), NULL); @@ -134,7 +133,6 @@ void combo_box_device_edit() { g_signal_handlers_unblock_by_func(G_OBJECT(edit_widgets->spinTempWrite), G_CALLBACK(wrapper_edit_init_windows_size_memory), NULL); g_signal_handlers_unblock_by_func(G_OBJECT(edit_widgets->chbTempRead), G_CALLBACK(wrapper_edit_init_windows_size_memory), NULL); g_signal_handlers_unblock_by_func(G_OBJECT(edit_widgets->chbTempWrite), G_CALLBACK(wrapper_edit_init_windows_size_memory), NULL); - obj_edit_config.block_table = 0; } int edit_get_soft_size() { @@ -249,12 +247,12 @@ int set_template_gui_device(int flag_check_array) { } void set_gui_device() { int flag = -1; - if (obj_edit_config.disk_read && flag == -1) { + if (obj_edit_config.disk_read) { if (obj_edit_config.disk_read[0] != NULL && strstr(obj_edit_config.disk_read[0], "-") == NULL) { flag = set_template_gui_device(0); } } - if (obj_edit_config.disk_write && flag == -1) { + if (obj_edit_config.disk_write) { if (obj_edit_config.disk_write[0] != NULL && strstr(obj_edit_config.disk_write[0], "-") == NULL) { flag = set_template_gui_device(1); } -- 2.35.1 From 161133fc9b4a92e8015ea96cfb61eeaa6482e56b Mon Sep 17 00:00:00 2001 From: Igor Belitskiy Date: Thu, 6 Jul 2023 17:44:08 +0600 Subject: [PATCH 83/91] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB=20spin=20=D1=82=D0=B5=D1=80=D0=BC=D0=B8=D0=BD?= =?UTF-8?q?=D0=B0=D0=BB=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/ubl-settings-resourcequota.c | 25 ++++++++++++++----------- source/view_add.c | 2 -- ubl-settings-resourcequota.glade | 1 + 3 files changed, 15 insertions(+), 13 deletions(-) diff --git a/source/ubl-settings-resourcequota.c b/source/ubl-settings-resourcequota.c index e4c31e1..7776967 100644 --- a/source/ubl-settings-resourcequota.c +++ b/source/ubl-settings-resourcequota.c @@ -209,11 +209,14 @@ main_window *setup_window(){ void main_update_dispatcher() { int second = gtk_spin_button_get_value(GTK_SPIN_BUTTON(widgets->spinUpdateDispatcher)); - char* str_second = yon_char_from_int(second); - char *cmd = yon_char_get_augumented("systemd-cgtop -d ", str_second); - yon_terminal_integrated_launch(widgets->vteDispatcher, cmd, NULL, NULL); - free(str_second); - free(cmd); + if (second>0) { + char* str_second = yon_char_from_int(second); + char *cmd = yon_char_get_augumented("systemd-cgtop -d ", str_second); + yon_terminal_integrated_launch(widgets->vteDispatcher, cmd, NULL, NULL); + free(str_second); + free(cmd); + } + } void main_update_processes() { @@ -438,14 +441,12 @@ 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++) { + int index_1 = 0; + for (index_1=0; index_1 < size; 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 (strstr(key, "IOReadBandwidthMax") || strstr(key, "IOWriteBandwidthMax")) { + break; } if (yon_char_find_count(key, "MemoryHigh") != 0) { philos_set_pow_size_memory(yon_char_new(value), &main_config.soft_raw_limit_size, index, array_size_pow); @@ -464,6 +465,8 @@ void str_split_value(char* values, int index) { set_size_memory_integer(yon_char_new(value), &main_config.cpu_limit, index); } } + get_param_io_limit(arr_values, index_1, size,index, "IOReadBandwidthMax"); + get_param_io_limit(arr_values, index_1, size,index, "IOWriteBandwidthMax"); } diff --git a/source/view_add.c b/source/view_add.c index 228dbdf..f9e7628 100644 --- a/source/view_add.c +++ b/source/view_add.c @@ -75,8 +75,6 @@ void event_check_io_device() { add_init_windows(); philos_temp_add_disk(add_widgets, &obj_add_config, 0); philos_temp_add_disk(add_widgets, &obj_add_config, 1); - //philos_temp_del_disk(add_widgets, &obj_add_config, 0); - //philos_temp_del_disk(add_widgets, &obj_add_config, 1); philos_temp_generate_cmd(add_widgets, &obj_add_config); } diff --git a/ubl-settings-resourcequota.glade b/ubl-settings-resourcequota.glade index 8a29fb4..658900c 100644 --- a/ubl-settings-resourcequota.glade +++ b/ubl-settings-resourcequota.glade @@ -2377,6 +2377,7 @@ + 1 10000 1 1 -- 2.35.1 From 01acccd0032f15f9cf32a764a76c07c3cf1e09ea Mon Sep 17 00:00:00 2001 From: Igor Belitskiy Date: Fri, 7 Jul 2023 09:12:14 +0600 Subject: [PATCH 84/91] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB=20=D1=81=D0=BE=D0=BE=D0=B1=D1=89=D0=B5=D0=BD=D0=B8?= =?UTF-8?q?=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/ubl-settings-resourcequota.c | 8 +++++++- source/ubl-settings-resourcequota.h | 2 +- ubl-settings-resourcequota.glade | 2 +- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/source/ubl-settings-resourcequota.c b/source/ubl-settings-resourcequota.c index 7776967..37b7f20 100644 --- a/source/ubl-settings-resourcequota.c +++ b/source/ubl-settings-resourcequota.c @@ -140,6 +140,7 @@ main_window *setup_window(){ widgets->tvc6 = GTK_TREE_VIEW_COLUMN(gtk_builder_get_object(builder,"tvc6")); widgets->tvc7 = GTK_TREE_VIEW_COLUMN(gtk_builder_get_object(builder,"tvc7")); + widgets->scrollDispatcher = yon_gtk_builder_get_widget(builder,"scrollDispatcher"); widgets->btnMainShowAllEmpty = yon_gtk_builder_get_widget(builder,"btnMainShowAllEmpty"); widgets->btnMainShowCoreStream = yon_gtk_builder_get_widget(builder,"btnMainShowCoreStream"); @@ -829,8 +830,13 @@ void event_all(main_window *widgets) { } +void fn_scroll(GdkEventScroll self) { + +} + void main_event(main_window *widgets) { /* Signal connection | Присоединение сигналов */ + g_signal_connect(G_OBJECT(widgets->vteDispatcher), "scroll-event", G_CALLBACK(fn_scroll), NULL); g_signal_connect(G_OBJECT(widgets->Window), "destroy", G_CALLBACK(gtk_main_quit), NULL); g_signal_connect(G_OBJECT(widgets->notebookMain), "switch-page", G_CALLBACK(select_page_notebook), NULL); @@ -997,7 +1003,7 @@ void wrapper_all_save() { void wrapper_global_save() { if (template_format_str_save(CMD_SAVE_GLOBAL, CMD_REMOVE_GLOBAL)) { - yon_ubl_status_box_render(GLOBAL_LOAD_SUCCESS,BACKGROUND_IMAGE_SUCCESS_TYPE); + yon_ubl_status_box_render(GLOBAL_SAVE_SUCCESS,BACKGROUND_IMAGE_SUCCESS_TYPE); main_config.flag_save-=1; } else { diff --git a/source/ubl-settings-resourcequota.h b/source/ubl-settings-resourcequota.h index 135b7b7..7440c7a 100755 --- a/source/ubl-settings-resourcequota.h +++ b/source/ubl-settings-resourcequota.h @@ -113,7 +113,7 @@ typedef struct GtkTreeViewColumn *tvc5; GtkTreeViewColumn *tvc6; GtkTreeViewColumn *tvc7; - + GtkWidget *scrollDispatcher; GtkWidget *btnDelQuotas; GtkWidget *cbtMainInfoLevel2; GtkWidget *cbtMainInfo; diff --git a/ubl-settings-resourcequota.glade b/ubl-settings-resourcequota.glade index 658900c..31fc972 100644 --- a/ubl-settings-resourcequota.glade +++ b/ubl-settings-resourcequota.glade @@ -3394,7 +3394,7 @@ limit - + True False vertical -- 2.35.1 From 736deabf2fa55ccef24d37f2f8722f6664f381e3 Mon Sep 17 00:00:00 2001 From: Igor Belitskiy Date: Fri, 7 Jul 2023 09:51:47 +0600 Subject: [PATCH 85/91] =?UTF-8?q?=D0=A1=D0=B4=D0=B5=D0=BB=D0=B0=D0=BB=20?= =?UTF-8?q?=D0=BF=D0=B5=D1=80=D0=B5=D0=BD=D0=BE=D1=81=20=D1=82=D0=B5=D0=BA?= =?UTF-8?q?=D1=81=D1=82=D0=B0=20=D0=B2=20=D1=82=D0=B0=D0=B1=D0=BB=D0=B8?= =?UTF-8?q?=D1=86=D0=B5=20=D0=B7=D0=B0=D0=B4=D0=B0=D1=87=D0=B0=20=E2=84=96?= =?UTF-8?q?18?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ubl-settings-resourcequota.glade | 67 ++++++++++++++++++++++++++++---- 1 file changed, 59 insertions(+), 8 deletions(-) diff --git a/ubl-settings-resourcequota.glade b/ubl-settings-resourcequota.glade index 31fc972..739d081 100644 --- a/ubl-settings-resourcequota.glade +++ b/ubl-settings-resourcequota.glade @@ -2398,6 +2398,16 @@ 1 10 + + 100 + 1 + 10 + + + 100 + 1 + 10 + True False @@ -2834,6 +2844,7 @@ translated and supported by community. True True + adjustment5 liststore 0 @@ -2841,10 +2852,15 @@ translated and supported by community. + True + autosize Type quota True - + + 15 + word + 0 @@ -2853,11 +2869,16 @@ translated and supported by community. + True + autosize Quota object True - + + word + 15 + 1 @@ -2866,11 +2887,16 @@ object + True + autosize Soft RAM limit, (volume) True - + + 8 + word + 2 @@ -2879,11 +2905,16 @@ object + True + autosize Hard RAM limit, (volume) True - + + 8 + word + 3 @@ -2892,12 +2923,17 @@ object + True + autosize Swap file limit (volume) True - + + 8 + word + 4 @@ -2906,11 +2942,16 @@ limit + True + autosize CPU limit (%) True - + + 8 + word + 5 @@ -2919,12 +2960,17 @@ limit + True + autosize I/O limit (read) True - + + word + 10 + 6 @@ -2933,12 +2979,17 @@ limit + True + autosize I/O limit (write) True - + + word + 10 + 7 -- 2.35.1 From e4f6f844ee14fce0260315064cef8fde825fcfeb Mon Sep 17 00:00:00 2001 From: Igor Belitskiy Date: Fri, 7 Jul 2023 10:14:06 +0600 Subject: [PATCH 86/91] =?UTF-8?q?=D0=A1=D0=B4=D0=B5=D0=BB=D0=B0=D0=BB=20?= =?UTF-8?q?=D0=BF=D0=B5=D1=80=D0=B5=D0=BD=D0=BE=D1=81=20=D0=B2=20=D1=81?= =?UTF-8?q?=D1=82=D1=80=D0=BE=D0=BA=D0=B5=20=D1=81=D0=BE=D0=BE=D0=B1=D1=89?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ubl-settings-resourcequota.glade | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/ubl-settings-resourcequota.glade b/ubl-settings-resourcequota.glade index 739d081..286a199 100644 --- a/ubl-settings-resourcequota.glade +++ b/ubl-settings-resourcequota.glade @@ -134,6 +134,8 @@ True False start + 5 + 5 Configuring CPU and RAM quota settings for groups and users of the system True 0 @@ -2744,6 +2746,8 @@ translated and supported by community. 5 6 6 + True + 0 -- 2.35.1 From 9351e553abc84085c10166c6213d893d6247c7cf Mon Sep 17 00:00:00 2001 From: Igor Belitskiy Date: Fri, 7 Jul 2023 11:01:54 +0600 Subject: [PATCH 87/91] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB=20=D0=B1=D0=B0=D0=B3=20=D1=81=20=D1=81=D0=BE=D1=85?= =?UTF-8?q?=D1=80=D0=B0=D0=BD=D0=B5=D0=BD=D0=B8=D0=B5=D0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/ubl-settings-resourcequota.c | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/source/ubl-settings-resourcequota.c b/source/ubl-settings-resourcequota.c index 37b7f20..b5c6917 100644 --- a/source/ubl-settings-resourcequota.c +++ b/source/ubl-settings-resourcequota.c @@ -1137,8 +1137,6 @@ int template_format_str_save(char* source_set_cmd, char* source_remove_cmd) { if (cmd_set != NULL) { free(cmd_set); } - - main_config.flag_set_data = 0; return 1; @@ -1170,7 +1168,6 @@ char* template_format_str_set_save(char* source_set_cmd) { char* template_format_str_remove_save(char* source_remove_cmd) { char* cmd = yon_char_new(source_remove_cmd); - int flag_save = 0; if (main_config.size_array_del_line == 0) { return NULL; } @@ -1178,12 +1175,11 @@ char* template_format_str_remove_save(char* source_remove_cmd) { char* key = main_config.array_del_line[index]; if (key != NULL) { cmd = yon_char_unite(cmd, " " , key, " ", NULL); - flag_save = 1; } } - if (flag_save) { - philos_free_string_array(&main_config.array_del_line, main_config.size_array_del_line); - main_config.size_array_del_line = 0; + if (strlen(cmd) > strlen(source_remove_cmd) && check_save()== 0) { + //philos_free_string_array(&main_config.array_del_line, main_config.size_array_del_line); + //main_config.size_array_del_line = 0; return cmd; } free(cmd); -- 2.35.1 From 7c6b22c25b76c0a22f003db5b49ecf0d4fe7115c Mon Sep 17 00:00:00 2001 From: Igor Belitskiy Date: Fri, 7 Jul 2023 12:47:24 +0600 Subject: [PATCH 88/91] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB=20=D0=BF=D0=B0=D1=80=D1=81=D0=B5=D1=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- #ubl-settings-resourcequota.glade# | 4224 +++++++++++++++++++++++++++ source/ubl-settings-resourcequota.c | 32 +- 2 files changed, 4252 insertions(+), 4 deletions(-) create mode 100644 #ubl-settings-resourcequota.glade# diff --git a/#ubl-settings-resourcequota.glade# b/#ubl-settings-resourcequota.glade# new file mode 100644 index 0000000..1715caf --- /dev/null +++ b/#ubl-settings-resourcequota.glade# @@ -0,0 +1,4224 @@ + + + + + + + False + False + True + center + com.ublinux.ubl-settings-resourcequota + dialog + True + ubl-settings-resourcequota + 1.0 + Copyright © 2022 - 2023, UBSoft LLC + CPU and RAM quotas + https://wiki.ublinux.ru/ru/Программное_обеспечение/Программы_и_утилиты/Все/ubl-settings-resourcequota + Project Home Page + Это приложение распространяется без каких-либо гарантий. +Подробнее в <a href="https://www.gnu.org/licenses/old-licenses/gpl-2.0.html">GNU General Public License, версии 2 или позднее</a>. + UBGroup + UBGroup + com.ublinux.ubl-settings-resourcequota + True + gpl-2-0 + + + True + False + vertical + 2 + + + False + end + + + False + False + 1 + + + + + + + + + + True + False + True + + + True + False + 5 + 5 + 5 + 5 + 2 + ubl-settings-resourcequota + + + + + + + + + + True + False + center + + + 90 + True + False + 5 + 5 + 5 + 5 + 6 + 6 + 64 + com.ublinux.ubl-settings-resourcequota + + + False + True + 0 + + + + + True + False + + + True + False + + + True + False + vertical + + + 255 + True + False + end + CPU and RAM quotas + 0 + + + + + + + + True + True + 0 + + + + + 255 + True + False + start + 5 + 5 + Configuring CPU and RAM quota settings for groups and users of the system + True + 0 + + + + + + + + True + True + 1 + + + + + False + True + 0 + + + + + True + True + 0 + + + + + True + True + 1 + + + + + 100 + 1 + 10 + + + 100 + 1 + 10 + + + 100 + 1 + 10 + + + 100 + 1 + 10 + + + 100 + 1 + 10 + + + 100 + 1 + 10 + + + False + start + False + com.ublinux.ubl-settings-resourcequota + + + True + False + 5 + 5 + 5 + 5 + 5 + 5 + vertical + + + True + False + + + True + False + 5 + 5 + 5 + 5 + 5 + 5 + Quota object + + + False + True + 0 + + + + + 100 + True + False + 5 + 5 + 5 + 5 + 5 + 5 + 0 + 0 + + User + Process + Slice + + + + True + True + 1 + + + + + True + False + 5 + 5 + 5 + 5 + 5 + 5 + + + False + True + 2 + + + + + False + True + 0 + + + + + True + False + vertical + + + True + False + 5 + 5 + 5 + 5 + 5 + 5 + 0.019999999552965164 + in + + + True + False + 5 + + + True + False + + + True + False + vertical + + + True + False + 5 + 5 + 5 + 5 + 5 + 5 + Soft Restriction + 0 + + + False + True + 0 + + + + + True + False + + + True + True + False + 5 + 5 + 5 + 5 + 5 + 5 + True + + + False + True + 0 + + + + + True + True + 5 + 5 + 5 + 5 + 5 + 5 + 7 + a1 + + + False + True + 1 + + + + + True + False + 5 + 5 + 5 + 5 + 5 + 5 + 0 + 0 + + Kb + Mb + Gb + Tb + + + + False + True + 2 + + + + + False + True + 1 + + + + + True + True + 0 + + + + + True + False + vertical + + + True + False + 5 + 5 + 5 + 5 + 5 + 5 + Severe Restriction + 0 + + + False + True + 0 + + + + + True + False + + + True + True + False + 5 + 5 + 5 + 5 + 5 + 5 + True + + + False + True + 0 + + + + + True + True + 5 + 5 + 5 + 5 + 5 + 5 + 7 + a2 + + + False + True + 1 + + + + + True + False + 5 + 5 + 5 + 5 + 5 + 5 + 0 + 0 + + Kb + Mb + Gb + Tb + + + + False + True + 2 + + + + + False + True + 1 + + + + + True + True + 1 + + + + + + + + + True + False + 5 + 5 + 5 + 5 + 5 + 5 + RAM limit + + + + + False + True + 0 + + + + + True + False + + + True + False + 5 + 5 + 5 + 5 + 5 + 5 + 0.019999999552965164 + in + + + True + False + 5 + + + True + False + + + True + True + False + 5 + 5 + 5 + 5 + 5 + 5 + True + + + False + True + 0 + + + + + True + True + 5 + 5 + 5 + 5 + 5 + 5 + 7 + a3 + + + False + True + 1 + + + + + True + False + 5 + 5 + 5 + 5 + 5 + 5 + 0 + 0 + + Kb + Mb + Gb + Tb + + + + False + True + 2 + + + + + + + + + True + False + 5 + 5 + 5 + 5 + 5 + 5 + Paging file limit + + + + + False + True + 0 + + + + + True + False + 5 + 5 + 5 + 5 + 5 + 5 + 0.019999999552965164 + in + + + True + False + 5 + + + True + False + + + True + True + False + 5 + 5 + 5 + 5 + 5 + 5 + True + + + False + True + 0 + + + + + True + True + 5 + 5 + 5 + 5 + 5 + 5 + 7 + a4 + + + False + True + 1 + + + + + True + False + 5 + 5 + 5 + 5 + 5 + 5 + % + + + False + True + 2 + + + + + + + + + True + False + 5 + 5 + 5 + 5 + 5 + 5 + CPU limit + + + + + True + True + 1 + + + + + False + True + 1 + + + + + True + False + 5 + 5 + 5 + 5 + 5 + 5 + 0.019999999552965164 + in + + + True + False + 5 + + + True + False + vertical + + + True + False + + + True + False + 5 + 5 + 5 + 5 + 5 + 5 + Device: + 0 + + + False + True + 0 + + + + + True + False + 5 + 5 + 5 + 5 + 5 + 5 + + + True + True + 1 + + + + + False + True + 0 + + + + + True + False + + + True + False + vertical + + + True + False + 5 + 5 + 5 + 5 + 5 + 5 + Read + 0 + + + False + True + 0 + + + + + True + False + + + True + True + False + 5 + 5 + 5 + 5 + 5 + 5 + True + + + False + True + 0 + + + + + True + True + 5 + 5 + 5 + 5 + 5 + 5 + 7 + a5 + + + False + True + 1 + + + + + True + False + 5 + 5 + 5 + 5 + 5 + 5 + 0 + 0 + + Kb + Mb + Gb + Tb + + + + False + True + 2 + + + + + False + True + 1 + + + + + True + True + 0 + + + + + True + False + vertical + + + True + False + 5 + 5 + 5 + 5 + 5 + 5 + Write + 0 + + + False + True + 0 + + + + + True + False + + + True + True + False + 5 + 5 + 5 + 5 + 5 + 5 + True + + + False + True + 0 + + + + + True + True + 5 + 5 + 5 + 5 + 5 + 5 + 7 + a6 + + + False + True + 1 + + + + + True + False + 5 + 5 + 5 + 5 + 5 + 5 + 0 + 0 + + Kb + Mb + Gb + Tb + + + + False + True + 2 + + + + + False + True + 1 + + + + + True + True + 1 + + + + + False + True + 1 + + + + + + + + + True + False + 5 + 5 + 5 + 5 + 5 + 5 + Input/Output limit of block devices + + + + + False + True + 2 + + + + + True + False + 5 + 5 + 5 + 5 + 5 + 5 + 0.019999999552965164 + in + + + True + False + 5 + + + True + True + 5 + 5 + 5 + 5 + 5 + 5 + + + + + + + True + False + Manual input (for advanced users) + + + + + False + True + 3 + + + + + False + True + 1 + + + + + True + False + + + True + False + + + False + True + 0 + + + + + True + True + True + 5 + 5 + 5 + 5 + 5 + 5 + + + True + False + + + True + False + gtk-stop + + + False + True + 0 + + + + + True + False + 5 + 5 + 5 + 5 + Cancel + + + False + True + 1 + + + + + + + False + True + end + 1 + + + + + True + True + True + 5 + 5 + 5 + 5 + 5 + 5 + + + True + False + + + True + False + gtk-save + + + False + True + 0 + + + + + True + False + 5 + 5 + 5 + 5 + Save + + + False + True + 1 + + + + + + + False + True + end + 1 + + + + + False + True + 2 + + + + + + + True + False + True + + + True + False + Settings quotas - Adding + + + + + + + + True + False + 32 + com.ublinux.ubl-settings-resourcequota + 5 + + + + + + + False + start + False + com.ublinux.ubl-settings-resourcequota + + + True + False + 5 + 5 + 5 + 5 + 5 + 5 + vertical + + + True + False + + + True + False + 5 + 5 + 5 + 5 + 5 + 5 + Quota object + + + False + True + 0 + + + + + True + False + 5 + 5 + 5 + 5 + 5 + 5 + + + False + True + 1 + + + + + True + False + 5 + 5 + 5 + 5 + 5 + 5 + + + False + True + 2 + + + + + False + True + 0 + + + + + True + False + vertical + + + True + False + 5 + 5 + 5 + 5 + 5 + 5 + 0.019999999552965164 + in + + + True + False + 5 + + + True + False + + + True + False + vertical + + + True + False + 5 + 5 + 5 + 5 + 5 + 5 + Soft Restriction + 0 + + + False + True + 0 + + + + + True + False + + + True + True + False + 5 + 5 + 5 + 5 + 5 + 5 + True + + + False + True + 0 + + + + + True + True + 5 + 5 + 5 + 5 + 5 + 5 + 7 + a1 + + + False + True + 1 + + + + + True + False + 5 + 5 + 5 + 5 + 5 + 5 + 0 + 0 + + Kb + Mb + Gb + Tb + + + + False + True + 2 + + + + + False + True + 1 + + + + + True + True + 0 + + + + + True + False + vertical + + + True + False + 5 + 5 + 5 + 5 + 5 + 5 + Severe Restriction + 0 + + + False + True + 0 + + + + + True + False + + + True + True + False + 5 + 5 + 5 + 5 + 5 + 5 + True + + + False + True + 0 + + + + + True + True + 5 + 5 + 5 + 5 + 5 + 5 + 7 + a2 + + + False + True + 1 + + + + + True + False + 5 + 5 + 5 + 5 + 5 + 5 + 0 + 0 + + Kb + Mb + Gb + Tb + + + + False + True + 2 + + + + + False + True + 1 + + + + + True + True + 1 + + + + + + + + + True + False + 5 + 5 + 5 + 5 + 5 + 5 + RAM limit + + + + + False + True + 0 + + + + + True + False + + + True + False + 5 + 5 + 5 + 5 + 5 + 5 + 0.019999999552965164 + in + + + True + False + 5 + + + True + False + + + True + True + False + 5 + 5 + 5 + 5 + 5 + 5 + True + + + False + True + 0 + + + + + True + True + 5 + 5 + 5 + 5 + 5 + 5 + 7 + a3 + + + False + True + 1 + + + + + True + False + 5 + 5 + 5 + 5 + 5 + 5 + 0 + 0 + + Kb + Mb + Gb + Tb + + + + False + True + 2 + + + + + + + + + True + False + 5 + 5 + 5 + 5 + 5 + 5 + Paging file limit + + + + + False + True + 0 + + + + + True + False + 5 + 5 + 5 + 5 + 5 + 5 + 0.019999999552965164 + in + + + True + False + 5 + + + True + False + + + True + True + False + 5 + 5 + 5 + 5 + 5 + 5 + True + + + False + True + 0 + + + + + True + True + 5 + 5 + 5 + 5 + 5 + 5 + 7 + a4 + + + False + True + 1 + + + + + True + False + 5 + 5 + 5 + 5 + 5 + 5 + % + + + False + True + 2 + + + + + + + + + True + False + 5 + 5 + 5 + 5 + 5 + 5 + CPU limit + + + + + True + True + 1 + + + + + False + True + 1 + + + + + True + False + 5 + 5 + 5 + 5 + 5 + 5 + 0.019999999552965164 + in + + + True + False + 5 + + + True + False + vertical + + + True + False + + + True + False + 5 + 5 + 5 + 5 + 5 + 5 + Device: + 0 + + + False + True + 0 + + + + + True + True + False + 5 + 5 + 5 + 5 + 5 + 5 + + + True + True + 1 + + + + + False + True + 0 + + + + + True + False + + + True + False + vertical + + + True + False + 5 + 5 + 5 + 5 + 5 + 5 + Read + 0 + + + False + True + 0 + + + + + True + False + + + True + True + False + 5 + 5 + 5 + 5 + 5 + 5 + True + + + False + True + 0 + + + + + True + True + 5 + 5 + 5 + 5 + 5 + 5 + 7 + a5 + + + False + True + 1 + + + + + True + False + 5 + 5 + 5 + 5 + 5 + 5 + 0 + 0 + + Kb + Mb + Gb + Tb + + + + False + True + 2 + + + + + False + True + 1 + + + + + True + True + 0 + + + + + True + False + vertical + + + True + False + 5 + 5 + 5 + 5 + 5 + 5 + Write + 0 + + + False + True + 0 + + + + + True + False + + + True + True + False + 5 + 5 + 5 + 5 + 5 + 5 + True + + + False + True + 0 + + + + + True + True + 5 + 5 + 5 + 5 + 5 + 5 + 7 + a6 + + + False + True + 1 + + + + + True + False + 5 + 5 + 5 + 5 + 5 + 5 + 0 + 0 + + Kb + Mb + Gb + Tb + + + + False + True + 2 + + + + + False + True + 1 + + + + + True + True + 1 + + + + + False + True + 1 + + + + + + + + + True + False + 5 + 5 + 5 + 5 + 5 + 5 + Input/Output limit of block devices + + + + + False + True + 2 + + + + + True + False + 5 + 5 + 5 + 5 + 5 + 5 + 0.019999999552965164 + in + + + True + False + 5 + + + True + True + 5 + 5 + 5 + 5 + 5 + 5 + + + + + + + True + False + Manual input (for advanced users) + + + + + False + True + 3 + + + + + False + True + 1 + + + + + True + False + + + True + False + + + False + True + 0 + + + + + True + True + True + 5 + 5 + 5 + 5 + 5 + 5 + + + True + False + + + True + False + gtk-stop + + + False + True + 0 + + + + + True + False + 5 + 5 + 5 + 5 + Cancel + + + False + True + 1 + + + + + + + False + True + end + 1 + + + + + True + True + True + 5 + 5 + 5 + 5 + 5 + 5 + + + True + False + + + True + False + gtk-save + + + False + True + 0 + + + + + True + False + 5 + 5 + 5 + 5 + Save + + + False + True + 1 + + + + + + + False + True + end + 1 + + + + + False + True + 2 + + + + + + + True + False + True + + + True + False + Settings quotas - Editing + + + + + + + + True + False + 32 + com.ublinux.ubl-settings-resourcequota + 5 + + + + + + + 1 + 10000 + 1 + 1 + 10 + + + 100 + 1 + 10 + + + 100 + 1 + 10 + + + 100 + 1 + 10 + + + 100 + 1 + 10 + + + 100 + 1 + 10 + + + True + False + process-stop-symbolic + + + True + False + emblem-ok-symbolic + + + False + False + 450 + dialog-question-symbolic + + + True + False + 5 + 5 + 5 + 5 + 5 + 5 + vertical + 10 + + + True + False + + + True + False + start + 20 + 20 + dialog-question-symbolic + 6 + + + False + True + 0 + + + + + True + False + vertical + + + True + False + start + 10 + 5 + Would you like to read documentation in the Web? + True + 0 + + + + + + + False + True + 0 + + + + + True + False + start + start + 10 + 10 + You will be redirected to documentation website where documentation is +translated and supported by community. + True + 0 + + + + False + True + 1 + + + + + Always redirect to online documentation + True + True + False + end + True + + + + False + True + end + 2 + + + + + + True + True + 1 + + + + + + True + True + 0 + + + + + True + False + 30 + True + + + Cancel + True + True + True + image8 + + + + True + True + 0 + + + + + Read Online + True + True + True + image9 + + + + True + True + 1 + + + + + False + True + 1 + + + + + + + True + False + True + + + True + False + UBLinux Settings + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + True + False + False + False + + + True + False + False + + + True + False + + + + + + True + False + + + + + + True + False + False + + + True + False + + + + + + True + False + + + + + + True + False + + + + + + 640 + 500 + False + center + 700 + 500 + com.ublinux.ubl-settings-resourcequota + center + + + True + False + vertical + + + True + False + vertical + + + True + False + + + True + False + 5 + 5 + 5 + 5 + 5 + 5 + 25 + + + False + True + 0 + + + + + True + False + start + 5 + 5 + 5 + 5 + 6 + 6 + True + 0 + + + + + + + False + True + 1 + + + + + False + True + 0 + + + + + True + False + vertical + + + 81 + True + False + + + True + False + start + + + -1 + + + + + False + True + 0 + + + + + False + True + 1 + + + + + True + False + 5 + 5 + 5 + 5 + 5 + 5 + True + True + vertical + + + True + False + 5 + 5 + 5 + 5 + 5 + 5 + True + True + vertical + + + True + True + + + True + False + vertical + + + True + True + in + + + True + False + + + True + True + adjustment5 + liststore + 0 + + + + + + True + autosize + Type quota + True + + + 15 + word + + + 0 + + + + + + + True + autosize + Quota +object + True + + + word + 15 + + + 1 + + + + + + + True + autosize + Soft RAM limit, +(volume) + True + + + 8 + word + + + 2 + + + + + + + True + autosize + Hard RAM limit, +(volume) + True + + + 8 + word + + + 3 + + + + + + + True + autosize + Swap file +limit +(volume) + True + + + 8 + word + + + 4 + + + + + + + True + autosize + CPU limit +(%) + True + + + 8 + word + + + 5 + + + + + + + True + autosize + I/O +limit +(read) + True + + + word + 10 + + + 6 + + + + + + + True + autosize + I/O +limit +(write) + True + + + word + 10 + + + 7 + + + + + + + + + + + True + True + 0 + + + + + True + False + + + True + True + True + 5 + 5 + 5 + 5 + 5 + 5 + + + True + False + + + True + False + com.ublinux.ubl-settings-resourcequota.funnel + + + False + True + 0 + + + + + True + False + 5 + 5 + 5 + 5 + Filters + + + False + True + 1 + + + + + + + False + True + 0 + + + + + + + + True + True + True + 5 + 5 + 5 + 5 + 5 + 5 + + + True + False + + + True + False + tab-new-symbolic + + + False + True + 0 + + + + + True + False + 5 + 5 + 5 + 5 + Add + + + False + True + 1 + + + + + + + False + True + end + 2 + + + + + True + True + True + 5 + 5 + 5 + 5 + 5 + 5 + + + True + False + + + True + False + error-correct-symbolic + + + False + True + 0 + + + + + True + False + 5 + 5 + 5 + 5 + Edit + + + False + True + 1 + + + + + + + False + True + end + 3 + + + + + True + True + True + 5 + 5 + 5 + 5 + 5 + 5 + + + True + False + + + True + False + software-remove-symbolic + + + False + True + 0 + + + + + True + False + 5 + 5 + 5 + 5 + Remove + + + False + True + 1 + + + + + + + False + True + end + 4 + + + + + True + True + True + 5 + 5 + 5 + 5 + 5 + 5 + + + True + False + + + True + False + dialog-information-symbolic + + + False + True + 0 + + + + + True + False + 5 + 5 + 5 + 5 + Information + + + False + True + 1 + + + + + + + False + True + end + 5 + + + + + False + True + 2 + + + + + + + True + False + List quotas + + + False + + + + + True + False + vertical + + + True + False + + + True + False + 5 + 5 + 5 + 5 + 5 + 5 + Update every + + + False + True + 0 + + + + + True + True + 5 + 5 + 5 + 5 + 5 + 5 + 6 + 1 + adjustDisp + + + False + True + 1 + + + + + True + False + 5 + 5 + 5 + 5 + 5 + 5 + seconds + + + False + True + 2 + + + + + True + True + True + 5 + 5 + 5 + 5 + 5 + 5 + + + True + False + center + + + True + False + emblem-synchronizing-symbolic + + + False + True + 0 + + + + + True + False + 5 + 5 + 5 + 5 + Update + + + False + True + 1 + + + + + + + True + True + 3 + + + + + False + True + 0 + + + + + True + False + + + True + False + True + natural + adjustment1 + natural + UTF-8 + True + False + + + True + True + 0 + + + + + True + False + vertical + adjustment1 + + + False + True + 1 + + + + + True + True + 1 + + + + + 1 + + + + + True + False + Dispatcher + + + 1 + False + + + + + True + False + vertical + + + True + False + + + All groups including empty + True + True + False + 5 + 5 + 5 + 5 + 5 + 5 + True + + + False + True + 0 + + + + + Core streams + True + True + False + 5 + 5 + 5 + 5 + 5 + 5 + True + + + False + True + 1 + + + + + False + True + 0 + + + + + True + False + + + True + False + True + natural + adjustment2 + natural + UTF-8 + 1024 + True + False + + + True + True + 0 + + + + + True + False + vertical + adjustment2 + + + False + True + 1 + + + + + True + True + 1 + + + + + 2 + + + + + True + False + Processes + + + 2 + False + + + + + True + False + vertical + + + True + False + + + True + False + 5 + 5 + 5 + 5 + 5 + 5 + View properties for + + + False + True + 0 + + + + + True + False + 5 + 5 + 5 + 5 + 5 + 5 + 0 + 0 + + User + Process + Slice + + + + True + True + 1 + + + + + True + False + 5 + 5 + 5 + 5 + 5 + 5 + + + True + True + 2 + + + + + False + True + 0 + + + + + True + False + + + True + False + True + natural + adjustment3 + natural + UTF-8 + True + False + + + True + True + 0 + + + + + True + False + vertical + adjustment3 + + + False + True + 1 + + + + + True + True + 1 + + + + + 3 + + + + + True + False + Information + + + 3 + False + + + + + + + + + + + True + True + 0 + + + + + False + True + 0 + + + + + False + True + 2 + + + + + True + True + 0 + + + + + + + True + False + True + + + True + False + 5 + 5 + 5 + 5 + 2 + ubl-settings-resourcequota + + + + + + + + True + False + 5 + 5 + 5 + 5 + 6 + 6 + 32 + com.ublinux.ubl-settings-resourcequota + + + + + True + False + + + True + True + False + True + menuSave + + + True + False + + + True + False + Save + + + False + True + 0 + + + + + True + False + pan-down-symbolic + + + False + True + 1 + + + + + + + False + True + 0 + + + + + True + True + True + False + True + True + menuAbout + none + + + + + + + False + True + 1 + + + + + end + 1 + + + + + True + False + + + True + True + False + True + menuLoad + + + True + False + + + True + False + Load + + + False + True + 0 + + + + + True + False + pan-down-symbolic + + + False + True + 1 + + + + + + + False + True + 0 + + + + + 2 + + + + + + + + vertical + + + + + + + + False + start + False + com.ublinux.ubl-settings-resourcequota + + + True + False + 5 + 5 + 5 + 5 + 5 + 5 + vertical + + + Type quota + True + True + False + start + True + + + False + True + 0 + + + + + Quota volume + True + True + False + start + True + + + False + True + 1 + + + + + Soft RAM limit, (volume) + True + True + False + start + True + + + False + True + 2 + + + + + Hard RAM limit, (volume) + True + True + False + start + True + + + False + True + 3 + + + + + True + False + end + 5 + 5 + True + + + True + True + True + center + + + True + False + + + True + False + gtk-stop + + + False + True + 0 + + + + + True + False + 5 + 5 + 5 + 5 + Cancel + + + False + True + 1 + + + + + + + False + True + 0 + + + + + True + True + True + center + + + True + False + + + True + False + gtk-save + + + False + True + 0 + + + + + True + False + 5 + 5 + 5 + 5 + Save + + + False + True + 1 + + + + + + + False + True + 1 + + + + + False + True + end + 5 + + + + + Swap file limit (volume) + True + True + False + start + True + + + False + True + 5 + + + + + CPU limit (%) + True + True + False + start + True + + + False + True + 6 + + + + + I/O limit (read) + True + True + False + start + True + + + False + True + 7 + + + + + I/O limit (write) + True + True + False + start + True + + + False + True + 8 + + + + + + + True + False + True + + + True + False + Filters + + + + + + + + True + False + 32 + com.ublinux.ubl-settings-resourcequota + 5 + + + + + + diff --git a/source/ubl-settings-resourcequota.c b/source/ubl-settings-resourcequota.c index b5c6917..cb3f1ec 100644 --- a/source/ubl-settings-resourcequota.c +++ b/source/ubl-settings-resourcequota.c @@ -443,11 +443,16 @@ void str_split_value(char* values, int index) { init_cfg_array(index); char* value_i = NULL; int index_1 = 0; + int read_index = -1; + int write_index = -1; for (index_1=0; index_1 < size; index_1++) { value = yon_char_new(arr_values[index_1]); key = yon_char_divide_search(value, "=", -1); - if (strstr(key, "IOReadBandwidthMax") || strstr(key, "IOWriteBandwidthMax")) { - break; + if (strstr(key, "IOReadBandwidthMax")) { + read_index = index_1; + } + if (strstr(key, "IOWriteBandwidthMax")) { + write_index = index_1; } if (yon_char_find_count(key, "MemoryHigh") != 0) { philos_set_pow_size_memory(yon_char_new(value), &main_config.soft_raw_limit_size, index, array_size_pow); @@ -466,8 +471,27 @@ void str_split_value(char* values, int index) { set_size_memory_integer(yon_char_new(value), &main_config.cpu_limit, index); } } - get_param_io_limit(arr_values, index_1, size,index, "IOReadBandwidthMax"); - get_param_io_limit(arr_values, index_1, size,index, "IOWriteBandwidthMax"); + if (read_index != -1 || write_index != -1) { + if (read_index != -1 && write_index != -1) { + if (write_index > read_index) { + get_param_io_limit(arr_values, read_index, write_index, index, "IOReadBandwidthMax"); + get_param_io_limit(arr_values, write_index, size , index, "IOWriteBandwidthMax"); + + } + else { + get_param_io_limit(arr_values, write_index, read_index,index, "IOWriteBandwidthMax"); + get_param_io_limit(arr_values, read_index, size , index, "IOReadBandwidthMax"); + } + } + else if (read_index != -1) { + get_param_io_limit(arr_values, read_index, size,index, "IOReadBandwidthMax"); + } + else if (write_index != -1) { + get_param_io_limit(arr_values, write_index, size,index, "IOWriteBandwidthMax"); + } + } + + } -- 2.35.1 From 60946fe884d020450a927dd53234ba3f4cf22b3b Mon Sep 17 00:00:00 2001 From: Igor Belitskiy Date: Fri, 7 Jul 2023 14:54:07 +0600 Subject: [PATCH 89/91] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=20=D0=BF=D0=B5=D1=80=D0=B5=D0=BD=D0=BE=D1=81?= =?UTF-8?q?=20=D0=B2=20=D1=82=D0=B0=D0=B1=D0=BB=D0=B8=D1=86=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- #ubl-settings-resourcequota.glade# | 4224 ---------------------------- ubl-settings-resourcequota.glade | 26 +- 2 files changed, 10 insertions(+), 4240 deletions(-) delete mode 100644 #ubl-settings-resourcequota.glade# diff --git a/#ubl-settings-resourcequota.glade# b/#ubl-settings-resourcequota.glade# deleted file mode 100644 index 1715caf..0000000 --- a/#ubl-settings-resourcequota.glade# +++ /dev/null @@ -1,4224 +0,0 @@ - - - - - - - False - False - True - center - com.ublinux.ubl-settings-resourcequota - dialog - True - ubl-settings-resourcequota - 1.0 - Copyright © 2022 - 2023, UBSoft LLC - CPU and RAM quotas - https://wiki.ublinux.ru/ru/Программное_обеспечение/Программы_и_утилиты/Все/ubl-settings-resourcequota - Project Home Page - Это приложение распространяется без каких-либо гарантий. -Подробнее в <a href="https://www.gnu.org/licenses/old-licenses/gpl-2.0.html">GNU General Public License, версии 2 или позднее</a>. - UBGroup - UBGroup - com.ublinux.ubl-settings-resourcequota - True - gpl-2-0 - - - True - False - vertical - 2 - - - False - end - - - False - False - 1 - - - - - - - - - - True - False - True - - - True - False - 5 - 5 - 5 - 5 - 2 - ubl-settings-resourcequota - - - - - - - - - - True - False - center - - - 90 - True - False - 5 - 5 - 5 - 5 - 6 - 6 - 64 - com.ublinux.ubl-settings-resourcequota - - - False - True - 0 - - - - - True - False - - - True - False - - - True - False - vertical - - - 255 - True - False - end - CPU and RAM quotas - 0 - - - - - - - - True - True - 0 - - - - - 255 - True - False - start - 5 - 5 - Configuring CPU and RAM quota settings for groups and users of the system - True - 0 - - - - - - - - True - True - 1 - - - - - False - True - 0 - - - - - True - True - 0 - - - - - True - True - 1 - - - - - 100 - 1 - 10 - - - 100 - 1 - 10 - - - 100 - 1 - 10 - - - 100 - 1 - 10 - - - 100 - 1 - 10 - - - 100 - 1 - 10 - - - False - start - False - com.ublinux.ubl-settings-resourcequota - - - True - False - 5 - 5 - 5 - 5 - 5 - 5 - vertical - - - True - False - - - True - False - 5 - 5 - 5 - 5 - 5 - 5 - Quota object - - - False - True - 0 - - - - - 100 - True - False - 5 - 5 - 5 - 5 - 5 - 5 - 0 - 0 - - User - Process - Slice - - - - True - True - 1 - - - - - True - False - 5 - 5 - 5 - 5 - 5 - 5 - - - False - True - 2 - - - - - False - True - 0 - - - - - True - False - vertical - - - True - False - 5 - 5 - 5 - 5 - 5 - 5 - 0.019999999552965164 - in - - - True - False - 5 - - - True - False - - - True - False - vertical - - - True - False - 5 - 5 - 5 - 5 - 5 - 5 - Soft Restriction - 0 - - - False - True - 0 - - - - - True - False - - - True - True - False - 5 - 5 - 5 - 5 - 5 - 5 - True - - - False - True - 0 - - - - - True - True - 5 - 5 - 5 - 5 - 5 - 5 - 7 - a1 - - - False - True - 1 - - - - - True - False - 5 - 5 - 5 - 5 - 5 - 5 - 0 - 0 - - Kb - Mb - Gb - Tb - - - - False - True - 2 - - - - - False - True - 1 - - - - - True - True - 0 - - - - - True - False - vertical - - - True - False - 5 - 5 - 5 - 5 - 5 - 5 - Severe Restriction - 0 - - - False - True - 0 - - - - - True - False - - - True - True - False - 5 - 5 - 5 - 5 - 5 - 5 - True - - - False - True - 0 - - - - - True - True - 5 - 5 - 5 - 5 - 5 - 5 - 7 - a2 - - - False - True - 1 - - - - - True - False - 5 - 5 - 5 - 5 - 5 - 5 - 0 - 0 - - Kb - Mb - Gb - Tb - - - - False - True - 2 - - - - - False - True - 1 - - - - - True - True - 1 - - - - - - - - - True - False - 5 - 5 - 5 - 5 - 5 - 5 - RAM limit - - - - - False - True - 0 - - - - - True - False - - - True - False - 5 - 5 - 5 - 5 - 5 - 5 - 0.019999999552965164 - in - - - True - False - 5 - - - True - False - - - True - True - False - 5 - 5 - 5 - 5 - 5 - 5 - True - - - False - True - 0 - - - - - True - True - 5 - 5 - 5 - 5 - 5 - 5 - 7 - a3 - - - False - True - 1 - - - - - True - False - 5 - 5 - 5 - 5 - 5 - 5 - 0 - 0 - - Kb - Mb - Gb - Tb - - - - False - True - 2 - - - - - - - - - True - False - 5 - 5 - 5 - 5 - 5 - 5 - Paging file limit - - - - - False - True - 0 - - - - - True - False - 5 - 5 - 5 - 5 - 5 - 5 - 0.019999999552965164 - in - - - True - False - 5 - - - True - False - - - True - True - False - 5 - 5 - 5 - 5 - 5 - 5 - True - - - False - True - 0 - - - - - True - True - 5 - 5 - 5 - 5 - 5 - 5 - 7 - a4 - - - False - True - 1 - - - - - True - False - 5 - 5 - 5 - 5 - 5 - 5 - % - - - False - True - 2 - - - - - - - - - True - False - 5 - 5 - 5 - 5 - 5 - 5 - CPU limit - - - - - True - True - 1 - - - - - False - True - 1 - - - - - True - False - 5 - 5 - 5 - 5 - 5 - 5 - 0.019999999552965164 - in - - - True - False - 5 - - - True - False - vertical - - - True - False - - - True - False - 5 - 5 - 5 - 5 - 5 - 5 - Device: - 0 - - - False - True - 0 - - - - - True - False - 5 - 5 - 5 - 5 - 5 - 5 - - - True - True - 1 - - - - - False - True - 0 - - - - - True - False - - - True - False - vertical - - - True - False - 5 - 5 - 5 - 5 - 5 - 5 - Read - 0 - - - False - True - 0 - - - - - True - False - - - True - True - False - 5 - 5 - 5 - 5 - 5 - 5 - True - - - False - True - 0 - - - - - True - True - 5 - 5 - 5 - 5 - 5 - 5 - 7 - a5 - - - False - True - 1 - - - - - True - False - 5 - 5 - 5 - 5 - 5 - 5 - 0 - 0 - - Kb - Mb - Gb - Tb - - - - False - True - 2 - - - - - False - True - 1 - - - - - True - True - 0 - - - - - True - False - vertical - - - True - False - 5 - 5 - 5 - 5 - 5 - 5 - Write - 0 - - - False - True - 0 - - - - - True - False - - - True - True - False - 5 - 5 - 5 - 5 - 5 - 5 - True - - - False - True - 0 - - - - - True - True - 5 - 5 - 5 - 5 - 5 - 5 - 7 - a6 - - - False - True - 1 - - - - - True - False - 5 - 5 - 5 - 5 - 5 - 5 - 0 - 0 - - Kb - Mb - Gb - Tb - - - - False - True - 2 - - - - - False - True - 1 - - - - - True - True - 1 - - - - - False - True - 1 - - - - - - - - - True - False - 5 - 5 - 5 - 5 - 5 - 5 - Input/Output limit of block devices - - - - - False - True - 2 - - - - - True - False - 5 - 5 - 5 - 5 - 5 - 5 - 0.019999999552965164 - in - - - True - False - 5 - - - True - True - 5 - 5 - 5 - 5 - 5 - 5 - - - - - - - True - False - Manual input (for advanced users) - - - - - False - True - 3 - - - - - False - True - 1 - - - - - True - False - - - True - False - - - False - True - 0 - - - - - True - True - True - 5 - 5 - 5 - 5 - 5 - 5 - - - True - False - - - True - False - gtk-stop - - - False - True - 0 - - - - - True - False - 5 - 5 - 5 - 5 - Cancel - - - False - True - 1 - - - - - - - False - True - end - 1 - - - - - True - True - True - 5 - 5 - 5 - 5 - 5 - 5 - - - True - False - - - True - False - gtk-save - - - False - True - 0 - - - - - True - False - 5 - 5 - 5 - 5 - Save - - - False - True - 1 - - - - - - - False - True - end - 1 - - - - - False - True - 2 - - - - - - - True - False - True - - - True - False - Settings quotas - Adding - - - - - - - - True - False - 32 - com.ublinux.ubl-settings-resourcequota - 5 - - - - - - - False - start - False - com.ublinux.ubl-settings-resourcequota - - - True - False - 5 - 5 - 5 - 5 - 5 - 5 - vertical - - - True - False - - - True - False - 5 - 5 - 5 - 5 - 5 - 5 - Quota object - - - False - True - 0 - - - - - True - False - 5 - 5 - 5 - 5 - 5 - 5 - - - False - True - 1 - - - - - True - False - 5 - 5 - 5 - 5 - 5 - 5 - - - False - True - 2 - - - - - False - True - 0 - - - - - True - False - vertical - - - True - False - 5 - 5 - 5 - 5 - 5 - 5 - 0.019999999552965164 - in - - - True - False - 5 - - - True - False - - - True - False - vertical - - - True - False - 5 - 5 - 5 - 5 - 5 - 5 - Soft Restriction - 0 - - - False - True - 0 - - - - - True - False - - - True - True - False - 5 - 5 - 5 - 5 - 5 - 5 - True - - - False - True - 0 - - - - - True - True - 5 - 5 - 5 - 5 - 5 - 5 - 7 - a1 - - - False - True - 1 - - - - - True - False - 5 - 5 - 5 - 5 - 5 - 5 - 0 - 0 - - Kb - Mb - Gb - Tb - - - - False - True - 2 - - - - - False - True - 1 - - - - - True - True - 0 - - - - - True - False - vertical - - - True - False - 5 - 5 - 5 - 5 - 5 - 5 - Severe Restriction - 0 - - - False - True - 0 - - - - - True - False - - - True - True - False - 5 - 5 - 5 - 5 - 5 - 5 - True - - - False - True - 0 - - - - - True - True - 5 - 5 - 5 - 5 - 5 - 5 - 7 - a2 - - - False - True - 1 - - - - - True - False - 5 - 5 - 5 - 5 - 5 - 5 - 0 - 0 - - Kb - Mb - Gb - Tb - - - - False - True - 2 - - - - - False - True - 1 - - - - - True - True - 1 - - - - - - - - - True - False - 5 - 5 - 5 - 5 - 5 - 5 - RAM limit - - - - - False - True - 0 - - - - - True - False - - - True - False - 5 - 5 - 5 - 5 - 5 - 5 - 0.019999999552965164 - in - - - True - False - 5 - - - True - False - - - True - True - False - 5 - 5 - 5 - 5 - 5 - 5 - True - - - False - True - 0 - - - - - True - True - 5 - 5 - 5 - 5 - 5 - 5 - 7 - a3 - - - False - True - 1 - - - - - True - False - 5 - 5 - 5 - 5 - 5 - 5 - 0 - 0 - - Kb - Mb - Gb - Tb - - - - False - True - 2 - - - - - - - - - True - False - 5 - 5 - 5 - 5 - 5 - 5 - Paging file limit - - - - - False - True - 0 - - - - - True - False - 5 - 5 - 5 - 5 - 5 - 5 - 0.019999999552965164 - in - - - True - False - 5 - - - True - False - - - True - True - False - 5 - 5 - 5 - 5 - 5 - 5 - True - - - False - True - 0 - - - - - True - True - 5 - 5 - 5 - 5 - 5 - 5 - 7 - a4 - - - False - True - 1 - - - - - True - False - 5 - 5 - 5 - 5 - 5 - 5 - % - - - False - True - 2 - - - - - - - - - True - False - 5 - 5 - 5 - 5 - 5 - 5 - CPU limit - - - - - True - True - 1 - - - - - False - True - 1 - - - - - True - False - 5 - 5 - 5 - 5 - 5 - 5 - 0.019999999552965164 - in - - - True - False - 5 - - - True - False - vertical - - - True - False - - - True - False - 5 - 5 - 5 - 5 - 5 - 5 - Device: - 0 - - - False - True - 0 - - - - - True - True - False - 5 - 5 - 5 - 5 - 5 - 5 - - - True - True - 1 - - - - - False - True - 0 - - - - - True - False - - - True - False - vertical - - - True - False - 5 - 5 - 5 - 5 - 5 - 5 - Read - 0 - - - False - True - 0 - - - - - True - False - - - True - True - False - 5 - 5 - 5 - 5 - 5 - 5 - True - - - False - True - 0 - - - - - True - True - 5 - 5 - 5 - 5 - 5 - 5 - 7 - a5 - - - False - True - 1 - - - - - True - False - 5 - 5 - 5 - 5 - 5 - 5 - 0 - 0 - - Kb - Mb - Gb - Tb - - - - False - True - 2 - - - - - False - True - 1 - - - - - True - True - 0 - - - - - True - False - vertical - - - True - False - 5 - 5 - 5 - 5 - 5 - 5 - Write - 0 - - - False - True - 0 - - - - - True - False - - - True - True - False - 5 - 5 - 5 - 5 - 5 - 5 - True - - - False - True - 0 - - - - - True - True - 5 - 5 - 5 - 5 - 5 - 5 - 7 - a6 - - - False - True - 1 - - - - - True - False - 5 - 5 - 5 - 5 - 5 - 5 - 0 - 0 - - Kb - Mb - Gb - Tb - - - - False - True - 2 - - - - - False - True - 1 - - - - - True - True - 1 - - - - - False - True - 1 - - - - - - - - - True - False - 5 - 5 - 5 - 5 - 5 - 5 - Input/Output limit of block devices - - - - - False - True - 2 - - - - - True - False - 5 - 5 - 5 - 5 - 5 - 5 - 0.019999999552965164 - in - - - True - False - 5 - - - True - True - 5 - 5 - 5 - 5 - 5 - 5 - - - - - - - True - False - Manual input (for advanced users) - - - - - False - True - 3 - - - - - False - True - 1 - - - - - True - False - - - True - False - - - False - True - 0 - - - - - True - True - True - 5 - 5 - 5 - 5 - 5 - 5 - - - True - False - - - True - False - gtk-stop - - - False - True - 0 - - - - - True - False - 5 - 5 - 5 - 5 - Cancel - - - False - True - 1 - - - - - - - False - True - end - 1 - - - - - True - True - True - 5 - 5 - 5 - 5 - 5 - 5 - - - True - False - - - True - False - gtk-save - - - False - True - 0 - - - - - True - False - 5 - 5 - 5 - 5 - Save - - - False - True - 1 - - - - - - - False - True - end - 1 - - - - - False - True - 2 - - - - - - - True - False - True - - - True - False - Settings quotas - Editing - - - - - - - - True - False - 32 - com.ublinux.ubl-settings-resourcequota - 5 - - - - - - - 1 - 10000 - 1 - 1 - 10 - - - 100 - 1 - 10 - - - 100 - 1 - 10 - - - 100 - 1 - 10 - - - 100 - 1 - 10 - - - 100 - 1 - 10 - - - True - False - process-stop-symbolic - - - True - False - emblem-ok-symbolic - - - False - False - 450 - dialog-question-symbolic - - - True - False - 5 - 5 - 5 - 5 - 5 - 5 - vertical - 10 - - - True - False - - - True - False - start - 20 - 20 - dialog-question-symbolic - 6 - - - False - True - 0 - - - - - True - False - vertical - - - True - False - start - 10 - 5 - Would you like to read documentation in the Web? - True - 0 - - - - - - - False - True - 0 - - - - - True - False - start - start - 10 - 10 - You will be redirected to documentation website where documentation is -translated and supported by community. - True - 0 - - - - False - True - 1 - - - - - Always redirect to online documentation - True - True - False - end - True - - - - False - True - end - 2 - - - - - - True - True - 1 - - - - - - True - True - 0 - - - - - True - False - 30 - True - - - Cancel - True - True - True - image8 - - - - True - True - 0 - - - - - Read Online - True - True - True - image9 - - - - True - True - 1 - - - - - False - True - 1 - - - - - - - True - False - True - - - True - False - UBLinux Settings - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - True - False - False - False - - - True - False - False - - - True - False - - - - - - True - False - - - - - - True - False - False - - - True - False - - - - - - True - False - - - - - - True - False - - - - - - 640 - 500 - False - center - 700 - 500 - com.ublinux.ubl-settings-resourcequota - center - - - True - False - vertical - - - True - False - vertical - - - True - False - - - True - False - 5 - 5 - 5 - 5 - 5 - 5 - 25 - - - False - True - 0 - - - - - True - False - start - 5 - 5 - 5 - 5 - 6 - 6 - True - 0 - - - - - - - False - True - 1 - - - - - False - True - 0 - - - - - True - False - vertical - - - 81 - True - False - - - True - False - start - - - -1 - - - - - False - True - 0 - - - - - False - True - 1 - - - - - True - False - 5 - 5 - 5 - 5 - 5 - 5 - True - True - vertical - - - True - False - 5 - 5 - 5 - 5 - 5 - 5 - True - True - vertical - - - True - True - - - True - False - vertical - - - True - True - in - - - True - False - - - True - True - adjustment5 - liststore - 0 - - - - - - True - autosize - Type quota - True - - - 15 - word - - - 0 - - - - - - - True - autosize - Quota -object - True - - - word - 15 - - - 1 - - - - - - - True - autosize - Soft RAM limit, -(volume) - True - - - 8 - word - - - 2 - - - - - - - True - autosize - Hard RAM limit, -(volume) - True - - - 8 - word - - - 3 - - - - - - - True - autosize - Swap file -limit -(volume) - True - - - 8 - word - - - 4 - - - - - - - True - autosize - CPU limit -(%) - True - - - 8 - word - - - 5 - - - - - - - True - autosize - I/O -limit -(read) - True - - - word - 10 - - - 6 - - - - - - - True - autosize - I/O -limit -(write) - True - - - word - 10 - - - 7 - - - - - - - - - - - True - True - 0 - - - - - True - False - - - True - True - True - 5 - 5 - 5 - 5 - 5 - 5 - - - True - False - - - True - False - com.ublinux.ubl-settings-resourcequota.funnel - - - False - True - 0 - - - - - True - False - 5 - 5 - 5 - 5 - Filters - - - False - True - 1 - - - - - - - False - True - 0 - - - - - - - - True - True - True - 5 - 5 - 5 - 5 - 5 - 5 - - - True - False - - - True - False - tab-new-symbolic - - - False - True - 0 - - - - - True - False - 5 - 5 - 5 - 5 - Add - - - False - True - 1 - - - - - - - False - True - end - 2 - - - - - True - True - True - 5 - 5 - 5 - 5 - 5 - 5 - - - True - False - - - True - False - error-correct-symbolic - - - False - True - 0 - - - - - True - False - 5 - 5 - 5 - 5 - Edit - - - False - True - 1 - - - - - - - False - True - end - 3 - - - - - True - True - True - 5 - 5 - 5 - 5 - 5 - 5 - - - True - False - - - True - False - software-remove-symbolic - - - False - True - 0 - - - - - True - False - 5 - 5 - 5 - 5 - Remove - - - False - True - 1 - - - - - - - False - True - end - 4 - - - - - True - True - True - 5 - 5 - 5 - 5 - 5 - 5 - - - True - False - - - True - False - dialog-information-symbolic - - - False - True - 0 - - - - - True - False - 5 - 5 - 5 - 5 - Information - - - False - True - 1 - - - - - - - False - True - end - 5 - - - - - False - True - 2 - - - - - - - True - False - List quotas - - - False - - - - - True - False - vertical - - - True - False - - - True - False - 5 - 5 - 5 - 5 - 5 - 5 - Update every - - - False - True - 0 - - - - - True - True - 5 - 5 - 5 - 5 - 5 - 5 - 6 - 1 - adjustDisp - - - False - True - 1 - - - - - True - False - 5 - 5 - 5 - 5 - 5 - 5 - seconds - - - False - True - 2 - - - - - True - True - True - 5 - 5 - 5 - 5 - 5 - 5 - - - True - False - center - - - True - False - emblem-synchronizing-symbolic - - - False - True - 0 - - - - - True - False - 5 - 5 - 5 - 5 - Update - - - False - True - 1 - - - - - - - True - True - 3 - - - - - False - True - 0 - - - - - True - False - - - True - False - True - natural - adjustment1 - natural - UTF-8 - True - False - - - True - True - 0 - - - - - True - False - vertical - adjustment1 - - - False - True - 1 - - - - - True - True - 1 - - - - - 1 - - - - - True - False - Dispatcher - - - 1 - False - - - - - True - False - vertical - - - True - False - - - All groups including empty - True - True - False - 5 - 5 - 5 - 5 - 5 - 5 - True - - - False - True - 0 - - - - - Core streams - True - True - False - 5 - 5 - 5 - 5 - 5 - 5 - True - - - False - True - 1 - - - - - False - True - 0 - - - - - True - False - - - True - False - True - natural - adjustment2 - natural - UTF-8 - 1024 - True - False - - - True - True - 0 - - - - - True - False - vertical - adjustment2 - - - False - True - 1 - - - - - True - True - 1 - - - - - 2 - - - - - True - False - Processes - - - 2 - False - - - - - True - False - vertical - - - True - False - - - True - False - 5 - 5 - 5 - 5 - 5 - 5 - View properties for - - - False - True - 0 - - - - - True - False - 5 - 5 - 5 - 5 - 5 - 5 - 0 - 0 - - User - Process - Slice - - - - True - True - 1 - - - - - True - False - 5 - 5 - 5 - 5 - 5 - 5 - - - True - True - 2 - - - - - False - True - 0 - - - - - True - False - - - True - False - True - natural - adjustment3 - natural - UTF-8 - True - False - - - True - True - 0 - - - - - True - False - vertical - adjustment3 - - - False - True - 1 - - - - - True - True - 1 - - - - - 3 - - - - - True - False - Information - - - 3 - False - - - - - - - - - - - True - True - 0 - - - - - False - True - 0 - - - - - False - True - 2 - - - - - True - True - 0 - - - - - - - True - False - True - - - True - False - 5 - 5 - 5 - 5 - 2 - ubl-settings-resourcequota - - - - - - - - True - False - 5 - 5 - 5 - 5 - 6 - 6 - 32 - com.ublinux.ubl-settings-resourcequota - - - - - True - False - - - True - True - False - True - menuSave - - - True - False - - - True - False - Save - - - False - True - 0 - - - - - True - False - pan-down-symbolic - - - False - True - 1 - - - - - - - False - True - 0 - - - - - True - True - True - False - True - True - menuAbout - none - - - - - - - False - True - 1 - - - - - end - 1 - - - - - True - False - - - True - True - False - True - menuLoad - - - True - False - - - True - False - Load - - - False - True - 0 - - - - - True - False - pan-down-symbolic - - - False - True - 1 - - - - - - - False - True - 0 - - - - - 2 - - - - - - - - vertical - - - - - - - - False - start - False - com.ublinux.ubl-settings-resourcequota - - - True - False - 5 - 5 - 5 - 5 - 5 - 5 - vertical - - - Type quota - True - True - False - start - True - - - False - True - 0 - - - - - Quota volume - True - True - False - start - True - - - False - True - 1 - - - - - Soft RAM limit, (volume) - True - True - False - start - True - - - False - True - 2 - - - - - Hard RAM limit, (volume) - True - True - False - start - True - - - False - True - 3 - - - - - True - False - end - 5 - 5 - True - - - True - True - True - center - - - True - False - - - True - False - gtk-stop - - - False - True - 0 - - - - - True - False - 5 - 5 - 5 - 5 - Cancel - - - False - True - 1 - - - - - - - False - True - 0 - - - - - True - True - True - center - - - True - False - - - True - False - gtk-save - - - False - True - 0 - - - - - True - False - 5 - 5 - 5 - 5 - Save - - - False - True - 1 - - - - - - - False - True - 1 - - - - - False - True - end - 5 - - - - - Swap file limit (volume) - True - True - False - start - True - - - False - True - 5 - - - - - CPU limit (%) - True - True - False - start - True - - - False - True - 6 - - - - - I/O limit (read) - True - True - False - start - True - - - False - True - 7 - - - - - I/O limit (write) - True - True - False - start - True - - - False - True - 8 - - - - - - - True - False - True - - - True - False - Filters - - - - - - - - True - False - 32 - com.ublinux.ubl-settings-resourcequota - 5 - - - - - - diff --git a/ubl-settings-resourcequota.glade b/ubl-settings-resourcequota.glade index 286a199..06150b9 100644 --- a/ubl-settings-resourcequota.glade +++ b/ubl-settings-resourcequota.glade @@ -2857,12 +2857,11 @@ translated and supported by community. True - autosize + fixed Type quota True - 15 word @@ -2874,14 +2873,13 @@ translated and supported by community. True - autosize + fixed Quota object True word - 15 1 @@ -2892,13 +2890,12 @@ object True - autosize + fixed Soft RAM limit, (volume) True - 8 word @@ -2910,13 +2907,12 @@ object True - autosize + fixed Hard RAM limit, (volume) True - 8 word @@ -2928,14 +2924,13 @@ object True - autosize + fixed Swap file limit (volume) True - 8 word @@ -2947,13 +2942,12 @@ limit True - autosize + fixed CPU limit (%) True - 8 word @@ -2965,7 +2959,7 @@ limit True - autosize + fixed I/O limit (read) @@ -2973,7 +2967,7 @@ limit word - 10 + 100 6 @@ -2984,7 +2978,7 @@ limit True - autosize + fixed I/O limit (write) @@ -2992,7 +2986,7 @@ limit word - 10 + 100 7 -- 2.35.1 From 9fa4dc3c1b43b3c68031777d887bbda51e1a66fa Mon Sep 17 00:00:00 2001 From: Igor Belitskiy Date: Fri, 7 Jul 2023 15:03:40 +0600 Subject: [PATCH 90/91] =?UTF-8?q?=D0=A3=D0=B4=D0=B0=D0=BB=D0=B8=D0=BB=20?= =?UTF-8?q?=D0=BA=D0=BE=D0=BC=D0=BC=D0=B5=D0=BD=D1=82=D0=B0=D1=80=D0=B8?= =?UTF-8?q?=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/ubl-settings-resourcequota.c | 4 +--- source/view_edit.c | 2 -- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/source/ubl-settings-resourcequota.c b/source/ubl-settings-resourcequota.c index cb3f1ec..45ba5ff 100644 --- a/source/ubl-settings-resourcequota.c +++ b/source/ubl-settings-resourcequota.c @@ -182,7 +182,7 @@ main_window *setup_window(){ widgets->LoadLocalMenuItem = yon_gtk_builder_get_widget(builder,"LoadLocalConfigurationMenuItem"); widgets->LeftBox = yon_gtk_builder_get_widget(builder,"HeaderLeftBox"); - widgets->DocumentationMenuItem = yon_ubl_menu_item_documentation_new(DOCUMENTATION_LABEL); // yon_gtk_builder_get_widget(builder,"DocumentationMenuItem"); + widgets->DocumentationMenuItem = yon_ubl_menu_item_documentation_new(DOCUMENTATION_LABEL); widgets->AboutMenuItem = yon_ubl_menu_item_about_new(ABOUT_LABEL); GtkWidget *menu = yon_gtk_builder_get_widget(builder,"menuAbout"); gtk_menu_shell_append(GTK_MENU_SHELL(menu),widgets->DocumentationMenuItem); @@ -1202,8 +1202,6 @@ char* template_format_str_remove_save(char* source_remove_cmd) { } } if (strlen(cmd) > strlen(source_remove_cmd) && check_save()== 0) { - //philos_free_string_array(&main_config.array_del_line, main_config.size_array_del_line); - //main_config.size_array_del_line = 0; return cmd; } free(cmd); diff --git a/source/view_edit.c b/source/view_edit.c index 5805fe0..6e7659c 100644 --- a/source/view_edit.c +++ b/source/view_edit.c @@ -100,8 +100,6 @@ void edit_show(GtkWidget *self, char* glade_path) { void wrapper_edit_init_windows_size_memory() { philos_temp_add_disk(edit_widgets, &obj_edit_config, 0); philos_temp_add_disk(edit_widgets, &obj_edit_config, 1); - //philos_temp_del_disk(edit_widgets, &obj_edit_config, 0); - //philos_temp_del_disk(edit_widgets, &obj_edit_config, 1); edit_init_windows(); } -- 2.35.1 From b02d182441608c13cc6fa63f774b56b3d26b1766 Mon Sep 17 00:00:00 2001 From: Igor Belitskiy Date: Fri, 7 Jul 2023 16:53:22 +0600 Subject: [PATCH 91/91] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D1=8B=20=D0=BA=D0=BE=D0=BC=D0=B0=D0=BD=D0=B4?= =?UTF-8?q?=D1=8B=20=D1=81=D0=BE=D1=85=D1=80=D0=B0=D0=BD=D0=B5=D0=BD=D0=B8?= =?UTF-8?q?=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/ubl-settings-resourcequota.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/ubl-settings-resourcequota.h b/source/ubl-settings-resourcequota.h index 7440c7a..ab3726e 100755 --- a/source/ubl-settings-resourcequota.h +++ b/source/ubl-settings-resourcequota.h @@ -34,8 +34,8 @@ #define CMD_LOAD_GLOBAL "ubconfig --default --source global get security CGROUP_QUOTA[*]" #define CMD_LOAD_SYSTEM "ubconfig --default --source system get security CGROUP_QUOTA[*]" -#define CMD_SAVE_GLOBAL "ubconfig --default --source global set security" -#define CMD_SAVE_SYSTEM "ubconfig --default --source system set security" +#define CMD_SAVE_GLOBAL "ubconfig --default --target global set security" +#define CMD_SAVE_SYSTEM "ubconfig --default --target system set security" #define CMD_ALL_SAVE "ubconfig set security " #define CMD_ALL_REMOVE "ubconfig remove security " #define CMD_REMOVE_GLOBAL "ubconfig --target global --noexecute remove security " -- 2.35.1