Частично сделаны работы по парсеру дисков

pull/4/head
Igor Belitskiy 2 years ago
parent f119eca62e
commit 15ba13dc1f

@ -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"

@ -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();
}

@ -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);
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);

@ -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;

@ -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);

@ -72,6 +72,7 @@
<object class="GtkBox" id="HeaderBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="valign">center</property>
<child>
<object class="GtkImage">
<property name="width-request">90</property>
@ -83,7 +84,7 @@
<property name="margin-end">5</property>
<property name="margin-top">6</property>
<property name="margin-bottom">6</property>
<property name="pixel-size">69</property>
<property name="pixel-size">64</property>
<property name="icon-name">com.ublinux.ubl-settings-resourcequota</property>
</object>
<packing>

Loading…
Cancel
Save