diff --git a/source/libublsettings-config.c b/source/libublsettings-config.c index 2095876..3af21aa 100644 --- a/source/libublsettings-config.c +++ b/source/libublsettings-config.c @@ -449,32 +449,11 @@ void yon_config_set_last_command(char *command){ config_last_load_command=yon_char_new(command); } -int yon_config_load_config(YON_CONFIG_TYPE config_type, ...){ - if (config_type == YON_CONFIG_BOTH) return 0; - - char *current; - va_list args; - va_start(args,config_type); - - int commands_size; - config_str commands = NULL; - while ((current=va_arg(args,char*))){ - yon_char_parsed_add_or_create_if_exists(commands,&commands_size,current); - } - - char *final_command = yon_config_command_get_full(commands,commands_size); - yon_config_set_last_command(final_command); - if (yon_char_is_empty(final_command)) return 0; - int parameters_size; - config_str parameters = yon_config_load(final_command,¶meters_size); - char *section = NULL; - if (!strstr(final_command," -ea ")){ - section = yon_config_command_get_section(final_command); - } - for (int i=0;ikey,key)==0&&((yon_config_parameter*)dict)->flag1!=-1){ @@ -971,11 +978,13 @@ int yon_config_clean(){ } int yon_config_default_remove(char *key){ - yon_config_parameter *default_parameter = (yon_config_parameter*)yon_dictionary_get((dictionary**)&__yon__config__default__strings,key); - if (default_parameter){ - __yon__config__default__strings = (yon_config_parameter*)yon_dictionary_rip((dictionary*)default_parameter); - return 1; - } + check_default_config{ + yon_config_parameter *default_parameter = (yon_config_parameter*)yon_dictionary_get((dictionary**)&__yon__config__default__strings,key); + if (default_parameter){ + __yon__config__default__strings = (yon_config_parameter*)yon_dictionary_rip((dictionary*)default_parameter); + return 1; + } + } return 0; } @@ -1246,11 +1255,12 @@ config_str yon_config_get_save_parameters_by_list(int *size, config_str paramete current_size = &removed_size; break; case 1: - case 0: action = "set"; current = &updated; current_size = &updated_size; break; + default: + continue; } int position = yon_char_parsed_find_element(*current,*current_size,((yon_config_parameter*)temp)->section); if (position>=0){ @@ -1317,7 +1327,6 @@ config_str yon_config_get_save_parameters_by_key(int *size,...){ current = &removed; current_size = &removed_size; break; - case 0: case 1: action = "set"; current = &updated; @@ -1409,16 +1418,21 @@ char *yon_config_save_simple(YON_CONFIG_TYPE target, char *path){ char *final_command = yon_char_parsed_to_string(parameters,parameters_size,";"); FILE *file = popen(final_command,"r"); if (file){ - int file_size=0; - config_str file_output = yon_config_load_file(file,&file_size); - if (file_output){ - char *final_string = yon_char_parsed_to_string(file_output,file_size,""); - if (!yon_char_is_empty(final_string)){ - return final_string; + int file_size=0; + config_str file_output = yon_config_load_file(file,&file_size); + if (file_output){ + char *output_string = yon_char_parsed_to_string(file_output,file_size,""); + yon_char_parsed_free(file_output,file_size); + char *final_string = yon_char_unite(final_command,"\n",output_string,NULL); + free(output_string); + if (!yon_char_is_empty(final_string)){ + return final_string; + } + } else { + yon_char_parsed_free(file_output,file_size); } + fclose(file); } - fclose(file); - } } return NULL; } @@ -1436,10 +1450,15 @@ char *yon_config_save_list_simple(config_str parameters_keys, size_t size, char int file_size=0; config_str file_output = yon_config_load_file(file,&file_size); if (file_output){ - char *final_string = yon_char_parsed_to_string(file_output,file_size,""); + char *output_string = yon_char_parsed_to_string(file_output,file_size,""); + yon_char_parsed_free(file_output,file_size); + char *final_string = yon_char_unite(command,"\n",output_string,NULL); + free(output_string); if (!yon_char_is_empty(final_string)){ return final_string; } + } else { + yon_char_parsed_free(file_output,file_size); } fclose(file); } diff --git a/source/libublsettings.h b/source/libublsettings.h index 57c1830..0b556b8 100644 --- a/source/libublsettings.h +++ b/source/libublsettings.h @@ -1294,6 +1294,16 @@ config_str yon_config_command_get_parameters(const char *command, int *size); char *yon_config_get_last_command(); void yon_config_set_last_command(char *command); +/// @brief Import string to config +/// @param config_type configuration type +/// @param string parameter string. A line from ubconfig command output +/// @return 1 if successful, 0 otherwise. +int yon_config_import_string(YON_CONFIG_TYPE config_type, char *string); + +/// @brief Load configuration +/// @param config_type Configuration type. +/// @param ... NULL-terminated List of commands. +/// @return 0 if failed, id for specific action type otherwise int yon_config_load_config(YON_CONFIG_TYPE config_type, ...); int yon_config_change_key(char *target, char *key);