From 62b2d617040b714b262efc586260a565de2cdccb Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Tue, 12 Aug 2025 14:09:37 +0600 Subject: [PATCH] Loading fixes --- source/libublsettings-char.c | 2 +- source/libublsettings-config.c | 13 ++++++++----- source/libublsettings.h | 2 ++ 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/source/libublsettings-char.c b/source/libublsettings-char.c index b01dc71..744bf7f 100644 --- a/source/libublsettings-char.c +++ b/source/libublsettings-char.c @@ -299,7 +299,7 @@ char *yon_char_replace_single(char *source, char *find, char *replace){ char **yon_char_parse(const char *parameters, int *size, char *divider){ *size=0; - if (parameters){ + if (parameters&&!yon_char_is_empty(divider)){ char **string=NULL; char *paramline=yon_char_new(parameters); char *param = strstr(paramline,divider); diff --git a/source/libublsettings-config.c b/source/libublsettings-config.c index 158205b..7c1f167 100644 --- a/source/libublsettings-config.c +++ b/source/libublsettings-config.c @@ -332,10 +332,10 @@ config_str yon_config_command_get_parameters(const char *command, int *size){ if (yon_char_is_empty(command)) return NULL; int parsed_size; - config_str parsed = yon_char_parse(command,&parsed_size,""); + config_str parsed = yon_char_parse(command,&parsed_size," "); int pos = yon_config_command_get_section_pos(command); if (pos>-1){ - for (int i=0;i0){ @@ -439,7 +439,7 @@ int yon_config_load_config(YON_CONFIG_TYPE config_type, ...){ char *value = yon_char_new(parameters[i]); char *parameter = yon_char_divide_search(value,"=",-1); char *section = NULL; - if (strstr(parameter," -ea ")){ + if (strstr(final_command," -ea ")){ section = yon_char_divide_search(parameter," ",-1); free(yon_char_divide(section,yon_char_find_last(section,'/'))); yon_char_remove_last_symbol(section,']'); @@ -1261,8 +1261,11 @@ char *yon_config_parameter_prepare_command(char *command, char *path, char *sect } if (parameter){ if (size>=get_pos+2){ - free(parsed[get_pos+2]); - parsed[get_pos+2] = yon_char_new(parameter); + config_str temp = yon_char_parsed_copy(parsed,get_pos+1); + yon_char_parsed_free(parsed,size); + parsed = temp; + size=get_pos+1; + yon_char_parsed_add_or_create_if_exists(parsed,&size,parameter); } } char *final = yon_char_parsed_to_string(parsed,size," "); diff --git a/source/libublsettings.h b/source/libublsettings.h index df37060..0237c9f 100644 --- a/source/libublsettings.h +++ b/source/libublsettings.h @@ -868,6 +868,8 @@ char *yon_config_command_get_section(const char *command); int yon_config_command_get_path_pos(config_str parsed, int size); char *yon_config_command_get_path(const char *command); +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);