Исправил парсер конфига

pull/4/head
Igor Belitskiy 2 years ago
parent f98ad8b431
commit aa3864f665

@ -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]; char* STR_TB = array_size_pow[3];
size_t length = strlen(str_find); size_t length = strlen(str_find);
if (strstr(str_find,"K") != NULL) { 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_divide(str_find, length-1);
str_find = yon_char_unite(str_find, " ", STR_KB, NULL); str_find = yon_char_unite(str_find, " ", STR_KB, NULL);
index--; if (index!=-1) {
index--;
}
} }
else if (strstr(str_find,"M") != NULL) { 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_divide(str_find, length-1);
str_find = yon_char_unite(str_find," ", STR_MB, NULL); str_find = yon_char_unite(str_find," ", STR_MB, NULL);
index--; if (index!=-1) {
index--;
}
} }
else if (strstr(str_find,"G") != NULL) { 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_divide(str_find, length-1);
str_find = yon_char_unite(str_find," ", STR_GB, NULL); str_find = yon_char_unite(str_find," ", STR_GB, NULL);
index--; if (index!=-1) {
index--;
}
} }
else if (strstr(str_find,"T") != NULL) { 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_divide(str_find, length-1);
str_find = yon_char_unite(str_find," ", STR_TB, NULL); str_find = yon_char_unite(str_find," ", STR_TB, NULL);
index--; if (index!=-1) {
index--;
}
} }
else if (strstr(str_find,"%%") != NULL) { 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); str_find = yon_char_divide(str_find, length-1);
index--; if (index!=-1) {
index--;
}
} }
else if (strstr(str_find,"-") != NULL) { else if (strstr(str_find,"-") != NULL) {
*array_size = philos_int_append(*array_size, &index, -1); if (index!=-1) {
index--; *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"); FILE *output = popen(command, "r");
return 1; return 1;
} }
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;
}
}
}

@ -109,4 +109,6 @@ dictionary *yon_dictionary_create_conneced(dictionary *targetdict);
void yon_int_array_append(int **source, int append); void yon_int_array_append(int **source, int append);
static void child_ready(VteTerminal *terminal, GPid pid, GError *error, gpointer user_data); static void child_ready(VteTerminal *terminal, GPid pid, GError *error, gpointer user_data);
int philos_config_save(char *command); 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 #endif

@ -352,9 +352,12 @@ void init_cfg_array(int index) {
int* array_limit = NULL; int* array_limit = NULL;
char** array_disk = NULL; char** array_disk = NULL;
int index_n2 = 0; int index_n2 = 0;
array_limit = philos_int_append(array_limit, &index_n2, -3); for (int index = 0; index < get_device_cfg()->size_disk; index++) {
index_n2--; array_limit = philos_int_append(array_limit, &index_n2, -3);
array_disk = yon_char_parsed_append(array_disk, &index_n2, "-"); index_n2--;
array_disk = yon_char_parsed_append(array_disk, &index_n2, "-");
}
array_limit = philos_int_append(array_limit, &index_n2, -2); array_limit = philos_int_append(array_limit, &index_n2, -2);
index_n2--; index_n2--;
array_disk = yon_char_parsed_append(array_disk, &index_n2, NULL); 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); 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) { void get_param_io_limit(char** arr_values, int index_start, int size, int index_n1, char *key_find) {
int* array_limit = NULL; int* array_limit = NULL;
char** array_disk = NULL; char** array_disk = NULL;
int* array_limit_size = 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 index_n2 = 0;
int flag_parsed = 0; int flag_parsed = 0;
int flag_exit = 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) { if (strstr(arr_values[i], key_find)!=NULL) {
// Найден ключ в массив // Найден ключ в массив
char* disk = yon_char_divide_search(yon_char_new(value), " ", -1); 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--; index_n2--;
philos_set_pow_size_memory(yon_char_new(value), &array_limit_size, index_n2, array_size_pow); 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, index_n2); set_size_memory_integer(yon_char_new(value), &array_limit, -1);
flag_parsed = 1; flag_parsed = 1;
index_n2++; 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) { else if (flag_parsed == 1) {
char* disk = yon_char_divide_search(yon_char_new(arr_values[i]), " ", -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--; index_n2--;
philos_set_pow_size_memory(yon_char_new(arr_values[i]), &array_limit_size, index_n2, array_size_pow); 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, index_n2); set_size_memory_integer(yon_char_new(arr_values[i]), &array_limit, -1);
index_n2++; index_n2++;
} }
else if (flag_exit == 1) { 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) { if (index_n2 != 0) {
array_limit = philos_int_append(array_limit, &index_n2, -2); if (strstr(key_find, "BandwidthMax")!=NULL) {
index_n2--; if (strstr(key_find, "IOReadBandwidthMax")!=NULL) {
array_disk = yon_char_parsed_append(array_disk, &index_n2, NULL); philos_array_int_copy(&main_config.i_o_limit_read[index_n1], &array_limit);
index_n2--; philos_array_int_copy(&main_config.i_o_limit_read_size[index_n1], &array_limit_size);
array_limit_size = philos_int_append(array_limit_size, &index_n2, -2); yon_char_parsed_copy(&main_config.disk[index_n1], &array_disk);
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*)); else {
main_config.i_o_limit_read_size = yon_remalloc(main_config.i_o_limit_read_size, (index_n1 + 1) * sizeof(int*)); philos_array_int_copy(&main_config.i_o_limit_write[index_n1], &array_limit);
main_config.disk = yon_remalloc(main_config.disk, (index_n1 + 1) * sizeof(char**)); philos_array_int_copy(&main_config.i_o_limit_write_size[index_n1], &array_limit_size);
philos_array_int_copy(&main_config.i_o_limit_read[index_n1], &array_limit); yon_char_parsed_copy(&main_config.disk[index_n1], &array_disk);
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);
} }
philos_free_int_array(&array_limit, index_n2); philos_free_int_array(&array_limit, index_n2);
philos_free_string_array(&array_disk, 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 { else {
} }
} }
void set_size_memory_integer(char* str_find, int** array_data, int index) { 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) { 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 { 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); free(num_and_pow_size);
} }
} }
index_to_n2++;
} }
else { else {
break; break;
} }
index_to_n2++;
} }
else { else {
break; break;
@ -1278,6 +1293,7 @@ int main(int argc, char *argv[]){
yon_ubl_status_box_setup(widgets->StatusIcon,widgets->StatusBox,widgets->StatusLabel); yon_ubl_status_box_setup(widgets->StatusIcon,widgets->StatusBox,widgets->StatusLabel);
if (getuid()!=0) { if (getuid()!=0) {
yon_ubl_status_box_render(ROOT_WARNING_LABEL,BACKGROUND_IMAGE_FAIL_TYPE); yon_ubl_status_box_render(ROOT_WARNING_LABEL,BACKGROUND_IMAGE_FAIL_TYPE);
load_system_cfg();
} }
else { else {
yon_ubl_status_box_render(LOAD_LOCAL_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE); yon_ubl_status_box_render(LOAD_LOCAL_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE);

Loading…
Cancel
Save