From 733c05f2bb9290e3813e4ebf271778a8a6824bc8 Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Fri, 13 Mar 2026 18:02:59 +0600 Subject: [PATCH] Added new char and configuration functions --- source/libublsettings-char.c | 22 ++++++++++++++++++++++ source/libublsettings-config.c | 21 +++++++++++++++++++++ source/libublsettings.h | 16 +++++++++++++++- 3 files changed, 58 insertions(+), 1 deletion(-) diff --git a/source/libublsettings-char.c b/source/libublsettings-char.c index 3acbd5f..0521521 100644 --- a/source/libublsettings-char.c +++ b/source/libublsettings-char.c @@ -76,6 +76,28 @@ char *yon_char_remove_element(char *source,char *target, char *divider){ return yon_char_new(source); } +char *yon_char_remove_elements(char *source,char *target, char *divider){ + if (!yon_char_is_empty(source)&&!yon_char_is_empty(target)&&!yon_char_is_empty(divider)){ + int size; + int element_size; + config_str parsed = yon_char_parse(source,&size,divider); + config_str parsed_element = yon_char_parse(target,&element_size,divider); + for (int i=0;idata,delete_target,divider); + if (!yon_char_is_empty(temp)){ + if (!yon_char_is_empty((char*)dict->data)) free(dict->data); + dict->data = temp; + } else { + dict->data = NULL; + yon_config_set_status(key,-1); + } + + + return 1; + } + + } else return 0; +} + int yon_config_append_element(char *key, char *append, char *divider){ check_config{ int found = 0; diff --git a/source/libublsettings.h b/source/libublsettings.h index 10cf70f..7dce9c4 100644 --- a/source/libublsettings.h +++ b/source/libublsettings.h @@ -663,6 +663,13 @@ char *yon_char_force_append_element(char *source,char *target, char *divider); */ char *yon_char_remove_element(char *source,char *target, char *divider); +/// @brief Remove elements from elements string +/// @param source source elements string +/// @param target string of elements to remove +/// @param separator string, separating elements within parameter's value +/// @return a newly allocated string of elements, or NULL if removed elements was last +char *yon_char_remove_elements(char *source,char *target, char *separator); + /** * @brief Copy string. * @@ -1347,13 +1354,20 @@ int yon_config_remove_by_key(char *key); */ int yon_config_clear_by_key(const char *key); -/// @brief Remove substring from registeredparameter value string +/// @brief Remove substring from registered parameter value string /// @param key parameter key /// @param delete_target substring to delete /// @param separator string, separating elements within parameter's value /// @return 1 if element was successfully removed, 0 otherwise int yon_config_remove_element(char *key, char *delete_target, char *separator); +/// @brief Remove elements string from registered parameter value string of elements +/// @param key parameter key +/// @param delete_target substring to delete +/// @param separator string, separating elements within parameter's value +/// @return 1 if element was successfully removed, 0 otherwise +int yon_config_remove_elements(char *key, char *delete_target, char *separator); + /// @brief Append registered parameter value string /// @param key parameter key /// @param append string to append -- 2.35.1