Test fix for default parameters

pull/44/head
parent 5e51a0a1a3
commit 93e4b69d59

@ -697,6 +697,12 @@ enum YON_CONFIG_SAVED_TYPE yon_config_register(char *key,char *config_load, char
yon_config_parameter_add_or_create_if_exists_with_data(__yon__config__strings,key,data); yon_config_parameter_add_or_create_if_exists_with_data(__yon__config__strings,key,data);
current = __yon__config__strings; current = __yon__config__strings;
} }
yon_config_parameter *default_parameter = (yon_config_parameter*)yon_dictionary_get((dictionary**)&__yon__config__default__strings,key);
if (default_parameter){
__yon__config__default__strings = (yon_config_parameter*)yon_dictionary_rip((dictionary*)default_parameter);
}
switch(current->flag1){ switch(current->flag1){
case -1: save_type = YON_CONFIG_SAVED_REMOVED; case -1: save_type = YON_CONFIG_SAVED_REMOVED;
case 1: save_type = YON_CONFIG_SAVED_CHANGED; case 1: save_type = YON_CONFIG_SAVED_CHANGED;
@ -718,115 +724,155 @@ enum YON_CONFIG_SAVED_TYPE yon_config_register(char *key,char *config_load, char
return save_type; return save_type;
} }
void yon_config_register_default(char *key, char *config_load, void *data){ enum YON_CONFIG_SAVED_TYPE yon_config_register_default(char *key,char *config_load, char *data){
if (!yon_char_is_empty(key)){ if (yon_char_is_empty(key)||yon_char_is_empty(config_load)) return YON_CONFIG_SAVED_ERROR;
key=yon_char_new(key);
config_load=yon_char_new(config_load);
yon_config_parameter *current = NULL;
if (data){
if (!__yon__config__default__strings||!(current=(yon_config_parameter*)yon_dictionary_get((dictionary**)&__yon__config__default__strings,key))){
{
if (__yon__config__default__strings){
char *data_copy = yon_char_new(data);
yon_config_parameter* dict=NULL;
for_dictionaries(dict,__yon__config__default__strings){
if (!dict->next){
__yon__config__default__strings=dict;
}
}
__yon__config__default__strings=yon_config_parameter_append_with_data(__yon__config__default__strings,key,data_copy);
} enum YON_CONFIG_SAVED_TYPE save_type = YON_CONFIG_SAVED_NEW;
else {
char *data_copy = yon_char_new(data);
__yon__config__strings=yon_config_parameter_new_with_data(key,yon_char_new(data));
}
}
__yon__config__default__strings = (yon_config_parameter*)yon_dictionary_get_last((dictionary*)__yon__config__default__strings);
__yon__config__default__strings->flag1=1;
__yon__config__default__strings->data_type=DICTIONARY_CHAR_TYPE;
__yon__config__default__strings->load_command=config_load;
int size=0;
config_str section = yon_char_parse(config_load,&size," ");
__yon__config__default__strings->section=yon_char_new(section[yon_char_parsed_check_exist(section,size,"get")+1]);
yon_char_parsed_free(section,size);
}
else if ((current = (yon_config_parameter*)yon_dictionary_get((dictionary**)&__yon__config__default__strings,key))){
yon_config_parameter *cur_default = (yon_config_parameter*)yon_dictionary_get((dictionary**)&__yon__config__default__strings,current->key);
if ((current->data&&data!=__yon__config__default__strings->data&&strcmp(__yon__config__default__strings->data,data))||!current->data){
current->data=yon_char_new(data);
current->flag1=1;
current->data_type=DICTIONARY_CHAR_TYPE;
current->load_command=config_load;
if (yon_dictionary_get(&__yon_config_ignored, current->key)){
__yon_config_ignored = yon_dictionary_rip(__yon_config_ignored);
}
int size=0;
config_str section = yon_char_parse(config_load,&size," ");
current->section=yon_char_new(section[yon_char_parsed_check_exist(section,size,"get")+1]);
yon_char_parsed_free(section,size);
if ((cur_default&&strcmp((char*)cur_default->data,(char*)current->data))){
yon_config_remove_by_key(current->key);
}
}
}
} else if ((current = (yon_config_parameter*)yon_dictionary_get((dictionary**)&__yon__config__default__strings,key))) {
current->data=NULL;
current->flag1=0;
current->data_type=DICTIONARY_CHAR_TYPE;
current->load_command=config_load;
int size=0;
config_str section = yon_char_parse(config_load,&size," ");
current->section=yon_char_new(section[yon_char_parsed_check_exist(section,size,"get")+1]);
yon_char_parsed_free(section,size);
} else {
if (!__yon__config__default__strings||!(current=(yon_config_parameter*)yon_dictionary_get((dictionary**)&__yon__config__default__strings,key))){
{
if (__yon__config__default__strings){
yon_config_parameter* dict=NULL;
for_dictionaries(dict,__yon__config__default__strings){
if (!dict->next){
__yon__config__default__strings=dict;
}
}
__yon__config__default__strings=yon_config_parameter_append_with_data(__yon__config__default__strings,key,NULL);
yon_config_parameter *current = NULL;
check_default_config{
current = (yon_config_parameter*)yon_dictionary_get((dictionary**)&__yon__config__default__strings,key);
if (!current){
yon_config_parameter_add_or_create_if_exists_with_data(__yon__config__default__strings,key,data);
current = (yon_config_parameter*)yon_dictionary_get_last((dictionary *)__yon__config__default__strings);
} else if (!yon_char_is_empty(data)&&!strcmp((char*)current->data,(char*)data)){
save_type=YON_CONFIG_SAVED_EXIST;
return save_type;
} }
else { } else {
__yon__config__default__strings=yon_config_parameter_new_with_data(key,NULL); yon_config_parameter_add_or_create_if_exists_with_data(__yon__config__default__strings,key,data);
} current = __yon__config__default__strings;
} }
yon_config_set_ignore(key); switch(current->flag1){
__yon__config__default__strings = (yon_config_parameter*)yon_dictionary_get_last((dictionary*)__yon__config__default__strings); case -1: save_type = YON_CONFIG_SAVED_REMOVED;
__yon__config__default__strings->flag1=0; case 1: save_type = YON_CONFIG_SAVED_CHANGED;
__yon__config__default__strings->data_type=DICTIONARY_CHAR_TYPE; default: save_type = YON_CONFIG_SAVED_NEW;
__yon__config__default__strings->load_command=config_load;
int size=0;
config_str section = yon_char_parse(config_load,&size," ");
__yon__config__default__strings->section=yon_char_new(section[yon_char_parsed_check_exist(section,size,"get")+1]);
yon_char_parsed_free(section,size);
} }
else if ((current = (yon_config_parameter*)yon_dictionary_get((dictionary**)&__yon__config__default__strings,key))){ config_load = yon_char_new(config_load);
if ((current->data&&data!=__yon__config__default__strings->data&&strcmp(__yon__config__default__strings->data,data))||!current->data){
yon_config_set_ignore(key);
current->data=NULL;
current->flag1=0;
current->data_type=DICTIONARY_CHAR_TYPE; current->data_type=DICTIONARY_CHAR_TYPE;
current->load_command=config_load; current->load_command = config_load;
if (yon_dictionary_get(&__yon_config_ignored, current->key)){ current->section = yon_config_command_get_section(config_load);
__yon_config_ignored= yon_dictionary_rip(__yon_config_ignored);
} if (data){
int size=0; yon_config_remove_ignore(key);
config_str section = yon_char_parse(config_load,&size," "); current->flag1=1;
current->section=yon_char_new(section[yon_char_parsed_check_exist(section,size,"get")+1]); } else {
yon_char_parsed_free(section,size); yon_config_set_ignore(key);
} current->flag1 = 0;
}
}
} }
return save_type;
} }
// void yon_config_register_default(char *key, char *config_load, void *data){
// if (!yon_char_is_empty(key)){
// key=yon_char_new(key);
// config_load=yon_char_new(config_load);
// yon_config_parameter *current = NULL;
// if (data){
// if (!__yon__config__default__strings||!(current=(yon_config_parameter*)yon_dictionary_get((dictionary**)&__yon__config__default__strings,key))){
// {
// if (__yon__config__default__strings){
// char *data_copy = yon_char_new(data);
// yon_config_parameter* dict=NULL;
// for_dictionaries(dict,__yon__config__default__strings){
// if (!dict->next){
// __yon__config__default__strings=dict;
// }
// }
// __yon__config__default__strings=yon_config_parameter_append_with_data(__yon__config__default__strings,key,data_copy);
// }
// else {
// char *data_copy = yon_char_new(data);
// __yon__config__strings=yon_config_parameter_new_with_data(key,yon_char_new(data));
// }
// }
// __yon__config__default__strings = (yon_config_parameter*)yon_dictionary_get_last((dictionary*)__yon__config__default__strings);
// __yon__config__default__strings->flag1=1;
// __yon__config__default__strings->data_type=DICTIONARY_CHAR_TYPE;
// __yon__config__default__strings->load_command=config_load;
// int size=0;
// config_str section = yon_char_parse(config_load,&size," ");
// __yon__config__default__strings->section=yon_char_new(section[yon_char_parsed_check_exist(section,size,"get")+1]);
// yon_char_parsed_free(section,size);
// }
// else if ((current = (yon_config_parameter*)yon_dictionary_get((dictionary**)&__yon__config__default__strings,key))){
// yon_config_parameter *cur_default = (yon_config_parameter*)yon_dictionary_get((dictionary**)&__yon__config__default__strings,current->key);
// if ((current->data&&data!=__yon__config__default__strings->data&&strcmp(__yon__config__default__strings->data,data))||!current->data){
// current->data=yon_char_new(data);
// current->flag1=1;
// current->data_type=DICTIONARY_CHAR_TYPE;
// current->load_command=config_load;
// if (yon_dictionary_get(&__yon_config_ignored, current->key)){
// __yon_config_ignored = yon_dictionary_rip(__yon_config_ignored);
// }
// int size=0;
// config_str section = yon_char_parse(config_load,&size," ");
// current->section=yon_char_new(section[yon_char_parsed_check_exist(section,size,"get")+1]);
// yon_char_parsed_free(section,size);
// if ((cur_default&&strcmp((char*)cur_default->data,(char*)current->data))){
// yon_config_remove_by_key(current->key);
// }
// }
// }
// } else if ((current = (yon_config_parameter*)yon_dictionary_get((dictionary**)&__yon__config__default__strings,key))) {
// current->data=NULL;
// current->flag1=0;
// current->data_type=DICTIONARY_CHAR_TYPE;
// current->load_command=config_load;
// int size=0;
// config_str section = yon_char_parse(config_load,&size," ");
// current->section=yon_char_new(section[yon_char_parsed_check_exist(section,size,"get")+1]);
// yon_char_parsed_free(section,size);
// } else {
// if (!__yon__config__default__strings||!(current=(yon_config_parameter*)yon_dictionary_get((dictionary**)&__yon__config__default__strings,key))){
// {
// if (__yon__config__default__strings){
// yon_config_parameter* dict=NULL;
// for_dictionaries(dict,__yon__config__default__strings){
// if (!dict->next){
// __yon__config__default__strings=dict;
// }
// }
// __yon__config__default__strings=yon_config_parameter_append_with_data(__yon__config__default__strings,key,NULL);
// }
// else {
// __yon__config__default__strings=yon_config_parameter_new_with_data(key,NULL);
// }
// }
// yon_config_set_ignore(key);
// __yon__config__default__strings = (yon_config_parameter*)yon_dictionary_get_last((dictionary*)__yon__config__default__strings);
// __yon__config__default__strings->flag1=0;
// __yon__config__default__strings->data_type=DICTIONARY_CHAR_TYPE;
// __yon__config__default__strings->load_command=config_load;
// int size=0;
// config_str section = yon_char_parse(config_load,&size," ");
// __yon__config__default__strings->section=yon_char_new(section[yon_char_parsed_check_exist(section,size,"get")+1]);
// yon_char_parsed_free(section,size);
// }
// else if ((current = (yon_config_parameter*)yon_dictionary_get((dictionary**)&__yon__config__default__strings,key))){
// if ((current->data&&data!=__yon__config__default__strings->data&&strcmp(__yon__config__default__strings->data,data))||!current->data){
// yon_config_set_ignore(key);
// current->data=NULL;
// current->flag1=0;
// current->data_type=DICTIONARY_CHAR_TYPE;
// current->load_command=config_load;
// if (yon_dictionary_get(&__yon_config_ignored, current->key)){
// __yon_config_ignored= yon_dictionary_rip(__yon_config_ignored);
// }
// int size=0;
// config_str section = yon_char_parse(config_load,&size," ");
// current->section=yon_char_new(section[yon_char_parsed_check_exist(section,size,"get")+1]);
// yon_char_parsed_free(section,size);
// }
// }
// }
// }
// }
config_str yon_config_load(char *command, int *str_len){ config_str yon_config_load(char *command, int *str_len){
FILE *output = popen(command, "r"); FILE *output = popen(command, "r");
char **output_strings = NULL; char **output_strings = NULL;

@ -262,7 +262,7 @@ dictionary *yon_dictionary_get(dictionary **dict, char *key);
* [EN] * [EN]
* *
* [RU] * [RU]
* Вырезает элемент из словаря и возвращает вырезанный элемент. * Вырезает элемент из словаря и возвращает ближайший элемент.
*/ */
dictionary *yon_dictionary_rip(dictionary *dict); dictionary *yon_dictionary_rip(dictionary *dict);
@ -993,7 +993,7 @@ enum YON_CONFIG_SAVED_TYPE{
enum YON_CONFIG_SAVED_TYPE yon_config_register(char *key,char *config_load, char *data); enum YON_CONFIG_SAVED_TYPE yon_config_register(char *key,char *config_load, char *data);
// void yon_config_register(char *key, char* config_section, void *data); // void yon_config_register(char *key, char* config_section, void *data);
void yon_config_register_default(char *key, char *config_load, void *data); enum YON_CONFIG_SAVED_TYPE yon_config_register_default(char *key,char *config_load, char *data);
char *yon_config_save_simple(YON_CONFIG_TYPE target, char *path); char *yon_config_save_simple(YON_CONFIG_TYPE target, char *path);

Loading…
Cancel
Save