diff --git a/source/libublsettings-char.c b/source/libublsettings-char.c index d9fd7ac..bb5ce45 100644 --- a/source/libublsettings-char.c +++ b/source/libublsettings-char.c @@ -56,10 +56,8 @@ char *yon_char_force_append_element(char *source,char *target, char *divider){ if (!source) return yon_char_new(target); int size; config_str parsed = yon_char_parse(source,&size,divider); - if (yon_char_parsed_check_exist(parsed,size,target)==-1){ - yon_char_parsed_add_or_create_if_exists(parsed,&size,target); - return yon_char_parsed_to_string_full(parsed,size,divider); - } + yon_char_parsed_add_or_create_if_exists(parsed,&size,target); + return yon_char_parsed_to_string_full(parsed,size,divider); } return yon_char_new(source); } diff --git a/source/libublsettings-config.c b/source/libublsettings-config.c index 3c7c8ef..366a7b7 100644 --- a/source/libublsettings-config.c +++ b/source/libublsettings-config.c @@ -480,7 +480,7 @@ int yon_config_load_config(YON_CONFIG_TYPE config_type, ...){ int cur_ignore = yon_config_check_ignore(parameter); if (config_type==YON_CONFIG_DEFAULT){ - yon_config_register_default(parameter, get_command,NULL); + yon_config_register_default(parameter, get_command,value); } if ((cur_ignore&&value)||(!cur_ignore)){ yon_config_register(parameter,get_command,value); @@ -498,57 +498,6 @@ int yon_config_load_config(YON_CONFIG_TYPE config_type, ...){ return 1; } -// int yon_config_load_config(YON_CONFIG_TYPE config_type, ...){ -// if (config_type!=YON_CONFIG_BOTH){ -// va_list args; -// va_start(args,config_type); -// char *current = NULL; -// int command_size=0; -// config_str command=NULL; -// while ((current=va_arg(args,char*))){ -// yon_config_command_prepare(&command,&command_size,current); -// } -// yon_config_set_last_command(yon_char_parsed_to_string(command,command_size,";")); -// for (int i=0;i0){ -// for (int j=0;jkey,key)==0&&((yon_config_parameter*)dict)->flag1!=-1){ + return dict->data; + } + } + } + return NULL; +} + +char *yon_config_get(char *key){ + check_config{ + char *final = yon_config_get_by_key(key); + if (!final) + final = yon_config_default_get_by_key(key); + return final; + } + return NULL; +} + char *yon_config_get_section_for_key(char *key){ check_config{ for_config{ diff --git a/source/libublsettings.h b/source/libublsettings.h index 32f23d5..a75650f 100644 --- a/source/libublsettings.h +++ b/source/libublsettings.h @@ -1336,70 +1336,94 @@ int yon_config_remove_by_key(char *key); */ int yon_config_clear_by_key(const char *key); -/**yon_config_remove_element(char *key, char *deleted) - * [EN] - * - * [RU] - * Удаляет элемент [deleted] из массива параметров с ключом [key] -*/ -int yon_config_remove_element(char *key, char *delete_target, char *divider); -int yon_config_append_element(char *key, char *append, char *divider); -int yon_config_force_append_element(char *key, char *append, char *divider); - +/// @brief Remove substring from registeredparameter value string +/// @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_element(char *key, char *delete_target, char *separator); + +/// @brief Append registered parameter value string +/// @param key parameter key +/// @param append string to append +/// @param separator string, separating elements within parameter's value +/// @return 1 if element was successfully added, 0 otherwise +int yon_config_append_element(char *key, char *append, char *separator); + +/// @brief Append parameter value string event if appended string already exists in parameter value or empty +/// @param key parameter key +/// @param append string to append +/// @param separator string, separating elements within parameter's value +/// @return 1 if element was successfully added, 0 otherwise +int yon_config_force_append_element(char *key, char *append, char *separator); + +/// @brief Set status for registered configuration parameter +/// @param key parameter key +/// @param status Status to set. -1 for deletion; 0 for unchanged; 1 for created/changed +/// @return 1 if parameter's status was successfully set, 0 otherwise int yon_config_set_status(char *key, int status); +/// @brief Set status for whole list of configuration parameters exist +/// @param status Status to set. -1 for deletion; 0 for unchanged; 1 for created/changed void yon_config_set_status_full(int status); -/**yon_config_get_key_by_key(char *data) - * [EN] - * - * [RU] - * Возвращает значение параметра конфига с ключом [key]. - * Если параметр с таким значением не найден, возвращается NULL -*/ +/// @brief Get value of specific registered parameter +/// @param key parameter key +/// @return parameter value or NULL if parameter doesn't exist void *yon_config_get_by_key(char *key); +/// @brief Get value of specific registered parameter from default list +/// @param key parameter key +/// @return parameter value or NULL if parameter doesn't exist +char *yon_config_default_get_by_key(char *key); + +/// @brief Get value of specific registered parameter from both registered and default lists +/// @param key parameter key +/// @return parameter value or NULL if parameter doesn't exist +char *yon_config_get(char *key); + +/// @brief Get configuration section for registered parameter +/// @param key parameter key +/// @return A newly allocated string with configuration section or NULL char *yon_config_get_section_for_key(char *key); +/// @brief Get all registered parameter keys for specific configuration section +/// @param section_name section name +/// @param size Pointer to size of string array +/// @return A newly allocated string array containing parameter keys 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); +// 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] - * - * [RU] - * Возвращает значение всех параметров конфига с ключом включающем строку [key]. - * Если параметр с таким значением не найден, возвращается NULL -*/ +/// @brief Find all parameters from the configuration by string +/// @param key the search string +/// @param size Size of the returned parameter list +/// @return A newly allocated list of all found parameters or NULL void *yon_config_get_all_by_key(char *key, int *size); -/**yon_config_get_selection_by_key(int *size, ...) - * [EN] - * - * [RU] - * Возвращает значения всех найденных параметров в порядке указания, заменяя ненайденные параметры значением NULL -*/ +/// @brief Find all parameters from the configuration by string, excluding ignored parameters +/// @param key the search string +/// @param size Size of the returned parameter list +/// @return A newly allocated list of all found parameters or NULL +void *yon_config_get_all_by_key_no_ignored(char *key, int *size); + +/// @brief Get all requested configuration parameters in the order requested +/// @param size Size of the returned parameter list +/// @param ... List of parameter keys, ending with NULL +/// @return A newly allocated list of all found parameters or NULL if nothing were found 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] - * - * [RU] - * Возвращает значение всех параметров конфига с ключом включающем строку [key] не включая игнорируемые параметры. - * Если параметр с таким значением не найден, возвращается NULL -*/ -void *yon_config_get_all_by_key_no_ignored(char *key, int *size); +/// @brief Get all requested configuration parameters in the order requested, but exclude ignored parameters +/// @param size Size of the returned parameter list +/// @param ... List of parameter keys, ending with NULL +/// @return A newly allocated list of all found parameters or NULL if nothing were found +config_str yon_config_get_selection_by_key_no_ignored(int *size, ...); -/**yon_config_get_all_keys(int *size) - * [EN] - * - * [RU] - * Возвращает массив с ключами всех параметров внутреннего конфига -*/ +/// @brief Get a list of all parameter keys +/// @param size Size of the returned list +/// @return A newly allocated list of all parameter keys or NULL if configuration is empty config_str yon_config_get_all_keys(int *size); config_str yon_config_get_all_keys_no_ignored(int *size); @@ -1424,14 +1448,13 @@ int yon_config_set_mask_pattern(const char *key, const char *mask_pattern); /// @return newly allocated string of regex pattern or NULL char *yon_config_get_mask_pattern(const char *key); -/**yon_config_clean() - * [EN] - * Erase all parameters from config; - * [RU] - * Удаляет все параметры из конфига; -*/ +/// @brief Clear configuration parameters +/// @return 1 if any parameters were removed, 0 if configuratino was empty int yon_config_clean(); +/// @brief Remove 'default' flag from parameter +/// @param key parameter key +/// @return 1 if 'default' flag were removed, 0 if parameter wasn't found int yon_config_default_remove(char *key); enum YON_CONFIG_SAVED_TYPE{ @@ -1443,19 +1466,24 @@ enum YON_CONFIG_SAVED_TYPE{ YON_CONFIG_SAVED_ERROR }; -/**yon_config_register(char *key, void *data) - * [EN] - * - * [RU] - * Регистрирует новый параметр конфига. - * [key] - ключ параметра; - * [data] - значение параметра; -*/ +/// @brief Register new or change existing parameter inside configuration system +/// @param key key for new or existing parameter +/// @param config_load command to load a parameter from the system configuration +/// @param data parameter value +/// @return the type of action performed by the configuration system with the parameter enum YON_CONFIG_SAVED_TYPE yon_config_register(char *key,char *config_load, char *data); -// void yon_config_register(char *key, char* config_section, void *data); +/// @brief Register new or change existing parameter inside configuration system into default parameters list. +/// @param key key for new or existing parameter +/// @param config_load command to load a parameter from the system configuration +/// @param data parameter value +/// @return the type of action performed by the configuration system with the parameter enum YON_CONFIG_SAVED_TYPE yon_config_register_default(char *key,char *config_load, char *data); +/// @brief +/// @param target +/// @param path +/// @return char *yon_config_save_simple(YON_CONFIG_TYPE target, char *path); /**int yon_config_force_save_registered(char *path, char *section)