Added new functions; Fixes

pull/83/head
parent e73cd375e8
commit 5948dfde61

@ -339,9 +339,20 @@ char *yon_config_command_get_full(config_str command, int command_size){
}
if (final_size>0){
char *final_command = yon_char_parsed_to_string(final,final_size," -- get ");
char *temp = yon_char_replace(final_command,"ubconfig","ubconfig -ea");
free(final_command);
final_command = temp;
int pos = yon_char_check_element(final_command,"ubconfig", " ");
if (pos&&yon_char_check_element(final_command,"-ea"," ")==0){
int size=0;
config_str parsed = yon_char_parse(final_command,&size," ");
pos = yon_char_parsed_check_exist(parsed,size,"ubconfig");
char *tmp = yon_char_unite(parsed[pos]," -ea",NULL);
free(parsed[pos]);
parsed[pos] = tmp;
free(final_command);
final_command = yon_char_parsed_to_string(parsed,size," ");
}
// char *temp = yon_char_replace(final_command,"ubconfig","ubconfig -ea");
// free(final_command);
// final_command = temp;
yon_char_parsed_free(final,final_size);
return final_command;
}
@ -1191,13 +1202,17 @@ config_str yon_config_get_load_parameters_by_list(int *size, config_str paramete
if (!strcmp(temp->key,current_str)){
int position = yon_char_parsed_find_element(final,*size,((yon_config_parameter*)temp)->section);
if (position>=0){
char *string = yon_char_unite((final)[position]," ",current_str,NULL);
char *quoted = yon_config_parameter_set_quotes(current_str);
char *string = yon_char_unite((final)[position]," ",quoted,NULL);
free((final)[position]);
(final)[position]=string;
free(quoted);
} else {
char *string = yon_char_unite(temp->section," ",current_str,NULL);
char *quoted = yon_config_parameter_set_quotes(current_str);
char *string = yon_char_unite(temp->section," ",quoted,NULL);
yon_char_parsed_add_or_create_if_exists(final,size,string);
free(quoted);
}
}
}
@ -1414,8 +1429,9 @@ int yon_config_save_list_simple(config_str parameters_keys, size_t size, char *p
int parameters_size=0;
config_str parameters = yon_config_get_save_parameters_by_list(&parameters_size,parameters_keys,size);
if (parameters&&parameters_size){
char *command_parameters = yon_char_parsed_to_string(parameters,parameters_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);
printf("%s\n",command);
return !!system(command);
}
}
@ -1438,7 +1454,7 @@ int yon_config_save_args_simple(char *path, ...){
config_str parameters = yon_config_get_save_parameters_by_list(&parameters_size,params,size);
yon_char_parsed_free(params,size);
if (parameters&&parameters_size){
char *command_parameters = yon_char_parsed_to_string(parameters,parameters_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);
}
@ -1446,6 +1462,66 @@ int yon_config_save_args_simple(char *path, ...){
return 0;
}
int yon_config_update_by_key(char *key){
if (yon_char_is_empty(key)) return 0;
check_config{
dictionary *current = yon_dictionary_get((dictionary**)&__yon__config__strings,key);
if (!current) return 0;
if (current->data) free(current->data);
current->data = NULL;
int size=0;
char *command = yon_config_parameter_get_load_command(key);
config_str new_param = yon_config_load(command,&size);
if (size&&!yon_char_is_empty(new_param[0])&&strcmp(new_param[0],"(null)\n")){
yon_char_remove_last_symbol(new_param[0],'\n');
current->data = yon_char_new(new_param[0]);
((yon_config_parameter*)current)->flag1=0;
yon_config_set_status(key,0);
return 1;
}
}
return 0;
}
int yon_config_update_by_list(config_str keys, size_t size){
if (!size||!keys) return 0;
check_config{
int params_size=0;
config_str parameters = yon_config_get_load_parameters_by_list(&params_size,keys,size);
if (params_size&&parameters){
char *path = yon_config_command_get_path(config_last_load_command);
char *parameters_str = yon_char_parsed_to_string(parameters,params_size," ");
char *command = yon_char_unite(ubconfig_load_command(path), parameters_str, NULL);
yon_config_load_config(YON_CONFIG_CUSTOM,command,NULL);
}
}
return 0;
}
int yon_config_update_by_args(char *key, ...){
check_config{
int size=0;
config_str keys = NULL;
yon_char_parsed_add_or_create_if_exists(keys,&size,key);
va_list args;
va_start(args,key);
char *cur_key = NULL;
while((cur_key = va_arg(args,char*))){
yon_char_parsed_add_or_create_if_exists(keys,&size,cur_key);
}
int params_size=0;
config_str parameters = yon_config_get_load_parameters_by_list(&params_size,keys,size);
if (params_size&&parameters){
char *path = yon_config_command_get_path(config_last_load_command);
char *parameters_str = yon_char_parsed_to_string(parameters,params_size," -- get ");
char *command = yon_char_unite(ubconfig_load_command(path), parameters_str, NULL);
yon_config_load_config(YON_CONFIG_CUSTOM,command,NULL);
}
}
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;

@ -1536,6 +1536,23 @@ int yon_config_save_list_simple(config_str parameters_keys, size_t size, char *p
/// @return TRUE if successful, FALSE otherwise.
int yon_config_save_args_simple(char *path, ...);
/// @brief Update parameter's value from configuration.
/// @param key Parameter's key.
/// @return TRUE if parameter successfully updated, FALSE if parameter doesn't registered in configuration
int yon_config_update_by_key(char *key);
/// @brief Update parameter's value from configuration.
/// @param key Parameters key list.
/// @param size size of parameters keys list.
/// @return TRUE if parameter successfully updated, FALSE if parameter doesn't registered in configuration
int yon_config_update_by_list(config_str keys, size_t size);
/// @brief Update parameters value from configuration.
/// @param key First parameter's key.
/// @param ... NULL-terminated list of parameter keys.
/// @return TRUE if parameter successfully updated, FALSE if parameter doesn't registered in configuration
int yon_config_update_by_args(char *key, ...);
/**int yon_config_force_save_registered(char *path, char *section)
* [EN]
* Force config to save at [path] config ignoring parameter save status.

Loading…
Cancel
Save