Changed config get macro #84

Merged
asmeron merged 4 commits from YanTheKaller/libublsettings:master into master 1 month ago

@ -1274,8 +1274,8 @@ config_str yon_config_get_save_parameters_by_list(int *size, config_str paramete
removed[position]=string; removed[position]=string;
} }
} else { } else if (temp){
char *string = yon_char_unite("remove"," ",yon_config_parameter_wrap(parameters[i]),NULL); char *string = yon_char_unite("remove"," ",yon_config_parameter_to_string((yon_config_parameter*)temp,1),NULL);
yon_char_parsed_add_or_create_if_exists(removed,&removed_size,string); yon_char_parsed_add_or_create_if_exists(removed,&removed_size,string);
} }
} }
@ -1423,7 +1423,7 @@ char *yon_config_save_simple(YON_CONFIG_TYPE target, char *path){
return NULL; return NULL;
} }
int yon_config_save_list_simple(config_str parameters_keys, size_t size, char *path){ char *yon_config_save_list_simple(config_str parameters_keys, size_t size, char *path){
if (yon_char_is_empty(path)) return 0; if (yon_char_is_empty(path)) return 0;
check_config{ check_config{
int parameters_size=0; int parameters_size=0;
@ -1431,14 +1431,26 @@ int yon_config_save_list_simple(config_str parameters_keys, size_t size, char *p
if (parameters&&parameters_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); char *command = yon_char_unite(ubconfig_dull_command,"--target ",path," ", command_parameters,NULL);
return !!system(command); FILE *file = popen(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;
}
}
fclose(file);
}
} }
} }
return 0; return NULL;
} }
int yon_config_save_args_simple(char *path, ...){ char *yon_config_save_args_simple(char *path, ...){
if (yon_char_is_empty(path)) return 0; if (yon_char_is_empty(path)) return 0;
check_config{ check_config{
va_list args; va_list args;
@ -1455,10 +1467,26 @@ int yon_config_save_args_simple(char *path, ...){
if (parameters&&parameters_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); char *command = yon_char_unite(ubconfig_dull_command,"--target ",path," ", command_parameters,NULL);
return !!system(command); FILE *file = popen(command,"r");
if (file){
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(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);
}
} }
} }
return 0; return NULL;
} }
int yon_config_update_by_key(char *key){ int yon_config_update_by_key(char *key){
@ -1469,6 +1497,7 @@ int yon_config_update_by_key(char *key){
if (current->data) free(current->data); if (current->data) free(current->data);
current->data = NULL; current->data = NULL;
int size=0; int size=0;
yon_config_remove_by_key(key);
char *command = yon_config_parameter_get_load_command(key); char *command = yon_config_parameter_get_load_command(key);
config_str new_param = yon_config_load(command,&size); config_str new_param = yon_config_load(command,&size);
if (size&&!yon_char_is_empty(new_param[0])&&strcmp(new_param[0],"(null)\n")){ if (size&&!yon_char_is_empty(new_param[0])&&strcmp(new_param[0],"(null)\n")){
@ -1486,6 +1515,7 @@ int yon_config_update_by_list(config_str keys, size_t size){
if (!size||!keys) return 0; if (!size||!keys) return 0;
check_config{ check_config{
int params_size=0; int params_size=0;
yon_config_remove_by_list(keys,size);
config_str parameters = yon_config_get_load_parameters_by_list(&params_size,keys,size); config_str parameters = yon_config_get_load_parameters_by_list(&params_size,keys,size);
if (params_size&&parameters){ if (params_size&&parameters){
char *path = yon_config_command_get_path(config_last_load_command); char *path = yon_config_command_get_path(config_last_load_command);
@ -1503,10 +1533,12 @@ int yon_config_update_by_args(char *key, ...){
config_str keys = NULL; config_str keys = NULL;
yon_char_parsed_add_or_create_if_exists(keys,&size,key); yon_char_parsed_add_or_create_if_exists(keys,&size,key);
va_list args; va_list args;
yon_config_remove_by_key(key);
va_start(args,key); va_start(args,key);
char *cur_key = NULL; char *cur_key = NULL;
while((cur_key = va_arg(args,char*))){ while((cur_key = va_arg(args,char*))){
yon_char_parsed_add_or_create_if_exists(keys,&size,cur_key); yon_char_parsed_add_or_create_if_exists(keys,&size,cur_key);
yon_config_remove_by_key(cur_key);
} }
int params_size=0; int params_size=0;

@ -102,7 +102,7 @@ typedef char** config_str;
* *
* Значение парамерта конфигурации или NULL. * Значение парамерта конфигурации или NULL.
*/ */
#define config(key) yon_config_get_by_key(key) #define config(key) yon_config_get(key)
/** /**
* @brief Allocates or reallocates memory. * @brief Allocates or reallocates memory.
@ -1527,14 +1527,14 @@ char *yon_config_save_simple(YON_CONFIG_TYPE target, char *path);
/// @param size size of parameter keys list. /// @param size size of parameter keys list.
/// @param path Path to configuration .ini. /// @param path Path to configuration .ini.
/// @return TRUE if successful, FALSE otherwise. /// @return TRUE if successful, FALSE otherwise.
int yon_config_save_list_simple(config_str parameters_keys, size_t size, char *path); char *yon_config_save_list_simple(config_str parameters_keys, size_t size, char *path);
/// @brief Save list of parameters into configuration. /// @brief Save list of parameters into configuration.
/// @param path Path to configuration .ini. /// @param path Path to configuration .ini.
/// @param ... A NULL-terminated list of parameter keys. /// @param ... A NULL-terminated list of parameter keys.
/// @return TRUE if successful, FALSE otherwise. /// @return TRUE if successful, FALSE otherwise.
int yon_config_save_args_simple(char *path, ...); char *yon_config_save_args_simple(char *path, ...);
/// @brief Update parameter's value from configuration. /// @brief Update parameter's value from configuration.
/// @param key Parameter's key. /// @param key Parameter's key.

Loading…
Cancel
Save