diff --git a/source/libublsettings-config.c b/source/libublsettings-config.c index 30a6337..17e00b6 100644 --- a/source/libublsettings-config.c +++ b/source/libublsettings-config.c @@ -1408,6 +1408,44 @@ char *yon_config_save_simple(YON_CONFIG_TYPE target, char *path){ return NULL; } +int yon_config_save_list_simple(config_str parameters_keys, size_t size, char *path){ + if (yon_char_is_empty(path)) return 0; + check_config{ + int parameters_size=0; + config_str parameters = yon_config_get_save_parameters_by_list(¶meters_size,parameters_keys,size); + if (parameters&¶meters_size){ + char *command_parameters = yon_char_parsed_to_string(parameters,parameters_size,";"); + char *command = yon_char_unite(ubconfig_dull_command,"--target ",path," ", command_parameters,NULL); + return !!system(command); + } + } + return 0; +} + + +int yon_config_save_args_simple(char *path, ...){ + if (yon_char_is_empty(path)) return 0; + check_config{ + va_list args; + va_start(args,path); + int size = 0; + config_str params = NULL; + char *cur = NULL; + while ((cur = va_arg(args,char*))){ + yon_char_parsed_add_or_create_if_exists(params,&size,cur); + } + int parameters_size=0; + config_str parameters = yon_config_get_save_parameters_by_list(¶meters_size,params,size); + yon_char_parsed_free(params,size); + if (parameters&¶meters_size){ + char *command_parameters = yon_char_parsed_to_string(parameters,parameters_size,";"); + char *command = yon_char_unite(ubconfig_dull_command,"--target ",path," ", command_parameters,NULL); + return !!system(command); + } + } + return 0; +} + char *yon_config_parameter_prepare_command(char *command, char *path, char *section, char *parameter){ if (!yon_char_is_empty(command)){ int size=0; diff --git a/source/libublsettings.h b/source/libublsettings.h index 0f8ebc5..7f94a1a 100644 --- a/source/libublsettings.h +++ b/source/libublsettings.h @@ -1168,8 +1168,10 @@ void yon_dir_remove(const char *path); /** yon_dir_get_contents(char *dir_path, int *size) * [EN] + * [DEPRECATED] * * [RU] + * [УСТАРЕЛО] * Проверяет существует ли папка [dir_path] и * возвращает список всех вложенных файлов и папок, * передавая в [size] длину списка. @@ -1520,6 +1522,20 @@ enum YON_CONFIG_SAVED_TYPE yon_config_register_default(char *key,char *config_lo /// @return char *yon_config_save_simple(YON_CONFIG_TYPE target, char *path); +/// @brief Save list of parameters into configuration. +/// @param parameters_keys List of parameter keys. +/// @param size size of parameter keys list. +/// @param path Path to configuration .ini. +/// @return TRUE if successful, FALSE otherwise. +int yon_config_save_list_simple(config_str parameters_keys, size_t size, char *path); + + +/// @brief Save list of parameters into configuration. +/// @param path Path to configuration .ini. +/// @param ... A NULL-terminated list of parameter keys. +/// @return TRUE if successful, FALSE otherwise. +int yon_config_save_args_simple(char *path, ...); + /**int yon_config_force_save_registered(char *path, char *section) * [EN] * Force config to save at [path] config ignoring parameter save status.