diff --git a/source/libublsettings.c b/source/libublsettings.c index a566551..7553cf4 100644 --- a/source/libublsettings.c +++ b/source/libublsettings.c @@ -1537,6 +1537,27 @@ config_str yon_config_get_selection_by_key(int *size, ...){ return NULL; } +config_str yon_config_get_selection_by_key_no_ignored(int *size, ...){ + (*size)=0; + check_config{ + va_list list; + va_start(list,size); + config_str ret_data=NULL; + char *arg = NULL; + while ((arg = va_arg(list,char*))){ + char *cur = yon_config_get_by_key(arg); + char *parameter_string=NULL; + if (!yon_char_is_empty(cur)&&!yon_config_check_ignore(cur)){ + parameter_string = yon_char_unite(arg,"=",cur,NULL); + yon_char_parsed_add_or_create_if_exists(ret_data,size,parameter_string); + free(parameter_string); + } + } + return ret_data; + } + return NULL; +} + void *yon_config_get_all_by_key_no_ignored(char *key, int *size){ check_config{ (*size)=0; diff --git a/source/libublsettings.h b/source/libublsettings.h index dd0bde1..20b6ff5 100644 --- a/source/libublsettings.h +++ b/source/libublsettings.h @@ -800,6 +800,7 @@ void *yon_config_get_all_by_key(char *key, int *size); * Возвращает значения всех найденных параметров в порядке указания, заменяя ненайденные параметры значением NULL */ config_str yon_config_get_selection_by_key(int *size, ...); +config_str yon_config_get_selection_by_key_no_ignored(int *size, ...); /**yon_config_get_all_by_key(char *data) * [EN]