From dfbe9fcc800c701b587fa3f44564b4059477eb22 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Fri, 5 Jul 2024 14:21:44 +0600 Subject: [PATCH] Added new function to get multiple specific variables from configuration --- source/libublsettings.c | 21 +++++++++++++++++++++ source/libublsettings.h | 8 ++++++++ 2 files changed, 29 insertions(+) diff --git a/source/libublsettings.c b/source/libublsettings.c index 880fcfa..b14c17a 100644 --- a/source/libublsettings.c +++ b/source/libublsettings.c @@ -1429,6 +1429,27 @@ void *yon_config_get_all_by_key(char *key, int *size){ return NULL; } +config_str yon_config_get_selection_by_key(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)){ + 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 b890dca..0149272 100644 --- a/source/libublsettings.h +++ b/source/libublsettings.h @@ -785,6 +785,14 @@ char *yon_config_get_section_for_key(char *key); */ void *yon_config_get_all_by_key(char *key, int *size); +/**yon_config_get_selection_by_key(int *size, ...) + * [EN] + * + * [RU] + * Возвращает значения всех найденных параметров в порядке указания, заменяя ненайденные параметры значением NULL +*/ +config_str yon_config_get_selection_by_key(int *size, ...); + /**yon_config_get_all_by_key(char *data) * [EN] *