From 888dd514c84b7ab75b2e68920647d8d8c5467e5e Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Thu, 5 Mar 2026 17:59:16 +0600 Subject: [PATCH] Added new functions --- source/libublsettings-char.c | 16 ++++++++++++++++ source/libublsettings-config.c | 16 ++++++++++++++++ source/libublsettings.h | 2 ++ 3 files changed, 34 insertions(+) diff --git a/source/libublsettings-char.c b/source/libublsettings-char.c index 1cde6c5..d9fd7ac 100644 --- a/source/libublsettings-char.c +++ b/source/libublsettings-char.c @@ -48,6 +48,22 @@ char *yon_char_append_element(char *source,char *target, char *divider){ return yon_char_new(source); } +char *yon_char_force_append_element(char *source,char *target, char *divider){ + if (yon_char_is_empty(target)){ + target = ""; + } + if (!yon_char_is_empty(divider)){ + if (!source) return yon_char_new(target); + int size; + config_str parsed = yon_char_parse(source,&size,divider); + if (yon_char_parsed_check_exist(parsed,size,target)==-1){ + yon_char_parsed_add_or_create_if_exists(parsed,&size,target); + return yon_char_parsed_to_string_full(parsed,size,divider); + } + } + return yon_char_new(source); +} + char *yon_char_remove_element(char *source,char *target, char *divider){ if (!yon_char_is_empty(source)&&!yon_char_is_empty(target)&&!yon_char_is_empty(divider)){ if (yon_char_is_empty(source)) return NULL; diff --git a/source/libublsettings-config.c b/source/libublsettings-config.c index 7f0a463..3c7c8ef 100644 --- a/source/libublsettings-config.c +++ b/source/libublsettings-config.c @@ -692,6 +692,22 @@ int yon_config_append_element(char *key, char *append, char *divider){ } else return 0; } +int yon_config_force_append_element(char *key, char *append, char *divider){ + check_config{ + int found = 0; + yon_config_parameter *dict = (yon_config_parameter*)yon_dictionary_get((dictionary**)&__yon__config__strings,key); + if (dict){ + char *temp = yon_char_force_append_element((char*)dict->data,append,divider); + if (!yon_char_is_empty((char*)dict->data)) free(dict->data); + dict->data = temp; + dict->flag1 = 1; + yon_config_remove_ignore(key); + return 1; + } + + } else return 0; +} + int yon_config_set_status(char *key, int status){ check_config{ if (!yon_char_is_empty(key)){ diff --git a/source/libublsettings.h b/source/libublsettings.h index 543f44f..32f23d5 100644 --- a/source/libublsettings.h +++ b/source/libublsettings.h @@ -646,6 +646,7 @@ char *yon_char_append_c(const char *source, char append); */ char *yon_char_append_element(char *source,char *target, char *divider); +char *yon_char_force_append_element(char *source,char *target, char *divider); /** * @brief Remove substring from string. * @@ -1343,6 +1344,7 @@ int yon_config_clear_by_key(const char *key); */ int yon_config_remove_element(char *key, char *delete_target, char *divider); int yon_config_append_element(char *key, char *append, char *divider); +int yon_config_force_append_element(char *key, char *append, char *divider); int yon_config_set_status(char *key, int status);