From 2da047a5bfc3f136855287e94a214b37a24264e2 Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Wed, 11 Mar 2026 11:31:59 +0600 Subject: [PATCH] Added auto quote wrapping for config_get_all_by_key function --- source/libublsettings-config.c | 25 ++++++++++++++++++++++++- source/libublsettings.h | 3 +++ 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/source/libublsettings-config.c b/source/libublsettings-config.c index 366a7b7..734b3e0 100644 --- a/source/libublsettings-config.c +++ b/source/libublsettings-config.c @@ -723,6 +723,19 @@ char *yon_config_get_section_for_key(char *key){ } } +char *yon_config_parameter_set_quotes(char *key){ + if (!strstr(key,"[")||strstr(key,"\'")) return yon_char_new(key); + char *target = yon_char_new(key); + char *first_part = yon_char_divide(target,strlen(target)-strlen(strstr(target,"["))); + int end_pos = yon_char_find_last(target,']'); + char *key_str = yon_char_divide(target,end_pos); + char *final = yon_char_unite(first_part,"['",key_str,"']",NULL); + free(target); + free(first_part); + free(key_str); + return final; +} + void *yon_config_get_all_by_key(char *key, int *size){ (*size)=0; check_config{ @@ -730,9 +743,11 @@ void *yon_config_get_all_by_key(char *key, int *size){ dictionary *dict = NULL; for_dictionaries(dict, (dictionary*)__yon__config__strings){ if (strstr(dict->key,key)&&((yon_config_parameter*)dict)->flag1!=-1) { - char *ret_string = yon_char_unite(dict->key,"=",(char*)dict->data,NULL); + char *key_quoted = yon_config_parameter_set_quotes(dict->key); + char *ret_string = yon_char_unite(key_quoted,"=",(char*)dict->data,NULL); if (ret_data) ret_data = yon_char_parsed_append(ret_data,size,ret_string); else ret_data = yon_char_parsed_new(size,ret_string,NULL); + free(key_quoted); } } return ret_data; @@ -1558,4 +1573,12 @@ int yon_config_move_after(char *parameter, char *target){ parameter_dict->next=tnext; parameter_dict->prev=target_dict; return 1; +} + +void yon_config_to_default(){ + yon_config_clean(); + yon_config_parameter *dict; + for_dictionaries(dict,__yon__config__default__strings){ + yon_config_register(dict->key,dict->load_command,dict->data); + } } \ No newline at end of file diff --git a/source/libublsettings.h b/source/libublsettings.h index a75650f..573c5b5 100644 --- a/source/libublsettings.h +++ b/source/libublsettings.h @@ -1523,6 +1523,9 @@ char *yon_config_parameter_get_key(char *parameter_string); int yon_config_move_before(char *parameter, char *target); int yon_config_move_after(char *parameter, char *target); +/// @brief Revert configuration to default values. +void yon_config_to_default(); + // terminal-using functions /**yon_launch_app_with_arguments(char *name, char *args) -- 2.35.1