Merge pull request 'Fixed appending parameter with additional divider' (#14) from YanTheKaller/libublsettings:master into master

Reviewed-on: #14
pull/15/head v1.10
Dmitry Razumov 2 years ago
commit de56d67ef5

@ -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 *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); yon_config_parameter *param = yon_config_parameter_new_with_data(key,data);
param->first=dict->first; 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; dict->next=param;
return 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)); free(yon_char_divide(final_str,0));
} }
dictionary *dicte = yon_dictionary_get((dictionary**)&__yon__config__strings,key);
if (!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)); yon_config_parameter_add_or_create_if_exists_with_data(__yon__config__strings,key,yon_char_new(final_str));
} else { } else {
if (strcmp((char*)__yon__config__strings->data,final_str)){ if (strcmp((char*)dicte->data,final_str)){
__yon__config__strings->data=final_str; __yon__config__strings->data=final_str;
} else { } else {
continue; continue;
} }
} }
__yon__config__strings->flag1=0;
yon_config_remove_ignore(key); yon_config_remove_ignore(key);
if (config_type==YON_CONFIG_DEFAULT){ if (config_type==YON_CONFIG_DEFAULT){
__yon__config__strings->flag1=-2; __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)); 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)); yon_config_parameter_add_or_create_if_exists_with_data(__yon__config__strings,key,yon_char_new(final_str));
} else { } else {
if (strcmp((char*)__yon__config__strings->data,final_str)){ 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; continue;
} }
} }
__yon__config__strings->flag1=0;
yon_config_remove_ignore(key); yon_config_remove_ignore(key);
if (config_type==YON_CONFIG_DEFAULT){ if (config_type==YON_CONFIG_DEFAULT){
__yon__config__strings->flag1=-2; __yon__config__strings->flag1=-2;
@ -1070,7 +1074,7 @@ int yon_config_remove_by_key(char *key){
return 0; 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{ check_config{
int found = 0; int found = 0;
yon_config_parameter *dict = (yon_config_parameter*)yon_dictionary_get((dictionary**)&__yon__config__strings,key); 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 parsed = yon_char_parse((char*)dict->data,&size,divider);
config_str final = NULL; config_str final = NULL;
for(int i=0;i<size;i++){ for(int i=0;i<size;i++){
if (!strcmp(parsed[i],delete)){ if (!strcmp(parsed[i],delete_target)){
parsed = yon_char_parsed_rip(parsed,&size,i--); parsed = yon_char_parsed_rip(parsed,&size,i--);
found = 1; found = 1;
} }
@ -1235,7 +1239,7 @@ int yon_config_append(char *key, char *data, char *divider){
if (dict){ if (dict){
if (strcmp(((char*)dict->data),"")!=0){ if (strcmp(((char*)dict->data),"")!=0){
char *str = (char*)dict->data; 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); else dict->data=(void*)yon_char_new(data);
dict->flag1=1; dict->flag1=1;

@ -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_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); int yon_char_find_last(char *source, char find);
/**[EN] /**[EN]
@ -592,8 +594,8 @@ config_str yon_dir_get_contents(char *dir_path, int *size);
//config functions //config functions
#define ubconfig_save_command "ubconfig --quiet" #define ubconfig_save_command "ubconfig "
#define ubconfig_load_command "ubconfig --quiet --source" #define ubconfig_load_command "ubconfig --source"
/** /**
* Типы конфигураций ubconfig-а * Типы конфигураций ubconfig-а
@ -680,7 +682,7 @@ int yon_config_remove_by_key(char *key);
* [RU] * [RU]
* Удаляет элемент [deleted] из массива параметров с ключом [key] * Удаляет элемент [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); int yon_config_set_status(char *key, int status);

Loading…
Cancel
Save