#include "load.h" void load_template_load_cfg(config_u_g_p* _config, char* cmd) { model_clear_cfg(_config); int size = 0; char** cfg = yon_config_load(cmd, &size); philos_array_string_remove_char(&cfg, "\n", size); int size_loaded_keys = 0; 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); _config->loaded_keys = yon_char_parsed_append(_config->loaded_keys, &size_loaded_keys, str_key); char* str_value = str_key_value; load_pars_keys(_config, yon_char_new(str_key), index); load_pars_values(_config, yon_char_new(str_value), index); } _config->flag_set_data = 0; } void load_pars_keys(config_u_g_p* _config, char* str_key, int index) { yon_char_divide_search(str_key, "[",-1); str_key = yon_char_divide_search(str_key, "]",-1); load_pars_keys_u_g(_config, str_key, index); load_pars_keys_p(_config, str_key, index); } void load_pars_keys_u_g(config_u_g_p* _config, char* str_key, int index) { if (strstr(str_key, "prjquota")) { return; } if (yon_char_find_count(str_key, ":") || yon_char_find_count(str_key, ",")) { int size_point = 0; char** arr_keys = philos_str_split(str_key, &size_point, ":"); char** type_quota = philos_char_parsed_append(_config->type_arr, &index, arr_keys[0]); int size_users = 0; if (yon_char_find_count(str_key, ":") == 2) { _config->UNIX_file = philos_char_parsed_append(_config->UNIX_file,&index, arr_keys[1]); } if (yon_char_find_count(str_key, ",")) { int size_comma = 0; char** arr_user = philos_str_split(arr_keys[size_point-1], &size_comma, ","); for (int i = 0; i < size_comma; i++) { _config->actors = yon_char_parsed_append(_config->actors, &size_users, arr_user[i]); } _config->actors = yon_char_parsed_append(_config->actors, &size_users, NULL); } else { _config->actors = yon_char_parsed_append(_config->actors, &size_users, NULL); } } else { } } void load_pars_keys_p(config_u_g_p* _config, char* str_key, int index) { if (strstr(str_key, "usrquota") || strstr(str_key, "grpquota")) { return; } if (yon_char_find_count(str_key, ":") || yon_char_find_count(str_key, ",")) { int size_point = 0; char** arr_keys = philos_str_split(str_key, &size_point, ":"); char** type_quota = philos_char_parsed_append(_config->type_arr,&index, arr_keys[0]); int size_users = 0; if (yon_char_find_count(str_key, ":") == 2) { _config->UNIX_file = philos_char_parsed_append(_config->UNIX_file,&index, arr_keys[1]); int size_comma = 0; if (yon_char_find_count(str_key, ",")) { char** arr_user = philos_str_split(arr_keys[size_point-1], &size_comma, ","); if (strstr(str_key, "AUTO")) { _config->number = philos_int_append(_config->number,&index, -1); } else { _config->number = philos_int_append(_config->number,&index, atoi(arr_user[0])); } } else { if (strstr(str_key, "AUTO")) { _config->number = philos_int_append(_config->number,&index, -1); } else { _config->number = philos_int_append(_config->number, &size_comma, atoi(arr_keys[size_point-1])); } } } } } void load_pars_values_status(config_u_g_p* _config, int index, char*key, char* value) { for (int i = 0; i < _config->size; i++) { if (strstr(key, _config->loaded_keys[i])) { if (strstr(key,"enable")) { _config->status[index] = 1; return; } else if (strstr(key,"disable")) { _config->status[index] = 0; return; } } } } void load_pars_values(config_u_g_p* _config, char* str_value, int index) { int size = 0; char* new_value = yon_char_new(str_value); char** arr_values = philos_str_split(new_value, &size, ":"); if (yon_char_find_count(str_value, ":") == 3 || yon_char_find_count(str_value, ":") == 5) { philos_set_pow_size_memory(yon_char_new(arr_values[0]), &_config->soft_restriction_size, index, array_size_pow); philos_set_size_memory_integer(yon_char_new(arr_values[0]), &_config->soft_restriction_size_pow, index); philos_set_pow_size_memory(yon_char_new(arr_values[1]), &_config->soft_restriction_file, index, array_size_pow); philos_set_size_memory_integer(yon_char_new(arr_values[1]), &_config->soft_restriction_file, index); philos_set_pow_size_memory(yon_char_new(arr_values[2]), &_config->severe_limitation_size, index, array_size_pow); philos_set_size_memory_integer(yon_char_new(arr_values[2]), &_config->severe_limitation_size_pow, index); philos_set_pow_size_memory(yon_char_new(arr_values[3]), &_config->severe_limitation_file, index, array_size_pow); philos_set_size_memory_integer(yon_char_new(arr_values[3]), &_config->severe_limitation_file_pow, index); if (yon_char_find_count(str_value, ":") == 5) { philos_set_pow_size_memory(yon_char_new(arr_values[3]), &_config->deferring_size, index, array_size_pow); philos_set_size_memory_integer(yon_char_new(arr_values[3]), &_config->deferring_size_pow, index); philos_set_pow_size_memory(yon_char_new(arr_values[3]), &_config->deferring_file, index, array_size_pow); philos_set_size_memory_integer(yon_char_new(arr_values[3]), &_config->deferring_file_pow, index); } else { philos_set_pow_size_memory("-", &_config->deferring_size, index, array_size_pow); philos_set_size_memory_integer("-", &_config->deferring_size_pow, index); philos_set_pow_size_memory("-", &_config->deferring_file, index, array_size_pow); philos_set_size_memory_integer("-", &_config->deferring_file_pow, index); } } else { } }