From d1cc769f9339fe6139cfc7fcb98f29139b7ee68f Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Fri, 26 Jul 2024 17:44:01 +0600 Subject: [PATCH 1/4] Fixed saving bug --- source/libublsettings.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/source/libublsettings.c b/source/libublsettings.c index 0b0038e..f677d54 100644 --- a/source/libublsettings.c +++ b/source/libublsettings.c @@ -737,8 +737,7 @@ config_str yon_char_parsed_merge(config_str array1, int size1, config_str array2 *final_size=0; config_str parsed_final = yon_char_parsed_new(final_size,array1[0],NULL); for (int i=1;i Date: Wed, 31 Jul 2024 09:55:19 +0600 Subject: [PATCH 2/4] Fixed crash --- source/libublsettings.c | 79 +++++++++++++++++++++++------------------ 1 file changed, 45 insertions(+), 34 deletions(-) diff --git a/source/libublsettings.c b/source/libublsettings.c index f677d54..32cf90b 100644 --- a/source/libublsettings.c +++ b/source/libublsettings.c @@ -1554,48 +1554,59 @@ void yon_config_register(char *key, char *config_load, void *data){ key=yon_char_new(key); config_load=yon_char_new(config_load); yon_config_parameter *current = NULL; - if (!__yon__config__strings||!(current=(yon_config_parameter*)yon_dictionary_get((dictionary**)&__yon__config__strings,key))){ - { - if (__yon__config__strings){ - char *data_copy = yon_char_new(data); - yon_config_parameter* dict=NULL; - for_dictionaries(dict,__yon__config__strings){ - if (!dict->next){ - __yon__config__strings=dict; + if (data){ + if (!__yon__config__strings||!(current=(yon_config_parameter*)yon_dictionary_get((dictionary**)&__yon__config__strings,key))){ + { + if (__yon__config__strings){ + char *data_copy = yon_char_new(data); + yon_config_parameter* dict=NULL; + for_dictionaries(dict,__yon__config__strings){ + if (!dict->next){ + __yon__config__strings=dict; + } } + __yon__config__strings=yon_config_parameter_append_with_data(__yon__config__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__strings=yon_config_parameter_append_with_data(__yon__config__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__strings = (yon_config_parameter*)yon_dictionary_get_last((dictionary*)__yon__config__strings); + __yon__config__strings->flag1=1; + __yon__config__strings->data_type=DICTIONARY_CHAR_TYPE; + __yon__config__strings->load_command=config_load; + int size=0; + config_str section = yon_char_parse(config_load,&size," "); + __yon__config__strings->section=yon_char_new(section[4]); + yon_char_parsed_free(section,size); + } + else if ((current = (yon_config_parameter*)yon_dictionary_get((dictionary**)&__yon__config__strings,key))){ + if ((current->data&&data!=__yon__config__strings->data&&strcmp(__yon__config__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_dictionary_rip(__yon_config_ignored); + } + int size=0; + config_str section = yon_char_parse(config_load,&size," "); + current->section=yon_char_new(section[4]); + yon_char_parsed_free(section,size); } } - __yon__config__strings = (yon_config_parameter*)yon_dictionary_get_last((dictionary*)__yon__config__strings); - __yon__config__strings->flag1=1; - __yon__config__strings->data_type=DICTIONARY_CHAR_TYPE; - __yon__config__strings->load_command=config_load; + } else if ((current = (yon_config_parameter*)yon_dictionary_get((dictionary**)&__yon__config__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," "); - __yon__config__strings->section=yon_char_new(section[4]); + current->section=yon_char_new(section[4]); yon_char_parsed_free(section,size); } - else if ((current = (yon_config_parameter*)yon_dictionary_get((dictionary**)&__yon__config__strings,key))){ - if ((current->data&&data!=__yon__config__strings->data&&strcmp(__yon__config__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_dictionary_rip(__yon_config_ignored); - } - int size=0; - config_str section = yon_char_parse(config_load,&size," "); - current->section=yon_char_new(section[4]); - yon_char_parsed_free(section,size); - } - } } config_str yon_config_load(char *command, int *str_len){ @@ -1855,7 +1866,7 @@ char *yon_config_save_simple(YON_CONFIG_TYPE target, char *path){ if (parameters){ yon_char_parsed_prepend_strings(parameters,parameters_size,ubconfig_set_command(path)); char *final_command = yon_char_parsed_to_string(parameters,parameters_size,";"); - printf("%s\n",final_command); + yon_debug_output("%s\n",final_command); FILE *file = popen(final_command,"r"); if (file){ int file_size=0; From fb02bb9105707e1f35ada77bc7c829420ca26727 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Wed, 31 Jul 2024 09:58:29 +0600 Subject: [PATCH 3/4] Fixed crash --- source/libublsettings.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/libublsettings.c b/source/libublsettings.c index 32cf90b..5da021a 100644 --- a/source/libublsettings.c +++ b/source/libublsettings.c @@ -1866,7 +1866,7 @@ char *yon_config_save_simple(YON_CONFIG_TYPE target, char *path){ if (parameters){ yon_char_parsed_prepend_strings(parameters,parameters_size,ubconfig_set_command(path)); char *final_command = yon_char_parsed_to_string(parameters,parameters_size,";"); - yon_debug_output("%s\n",final_command); + printf("%s\n",final_command); FILE *file = popen(final_command,"r"); if (file){ int file_size=0; From 8c81a30069b8d378a8f553937021a8a12b856e05 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Wed, 31 Jul 2024 18:06:50 +0600 Subject: [PATCH 4/4] Fixes --- source/libublsettings.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/source/libublsettings.c b/source/libublsettings.c index 5da021a..c37ebca 100644 --- a/source/libublsettings.c +++ b/source/libublsettings.c @@ -917,8 +917,9 @@ config_str yon_dir_get_contents(char *dir_path, int *size){ DIR *directory = opendir(dir_path); struct dirent *de; while ((de = readdir(directory))){ - if (dir) dir = yon_char_parsed_append(dir,size,yon_char_new(de->d_name)); - else dir = yon_char_parsed_new(size,yon_char_new(de->d_name),NULL); + if (dir){ dir = yon_char_parsed_append(dir,size,yon_char_new(de->d_name)); + free(de); + } else dir = yon_char_parsed_new(size,yon_char_new(de->d_name),NULL); } closedir(directory); } @@ -2083,6 +2084,7 @@ config_str yon_file_open(char *file_path, int *size){ while (fgets(str_loaded,4098,file)){ final_string = final_string ? yon_char_parsed_append(final_string,size,str_loaded) : yon_char_parsed_new(size,str_loaded,NULL); } + fclose(file); return final_string; } }