diff --git a/source/libublsettings.c b/source/libublsettings.c index 19c1e28..b314d5d 100644 --- a/source/libublsettings.c +++ b/source/libublsettings.c @@ -884,7 +884,8 @@ yon_config_parameter *yon_config_parameter_new_with_data(char *key, void *data){ yon_config_parameter *yon_config_parameter_append_with_data(yon_config_parameter *dict, char *key, void *data){ yon_config_parameter *param = yon_config_parameter_new_with_data(key,data); param->first=dict->first; - (param->prev)=(yon_config_parameter*)yon_dictionary_get_last((dictionary*)dict); + dict = (yon_config_parameter*)yon_dictionary_get_last((dictionary*)dict); + (param->prev)=dict; dict->next=param; return param; } @@ -966,16 +967,17 @@ int yon_config_load_register_no_cleaning(YON_CONFIG_TYPE config_type,char *secti free(yon_char_divide(final_str,0)); } - - if (!yon_dictionary_get((dictionary**)&__yon__config__strings,key)){ + dictionary *dicte = yon_dictionary_get((dictionary**)&__yon__config__strings,key); + if (!dicte){ yon_config_parameter_add_or_create_if_exists_with_data(__yon__config__strings,key,yon_char_new(final_str)); } else { - if (strcmp((char*)__yon__config__strings->data,final_str)){ + if (strcmp((char*)dicte->data,final_str)){ __yon__config__strings->data=final_str; } else { continue; } } + __yon__config__strings->flag1=0; yon_config_remove_ignore(key); if (config_type==YON_CONFIG_DEFAULT){ __yon__config__strings->flag1=-2; @@ -1029,7 +1031,8 @@ int yon_config_load_register(YON_CONFIG_TYPE config_type,char *section,char *par free(yon_char_divide(final_str,0)); } - if (!yon_dictionary_get((dictionary**)&__yon__config__strings,key)){ + dictionary *dicte = yon_dictionary_get((dictionary**)&__yon__config__strings,key); + if (!dicte){ yon_config_parameter_add_or_create_if_exists_with_data(__yon__config__strings,key,yon_char_new(final_str)); } else { if (strcmp((char*)__yon__config__strings->data,final_str)){ @@ -1038,6 +1041,7 @@ int yon_config_load_register(YON_CONFIG_TYPE config_type,char *section,char *par continue; } } + __yon__config__strings->flag1=0; yon_config_remove_ignore(key); if (config_type==YON_CONFIG_DEFAULT){ __yon__config__strings->flag1=-2; @@ -1070,7 +1074,7 @@ int yon_config_remove_by_key(char *key){ return 0; } -int yon_config_remove_element(char *key, char *delete, char *divider){ +int yon_config_remove_element(char *key, char *delete_target, char *divider){ check_config{ int found = 0; yon_config_parameter *dict = (yon_config_parameter*)yon_dictionary_get((dictionary**)&__yon__config__strings,key); @@ -1079,7 +1083,7 @@ int yon_config_remove_element(char *key, char *delete, char *divider){ config_str parsed = yon_char_parse((char*)dict->data,&size,divider); config_str final = NULL; for(int i=0;idata),"")!=0){ char *str = (char*)dict->data; - dict->data=(void*)(yon_char_unite(yon_char_is_empty(str)?"":str,yon_char_is_empty(str)?"":",",divider,data,NULL)); + dict->data=(void*)(yon_char_unite(yon_char_is_empty(str)?"":str,yon_char_is_empty(str)?"":divider,data,NULL)); } else dict->data=(void*)yon_char_new(data); dict->flag1=1; diff --git a/source/libublsettings.h b/source/libublsettings.h index 07f428f..d18fd13 100644 --- a/source/libublsettings.h +++ b/source/libublsettings.h @@ -290,6 +290,8 @@ void *yon_dictionary_free_all(dictionary *dictionary,void (data_manipulation)(vo #define yon_char_return_if_exist(string,opposite) string&&strcmp(string,"")?string:opposite +#define yon_char_remove_last_symbol(target,symbol) {if (target[strlen(target)-1]==symbol) target[strlen(target)-1]='\0';} + int yon_char_find_last(char *source, char find); /**[EN] @@ -592,8 +594,8 @@ config_str yon_dir_get_contents(char *dir_path, int *size); //config functions -#define ubconfig_save_command "ubconfig --quiet" -#define ubconfig_load_command "ubconfig --quiet --source" +#define ubconfig_save_command "ubconfig " +#define ubconfig_load_command "ubconfig --source" /** * Типы конфигураций ubconfig-а @@ -680,7 +682,7 @@ int yon_config_remove_by_key(char *key); * [RU] * Удаляет элемент [deleted] из массива параметров с ключом [key] */ -int yon_config_remove_element(char *key, char *delete, char *divider); +int yon_config_remove_element(char *key, char *delete_target, char *divider); int yon_config_set_status(char *key, int status);