From a2a8e3a3985f48b624710dfc0b94b1c1cd4aa867 Mon Sep 17 00:00:00 2001 From: Ivan Dmitrievich Yartsev Date: Tue, 24 Mar 2026 13:53:22 +0600 Subject: [PATCH] Changed return type of simple saving functions to return commands and output --- source/libublsettings-config.c | 40 +++++++++++++++++++++++++++++----- source/libublsettings.h | 4 ++-- 2 files changed, 36 insertions(+), 8 deletions(-) diff --git a/source/libublsettings-config.c b/source/libublsettings-config.c index 576bf9e..41bc3ad 100644 --- a/source/libublsettings-config.c +++ b/source/libublsettings-config.c @@ -1423,7 +1423,7 @@ 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){ +char *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; @@ -1431,14 +1431,26 @@ int yon_config_save_list_simple(config_str parameters_keys, size_t size, char *p 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); + 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; check_config{ va_list args; @@ -1455,10 +1467,26 @@ int yon_config_save_args_simple(char *path, ...){ 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); + 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){ diff --git a/source/libublsettings.h b/source/libublsettings.h index 1ee0474..57c1830 100644 --- a/source/libublsettings.h +++ b/source/libublsettings.h @@ -1527,14 +1527,14 @@ char *yon_config_save_simple(YON_CONFIG_TYPE target, char *path); /// @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); +char *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, ...); +char *yon_config_save_args_simple(char *path, ...); /// @brief Update parameter's value from configuration. /// @param key Parameter's key.