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() {