diff --git a/source/libublsettings-char.c b/source/libublsettings-char.c index 55e231e..6b9ec69 100644 --- a/source/libublsettings-char.c +++ b/source/libublsettings-char.c @@ -179,7 +179,7 @@ int yon_char_check_elements(char *target, char *element, char *divider){ config_str parsed = yon_char_parse(target,&size,divider); config_str parsed_element = yon_char_parse(element,&element_size,divider); for (int i=0;idata,delete_target,divider)){ + char *temp = yon_char_remove_elements((char*)dict->data,delete_target,divider); + if (!yon_char_is_empty(temp)){ + if (!yon_char_is_empty((char*)dict->data)) free(dict->data); + dict->data = temp; + yon_config_set_status(key,1); + } 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 0b556b8..0002fb0 100644 --- a/source/libublsettings.h +++ b/source/libublsettings.h @@ -1376,6 +1376,13 @@ int yon_config_remove_element(char *key, char *delete_target, char *separator); /// @return 1 if element was successfully removed, 0 otherwise int yon_config_remove_elements(char *key, char *delete_target, char *separator); +/// @brief Remove elements string from registered parameter value string of elements if all of requested parameters exist +/// @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_all(char *key, char *delete_target, char *divider); + /// @brief Append registered parameter value string /// @param key parameter key /// @param append string to append