From f41c5e5c9c660468baf60b6cd5d7bfe6ce83ea76 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Tue, 16 Jan 2024 17:03:56 +0600 Subject: [PATCH 1/6] Fixed status getting funclion --- source/libublsettings.c | 4 ++-- source/libublsettings.h | 15 +++++++++++++-- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/source/libublsettings.c b/source/libublsettings.c index b881423..b366a37 100644 --- a/source/libublsettings.c +++ b/source/libublsettings.c @@ -864,7 +864,7 @@ yon_config_parameter *yon_config_parameter_new_with_data(char *key, void *data){ param->data=data; param->data_type=DICTIONARY_CHAR_TYPE; param->first=param; - param->flag1=0; + param->flag1=1; param->key=yon_char_new(key); param->next=NULL; param->prev=NULL; @@ -914,7 +914,7 @@ int yon_config_remove_ignore(char *key){ int yon_config_get_status(char *key){ dictionary *dict; - if (yon_dictionary_get((dictionary**)&__yon__config__strings,key)){ + if ((dict=yon_dictionary_get((dictionary**)&__yon__config__strings,key))){ return ((yon_config_parameter*)dict)->flag1; } else return 0; diff --git a/source/libublsettings.h b/source/libublsettings.h index dd50505..e3df16f 100644 --- a/source/libublsettings.h +++ b/source/libublsettings.h @@ -16,6 +16,17 @@ #define DesktopPath "/usr/share/applications/" +// #define config_parameters { {"config","VERSION","CMDLNE","SERVICESSTART","SERVICENOSTART","SERVICEMASK","HOSTNAME","MACHINEID",\ +// "APPARMOR","PARTITIONSNOMOUNT","PARTITIONSAUTOMOUNT","AUTOMOUNT_SHARE","PUBLICDIR","AUTOMOUNTSERVER",\ +// "PARTITIONSHARE","PRINTERADD","RUNLDCONFIG","DEPMOD","UPDATEHOME","TMPFS","VARTMPFS","PULSEAUDIO",\ +// "ALSACARD","ALSADEVICE","UBLINUXUPDATE","MKSQFS_OPTS","MKSQFS_FASTALG"},\ +// {"users","DEFAULTPASSWD","DEFAULTROOTPASSWD","HASHPASSWD","USERADD","GROUPADD","USERGROPS","ADDADM","USERSHADOW","DEFAULTUSER","HOSTNAME","MACHINEID"},\ +// {"system","ENVIRONMENT","AUTHPAM"},\ +// {"logging","AUDITD","JOURNALD","LOGROTATE"},\ +// {"boot"}\ +// } + + /**for_dictionaries(element, stack) * [EN] * @@ -591,8 +602,8 @@ config_str yon_dir_get_contents(char *dir_path, int *size); //config functions -#define ubconfig_save_command "ubconfig" -#define ubconfig_load_command "ubconfig --source" +#define ubconfig_save_command "ubconfig --quiet" +#define ubconfig_load_command "ubconfig --quiet --source" /** * Типы конфигураций ubconfig-а From 5084cf3def65e09bccf0bfc0815d12da7de43bb7 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Tue, 16 Jan 2024 17:24:09 +0600 Subject: [PATCH 2/6] Changed register function to spent less memory --- source/libublsettings.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/source/libublsettings.c b/source/libublsettings.c index b366a37..43cb371 100644 --- a/source/libublsettings.c +++ b/source/libublsettings.c @@ -1210,18 +1210,20 @@ void yon_config_register(char *key, char *config_section, void *data){ if (!__yon__config__strings||!yon_dictionary_get((dictionary**)&__yon__config__strings,key)){ yon_config_parameter_add_or_create_if_exists_with_data(__yon__config__strings,key,yon_char_new(data)); __yon__config__strings->flag1=1; + __yon__config__strings->data_type=DICTIONARY_CHAR_TYPE; + __yon__config__strings->section=yon_char_new(config_section); } else if (yon_dictionary_get((dictionary**)&__yon__config__strings,key)){ if (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; + __yon__config__strings->section=yon_char_new(config_section); if (yon_dictionary_get(&__yon_config_ignored, __yon__config__strings->key)){ yon_dictionary_rip(__yon_config_ignored); } } } - __yon__config__strings->data_type=DICTIONARY_CHAR_TYPE; - __yon__config__strings->section=yon_char_new(config_section); } config_str yon_config_load(char *command, int *str_len){ From 5302c6bbd0f1fd8334d9e4718f6a41dccf6dfd0f Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Tue, 16 Jan 2024 17:44:43 +0600 Subject: [PATCH 3/6] Added check for default parameter value editing while loading config --- source/libublsettings.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/source/libublsettings.c b/source/libublsettings.c index 43cb371..f27afb5 100644 --- a/source/libublsettings.c +++ b/source/libublsettings.c @@ -957,7 +957,11 @@ int yon_config_load_register_no_cleaning(YON_CONFIG_TYPE config_type,char *secti if (!yon_dictionary_get((dictionary**)&__yon__config__strings,key)){ yon_config_parameter_add_or_create_if_exists_with_data(__yon__config__strings,key,yon_char_new(final_str)); } else { - __yon__config__strings->data=final_str; + if (strcmp((char*)__yon__config__strings->data,final_str)){ + __yon__config__strings->data=final_str; + } else { + continue; + } } yon_config_remove_ignore(key); if (config_type==YON_CONFIG_DEFAULT){ @@ -1011,7 +1015,11 @@ int yon_config_load_register(YON_CONFIG_TYPE config_type,char *section,char *par if (!yon_dictionary_get((dictionary**)&__yon__config__strings,key)){ yon_config_parameter_add_or_create_if_exists_with_data(__yon__config__strings,key,yon_char_new(final_str)); } else { - __yon__config__strings->data=final_str; + if (strcmp((char*)__yon__config__strings->data,final_str)){ + __yon__config__strings->data=final_str; + } else { + continue; + } } yon_config_remove_ignore(key); if (config_type==YON_CONFIG_DEFAULT){ From 828943d6e3c86e1a3b3cd24f4db8edc10835c329 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Thu, 18 Jan 2024 12:38:00 +0600 Subject: [PATCH 4/6] Updated config functions --- source/libublsettings.c | 37 ++++++++++++++++++++++++++++--------- source/libublsettings.h | 6 ++++-- 2 files changed, 32 insertions(+), 11 deletions(-) diff --git a/source/libublsettings.c b/source/libublsettings.c index f27afb5..9c417d6 100644 --- a/source/libublsettings.c +++ b/source/libublsettings.c @@ -731,7 +731,7 @@ char *yon_char_parsed_to_string(config_str parsed, int size, char *divider_repla if (!yon_char_is_empty(final_string)){ return final_string; } else return NULL; - } + } else if (size==0&&!parsed) return ""; } int yon_ubl_check_root(){ @@ -1067,7 +1067,12 @@ int yon_config_remove_element(char *key, char *delete, char *divider){ found = 1; } } - char *final_string = yon_char_parsed_to_string(parsed,size,divider); + char *final_string = NULL; + if (size>0) final_string = yon_char_parsed_to_string(parsed,size,divider); + else { + final_string = malloc(sizeof(char)*1); + final_string[0]='\0'; + } if (final_string){ free(dict->data); dict->data=final_string; @@ -1090,7 +1095,17 @@ int yon_config_append_element(char *key, char *append, char *divider){ } else return 0; } -void yon_config_set_status(int status){ +int yon_config_set_status(char *key, int status){ + check_config{ + if(yon_dictionary_get((dictionary**)&__yon__config__strings,key)){ + ((yon_config_parameter*)__yon__config__strings)->flag1=status; + return 1; + } + } + return 0; +} + +void yon_config_set_status_full(int status){ check_config{ for_config{ ((yon_config_parameter*)temp)->flag1=status; @@ -1195,14 +1210,18 @@ int yon_config_set(char *key, void *data){ } else return 0; } -int yon_config_append(char *key, char *data){ +int yon_config_append(char *key, char *data, char *divider){ check_config{ yon_config_parameter *dict = (yon_config_parameter*)yon_dictionary_get((dictionary**)&__yon__config__strings,key); - if (strcmp(((char*)dict->data),"")!=0) - dict->data=(void*)(yon_char_unite((char*)dict->data," ",data,NULL)); - else dict->data=(void*)data; - dict->flag1=1; - return 1; + if (dict){ + if (strcmp(((char*)dict->data),"")!=0){ + char *str = (char*)dict->data; + dict->data=(void*)(yon_char_unite(yon_char_is_empty(str)?"":str,yon_char_is_empty(str)?"":",",divider,data,NULL)); + } + else dict->data=(void*)yon_char_new(data); + dict->flag1=1; + return 1; + } else return 0; } else return 0; } diff --git a/source/libublsettings.h b/source/libublsettings.h index e3df16f..0b1dbfb 100644 --- a/source/libublsettings.h +++ b/source/libublsettings.h @@ -692,7 +692,9 @@ int yon_config_remove_by_key(char *key); */ int yon_config_remove_element(char *key, char *delete, char *divider); -void yon_config_set_status(int status); +int yon_config_set_status(char *key, int status); + +void yon_config_set_status_full(int status); /**yon_config_get_key_by_key(char *data) * [EN] @@ -747,7 +749,7 @@ int yon_config_set(char *key, void *data); * [RU] * Производит поиск по конфигу и дополняет значение параметра с ключом [key] значением [data]; */ -int yon_config_append(char *key, char *data); +int yon_config_append(char *key, char *data, char *divider); /**yon_config_clean() * [EN] From fa82ee22a8bb59696f327605f6a92cf4c6dffb7e Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Fri, 19 Jan 2024 17:55:04 +0600 Subject: [PATCH 5/6] Function minor fixes --- source/libublsettings.c | 45 ++++++++++++++++++++++++----------------- 1 file changed, 26 insertions(+), 19 deletions(-) diff --git a/source/libublsettings.c b/source/libublsettings.c index 9c417d6..46979d0 100644 --- a/source/libublsettings.c +++ b/source/libublsettings.c @@ -515,22 +515,24 @@ char **yon_char_parse(char *parameters, int *size, char *divider){ } char **yon_char_parsed_rip(char **char_string, int *size, int item_to_delete){ - char **new_char_parsed=NULL; - new_char_parsed=malloc(sizeof(char*)*((*size)-1)); - int flag = 0; - for (int i=0;i < (*size);i++){ - if (i==item_to_delete) { - flag = 1; - } - if (flag == 0) { - new_char_parsed[i]=yon_char_new(char_string[i]); - } - else if (flag == 1 && i!=item_to_delete) { - new_char_parsed[i-1]=yon_char_new(char_string[i]); + if (char_string&&size>0&&size>item_to_delete&&item_to_delete>0){ + char **new_char_parsed=NULL; + new_char_parsed=malloc(sizeof(char*)*((*size)-1)); + int flag = 0; + for (int i=0;i < (*size);i++){ + if (i==item_to_delete) { + flag = 1; + } + if (flag == 0) { + new_char_parsed[i]=yon_char_new(char_string[i]); + } + else if (flag == 1 && i!=item_to_delete) { + new_char_parsed[i-1]=yon_char_new(char_string[i]); + } } - } - (*size)=(*size)-1; - return new_char_parsed; + (*size)=(*size)-1; + return new_char_parsed; + } else return NULL; } int yon_char_parsed_check_exist(char **parameters, int size, char *param){ @@ -593,10 +595,12 @@ config_str yon_char_parsed_new (int *size, ...){ } void yon_char_parsed_free(config_str source, int size){ - for (int i=0;i0){ + for (int i=0;i0){ char *final_string = ""; + char *temp; for (int i=0;i Date: Fri, 26 Jan 2024 10:59:50 +0600 Subject: [PATCH 6/6] Added parameters checking for config_str rip function --- source/libublsettings.c | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/source/libublsettings.c b/source/libublsettings.c index 46979d0..14da1c8 100644 --- a/source/libublsettings.c +++ b/source/libublsettings.c @@ -515,7 +515,7 @@ char **yon_char_parse(char *parameters, int *size, char *divider){ } char **yon_char_parsed_rip(char **char_string, int *size, int item_to_delete){ - if (char_string&&size>0&&size>item_to_delete&&item_to_delete>0){ + if (char_string&&(*size)>0&&(*size)>item_to_delete&&item_to_delete>0){ char **new_char_parsed=NULL; new_char_parsed=malloc(sizeof(char*)*((*size)-1)); int flag = 0; @@ -536,12 +536,13 @@ char **yon_char_parsed_rip(char **char_string, int *size, int item_to_delete){ } int yon_char_parsed_check_exist(char **parameters, int size, char *param){ - - for (int i=0;i