From 585302a54408a9228902f58348c092a63ad56311 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Thu, 25 Jul 2024 11:36:33 +0600 Subject: [PATCH] Added new function. Fixed crash when parameter's data is empty --- source/libublsettings.c | 74 +++++++++++++++++++++++++++++++++++------ source/libublsettings.h | 2 ++ 2 files changed, 65 insertions(+), 11 deletions(-) diff --git a/source/libublsettings.c b/source/libublsettings.c index b14c17a..3a82f6f 100644 --- a/source/libublsettings.c +++ b/source/libublsettings.c @@ -1037,6 +1037,17 @@ char *yon_config_get_type_path(YON_CONFIG_TYPE type){ return NULL; } +char *yon_config_get_all_info(){ + check_config{ + int size; + config_str parsed = yon_config_get_all(&size); + char *full = yon_char_parsed_to_string(parsed,size,"\n"); + yon_char_parsed_free(parsed,size); + return full; + } + return NULL; +} + void yon_config_parameter_set_load_command(char *key, char *command){ dictionary *found = yon_dictionary_get((dictionary**)&__yon__config__strings,key); if (found){ @@ -1225,6 +1236,10 @@ int yon_config_load_config(YON_CONFIG_TYPE config_type, ...){ for (int i=0;i0){ for (int j=0;jdata&&strcmp(__yon__config__strings->data,data)){ + if (__yon__config__strings->data&&data!=__yon__config__strings->data&&strcmp(__yon__config__strings->data,data)){ __yon__config__strings->data=yon_char_new(data); __yon__config__strings->flag1=1; __yon__config__strings->data_type=DICTIONARY_CHAR_TYPE; @@ -2186,16 +2201,6 @@ void yon_launch(char *command) // // Trash collector functions -// typedef struct yon_trash_collector_group{ - -// char *group_key; -// void *data; -// struct yon_trash_collector_group *next; -// struct yon_trash_collector_group *prev; -// struct yon_trash_collector_group *first; - -// } yon_trash_collector_group; - // typedef struct yon_trash_collector_element{ // char *key; // void *data; @@ -2205,6 +2210,16 @@ void yon_launch(char *command) // } yon_trash_collector_element; +// typedef struct yon_trash_collector_group{ + +// char *group_key; +// yon_trash_collector_element *data; +// struct yon_trash_collector_group *next; +// struct yon_trash_collector_group *prev; +// struct yon_trash_collector_group *first; +// } yon_trash_collector_group; + + // yon_trash_collector_group *__yon_trash_collector__ = NULL; // #define check_trash if (__yon_trash_collector__) @@ -2212,6 +2227,43 @@ void yon_launch(char *command) // #define for_trash_group for(yon_trash_collector_group *gr = __yon_trash_collector__->first;gr;gr=gr->next) // #define for_trash_element(group) for (yon_trash_collector_element *gr = group->first; gr;gr=gr->next) +// #define yon_malloc_reg(size,key,group) yon_var_create_register(size,key,group) + +// yon_trash_collector_group *yon_trash_collector_group_new(){ +// yon_trash_collector_group *group = malloc(sizeof(yon_trash_collector_group)); +// group->data=NULL; +// group->first=group; +// group->group_key=NULL; +// group->next=NULL; +// group->prev=NULL; +// return group; +// } + +// int yon_trash_collector_element_register(yon_trash_collector_element *element,char *group){ +// if (!element||yon_char_is_empty(element->key)||yon_char_is_empty(group)) +// return 0; +// check_trash{ +// if (yon_dictionary_get((dictionary**)&__yon_trash_collector__,group)){ +// if (yon_dictionary_get((dictionary**)&__yon_trash_collector__->data,element->key)); +// } else { +// yon_trash_collector_group *last = (yon_trash_collector_group*)yon_dictionary_get_last((dictionary*)__yon_trash_collector__); +// __yon_trash_collector__->next = yon_trash_collector_group_new(); +// __yon_trash_collector__->next->prev=__yon_trash_collector__; +// __yon_trash_collector__->next->first=__yon_trash_collector__->first; +// __yon_trash_collector__->next->data=element; +// } +// } else { +// __yon_trash_collector__ = yon_trash_collector_group_new(); +// __yon_trash_collector__->data=element; +// } +// return 1; +// } + +// void *yon_var_create_register(int size,char *key,char*group){ +// void *allocated = malloc(size); + +// } + // yon_trash_collector_element *yon_trash_collector_element_get(void *pointer,yon_trash_collector_group *group){ // for_trash_element(group){ // if (gr->data==pointer) diff --git a/source/libublsettings.h b/source/libublsettings.h index 0149272..c48a649 100644 --- a/source/libublsettings.h +++ b/source/libublsettings.h @@ -650,6 +650,8 @@ typedef enum { YON_CONFIG_CUSTOM } YON_CONFIG_TYPE; +char *yon_config_get_all_info(); + void yon_config_parameter_set_load_command(char *key, char *command); void yon_config_parameter_set_save_command(char *key, char *command);