You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ubl-settings-diskquota/source/model/load.c

175 lines
6.8 KiB

#include "load.h"
void load_template_load_cfg(config_all* _all_config, char* cmd) {
int size = 0;
char** cfg = yon_config_load(cmd, &size);
philos_array_string_remove_char(&cfg, "\n", size);
int size_loaded_keys = 0;
load_free_vector(_all_config);
vector_init(&_all_config->v_u_g_p);
vector_init(&_all_config->v_disk_status);
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);
yon_char_divide_search(str_key, "[",-1);
str_key = yon_char_divide_search(str_key, "]",-1);
char* str_value = str_key_value;
if (strstr(str_value, "enable") || strstr(str_value, "disable")) {
disk_status* disk_cfg = malloc(sizeof(disk_status));
load_pars_values_status(disk_cfg, str_key, str_value);
_all_config->v_disk_status.pfVectorAdd(&_all_config->v_disk_status, disk_cfg);
}
else {
config_u_g_p* _config = malloc(sizeof(config_u_g_p));
model_null_str_writing(_config);
_config->loaded_keys = yon_char_new(str_key);
load_pars_keys(_config, yon_char_new(str_key), index);
load_pars_values(_config, yon_char_new(str_value), index);
_all_config->v_u_g_p.pfVectorAdd(&_all_config->v_u_g_p,_config);
}
}
_all_config->flag_set_data = 0;
_all_config->flag_not_data = 1;
}
void load_pars_keys(config_u_g_p* _config, char* str_key, int index) {
load_pars_keys_u_g(_config, yon_char_new(str_key), index);
load_pars_keys_p(_config, yon_char_new(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(yon_char_new(str_key), &size_point, ":");
_config->type_arr = yon_char_new(arr_keys[0]);
int size_users = 0;
if (yon_char_find_count(str_key, ":") == 2) {
if (yon_char_find_count(str_key, ",")) {
int size_comma = 0;
char** arr_user = philos_str_split(arr_keys[size_point-1], &size_comma, ",");
_config->UNIX_file = yon_char_new(arr_keys[1]);
for (int i = 1; i < size_comma; i++) {
_config->actors = yon_char_new(arr_user[i]);
}
}
else {
_config->UNIX_file = yon_char_new(arr_keys[1]);
}
}
}
else {
}
}
void load_pars_keys_p(config_u_g_p* _config, char* str_key, int index) {
puts(str_key);
if (strstr(str_key, "prjquota")) {
if (yon_char_find_count(str_key, ":") || yon_char_find_count(str_key, ",")) {
int size_point = 0;
char** arr_keys = philos_str_split(yon_char_new(str_key), &size_point, ":");
_config->type_arr = yon_char_new(arr_keys[0]);
int size_users = 0;
if (yon_char_find_count(str_key, ":") == 2) {
_config->UNIX_file = yon_char_new(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->id = -1;
}
else {
_config->id = atoi(arr_user[0]);
}
_config->actors = yon_char_new(arr_keys[size_comma-1]);
}
else {
if (strstr(str_key, "AUTO")) {
_config->id = -1;
}
else {
_config->id = atoi(arr_keys[size_point-1]);
}
}
}
}
}
else {
}
}
void load_pars_values_status(disk_status* _config, char* key, char* value) {
_config->device = yon_char_new(value);
if (strstr(key,"enable")) {
_config->status = 1;
return;
}
else if (strstr(key,"disable")) {
_config->status = 0;
return;
}
}
void load_pars_values(config_u_g_p* _config, char* str_value, int index) {
int size_array_size_pow = 0;
char** array_size_pow = NULL;
array_size_pow = yon_char_parsed_append(array_size_pow,&size_array_size_pow, STR_KB);
array_size_pow = yon_char_parsed_append(array_size_pow,&size_array_size_pow, STR_MB);
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 size = 0;
char* new_value = yon_char_new(str_value);
char** arr_values = philos_str_split(new_value, &size, ":");
int index_split = yon_char_find_count(str_value, ":");
if (index_split == 3 || index_split == 5) {
philos_set_pow_size_memory(yon_char_new(arr_values[0]), &_config->soft_restriction_size_pow, array_size_pow);
philos_set_size_memory_integer(yon_char_new(arr_values[0]), &_config->soft_restriction_size);
philos_set_pow_size_memory(yon_char_new(arr_values[1]), &_config->soft_restriction_file_pow, array_size_pow);
philos_set_size_memory_integer(yon_char_new(arr_values[1]), &_config->soft_restriction_file);
philos_set_pow_size_memory(yon_char_new(arr_values[2]), &_config->severe_limitation_size_pow, array_size_pow);
philos_set_size_memory_integer(yon_char_new(arr_values[2]), &_config->severe_limitation_size);
philos_set_pow_size_memory(yon_char_new(arr_values[3]), &_config->severe_limitation_file_pow, array_size_pow);
philos_set_size_memory_integer(yon_char_new(arr_values[3]), &_config->severe_limitation_file);
if (index_split == 5) {
_config->deferring_size = atoll(arr_values[4]);
_config->deferring_file = atoll(arr_values[5]);
}
else {
philos_set_size_memory_integer("-", &_config->deferring_size);
philos_set_size_memory_integer("-", &_config->deferring_file);
}
}
else {
}
}
void load_free_vector(config_all* _all_config) {
if (_all_config->flag_not_data == 1) {
_all_config->v_u_g_p.pfVectorFree(&_all_config->v_u_g_p);
}
}
char* wrapper_str_time(size_t seconds) {
me_time t;
if (seconds!=-1) {
t = time_convert(seconds);
t.str_time = yon_char_unite(yon_char_from_int(t.weeks),WEEKS,
yon_char_from_int(t.days), DAYS,
yon_char_from_int(t.hours), HOURS,
yon_char_from_int(t.minutes), MINUTES, NULL);
}
else {
t.str_time = yon_char_new("-");
}
return t.str_time;
}