diff --git a/source/libublsettings-config.c b/source/libublsettings-config.c index 7c1f167..1ebe8dc 100644 --- a/source/libublsettings-config.c +++ b/source/libublsettings-config.c @@ -439,7 +439,7 @@ int yon_config_load_config(YON_CONFIG_TYPE config_type, ...){ char *value = yon_char_new(parameters[i]); char *parameter = yon_char_divide_search(value,"=",-1); char *section = NULL; - if (strstr(final_command," -ea ")){ + if (final_command[0]=='['){ section = yon_char_divide_search(parameter," ",-1); free(yon_char_divide(section,yon_char_find_last(section,'/'))); yon_char_remove_last_symbol(section,']'); @@ -458,6 +458,7 @@ int yon_config_load_config(YON_CONFIG_TYPE config_type, ...){ } if ((cur_ignore&&value)||(!cur_ignore)){ yon_config_register(parameter,get_command,value); + // yon_config_set_section(parameter,section); } if (config_type==YON_CONFIG_DEFAULT){ @@ -854,6 +855,28 @@ int yon_config_default_remove(char *key){ return 0; } +/// @brief Получение всех параметров отдельного раздела конфигурации +/// @param section_name Название раздела конфигурации +/// @param size размер финального массива +/// @return массив строк со всеми параметрами для запрашиваемого раздела +config_str yon_config_get_parameters_for_section(const char *section_name, int *size){ + (*size)=0; + check_config{ + int parameters_size; + config_str parameters = NULL; + + yon_config_parameter *parameter; + for_dictionaries(parameter,__yon__config__strings){ + if (!strcmp(parameter->section,section_name)){ + yon_char_parsed_add_or_create_if_exists(parameters,¶meters_size,parameter->key); + } + } + (*size)=parameters_size; + return parameters; + } + return NULL; +} + enum YON_CONFIG_SAVED_TYPE yon_config_register(char *key,char *config_load, char *data){ if (yon_char_is_empty(key)||yon_char_is_empty(config_load)) return YON_CONFIG_SAVED_ERROR; diff --git a/source/libublsettings.h b/source/libublsettings.h index 0237c9f..15f40fc 100644 --- a/source/libublsettings.h +++ b/source/libublsettings.h @@ -774,7 +774,7 @@ config_str yon_dir_get_by_mask(char *path, char *mask, int *size); #define ubconfig_set_command_full(target, section, data) yon_char_unite("ubconfig ",!yon_char_is_empty(target)?"--target ":"",!yon_char_is_empty(target)?target:""," set ",section," ",data,NULL) #define ubconfig_load_command(target) yon_char_unite("ubconfig --source ",target," get ",NULL) #define ubconfig_load_command_full(target, data) yon_char_unite("ubconfig --source ",target," get ",data,NULL) -#define ubconfig_remove_command_full(target, section, data) yon_char_unite("ubconfig ",!yon_char_is_empty(target)?"--target ":"",!yon_char_is_empty(target)?target:""," remove ",section," ",data,NULL) +#define ubconfig_remove_command_full(target, section, data) yon_char_unite("ubconfig ",!yon_char_is_empty(target)?"--target ":"",!yon_char_is_empty(target)?target:""," remove ",!yon_char_is_empty(section)?section:"",!yon_char_is_empty(section)?" ":"",data,NULL) /** * Типы конфигураций ubconfig-а @@ -944,6 +944,12 @@ void *yon_config_get_by_key(char *key); char *yon_config_get_section_for_key(char *key); +config_str yon_config_get_parameters_for_section(const char *section_name, int *size); + +config_str yon_config_get_parameters_for_all_sections(int *size); +config_str yon_config_get_parameters_for_all_sections_saved(int *size); +config_str yon_config_get_parameters_for_all_sections_removed(int *size); + /**yon_config_get_all_by_key(char *data) * [EN] *