Merge pull request 'master' (#9) from YanTheKaller/libublsettings:master into master

Reviewed-on: #9
pull/15/head v1.6
Dmitry Razumov 2 years ago
commit d633a13cc7

@ -515,6 +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){ 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){
char **new_char_parsed=NULL; char **new_char_parsed=NULL;
new_char_parsed=malloc(sizeof(char*)*((*size)-1)); new_char_parsed=malloc(sizeof(char*)*((*size)-1));
int flag = 0; int flag = 0;
@ -531,16 +532,18 @@ char **yon_char_parsed_rip(char **char_string, int *size, int item_to_delete){
} }
(*size)=(*size)-1; (*size)=(*size)-1;
return new_char_parsed; return new_char_parsed;
} else return NULL;
} }
int yon_char_parsed_check_exist(char **parameters, int size, char *param){ int yon_char_parsed_check_exist(char **parameters, int size, char *param){
if (parameters){
for (int i=0;i<size;i++){ for (int i=0;i<size;i++){
if (parameters[i]){ if (parameters[i]){
if (strstr(parameters[i],param)) if (strstr(parameters[i],param))
return i; return i;
} else return -1; } else return -1;
} }
}
return -1; return -1;
} }
@ -593,10 +596,12 @@ config_str yon_char_parsed_new (int *size, ...){
} }
void yon_char_parsed_free(config_str source, int size){ void yon_char_parsed_free(config_str source, int size){
if (source&&size>0){
for (int i=0;i<size;i++){ for (int i=0;i<size;i++){
free(source[i]); free(source[i]);
} }
free(source); free(source);
}
} }
config_str yon_char_parsed_copy(config_str to_copy, int size){ config_str yon_char_parsed_copy(config_str to_copy, int size){
@ -725,13 +730,16 @@ dictionary *yon_char_parsed_convert_copy_to_dictionary(config_str parsed, int si
char *yon_char_parsed_to_string(config_str parsed, int size, char *divider_replace){ char *yon_char_parsed_to_string(config_str parsed, int size, char *divider_replace){
if (parsed && size>0){ if (parsed && size>0){
char *final_string = ""; char *final_string = "";
char *temp;
for (int i=0;i<size;i++){ for (int i=0;i<size;i++){
yon_char_unite(final_string,yon_char_is_empty(final_string)?"":divider_replace,parsed[i],NULL); temp = yon_char_unite(final_string,yon_char_is_empty(final_string)?"":divider_replace,parsed[i],NULL);
if (!yon_char_is_empty(final_string)) free(final_string);
final_string=temp;
} }
if (!yon_char_is_empty(final_string)){ if (!yon_char_is_empty(final_string)){
return final_string; return final_string;
} else return NULL; } else return NULL;
} } else if (size==0&&!parsed) return "";
} }
int yon_ubl_check_root(){ int yon_ubl_check_root(){
@ -864,7 +872,7 @@ yon_config_parameter *yon_config_parameter_new_with_data(char *key, void *data){
param->data=data; param->data=data;
param->data_type=DICTIONARY_CHAR_TYPE; param->data_type=DICTIONARY_CHAR_TYPE;
param->first=param; param->first=param;
param->flag1=0; param->flag1=1;
param->key=yon_char_new(key); param->key=yon_char_new(key);
param->next=NULL; param->next=NULL;
param->prev=NULL; param->prev=NULL;
@ -914,7 +922,7 @@ int yon_config_remove_ignore(char *key){
int yon_config_get_status(char *key){ int yon_config_get_status(char *key){
dictionary *dict; 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; return ((yon_config_parameter*)dict)->flag1;
} }
else return 0; else return 0;
@ -957,7 +965,11 @@ int yon_config_load_register_no_cleaning(YON_CONFIG_TYPE config_type,char *secti
if (!yon_dictionary_get((dictionary**)&__yon__config__strings,key)){ 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)); yon_config_parameter_add_or_create_if_exists_with_data(__yon__config__strings,key,yon_char_new(final_str));
} else { } else {
if (strcmp((char*)__yon__config__strings->data,final_str)){
__yon__config__strings->data=final_str; __yon__config__strings->data=final_str;
} else {
continue;
}
} }
yon_config_remove_ignore(key); yon_config_remove_ignore(key);
if (config_type==YON_CONFIG_DEFAULT){ if (config_type==YON_CONFIG_DEFAULT){
@ -1011,7 +1023,11 @@ int yon_config_load_register(YON_CONFIG_TYPE config_type,char *section,char *par
if (!yon_dictionary_get((dictionary**)&__yon__config__strings,key)){ 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)); yon_config_parameter_add_or_create_if_exists_with_data(__yon__config__strings,key,yon_char_new(final_str));
} else { } else {
if (strcmp((char*)__yon__config__strings->data,final_str)){
__yon__config__strings->data=final_str; __yon__config__strings->data=final_str;
} else {
continue;
}
} }
yon_config_remove_ignore(key); yon_config_remove_ignore(key);
if (config_type==YON_CONFIG_DEFAULT){ if (config_type==YON_CONFIG_DEFAULT){
@ -1059,7 +1075,12 @@ int yon_config_remove_element(char *key, char *delete, char *divider){
found = 1; 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){ if (final_string){
free(dict->data); free(dict->data);
dict->data=final_string; dict->data=final_string;
@ -1082,7 +1103,17 @@ int yon_config_append_element(char *key, char *append, char *divider){
} else return 0; } 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{ check_config{
for_config{ for_config{
((yon_config_parameter*)temp)->flag1=status; ((yon_config_parameter*)temp)->flag1=status;
@ -1187,15 +1218,19 @@ int yon_config_set(char *key, void *data){
} else return 0; } else return 0;
} }
int yon_config_append(char *key, char *data){ int yon_config_append(char *key, char *data, char *divider){
check_config{ check_config{
yon_config_parameter *dict = (yon_config_parameter*)yon_dictionary_get((dictionary**)&__yon__config__strings,key); yon_config_parameter *dict = (yon_config_parameter*)yon_dictionary_get((dictionary**)&__yon__config__strings,key);
if (strcmp(((char*)dict->data),"")!=0) if (dict){
dict->data=(void*)(yon_char_unite((char*)dict->data," ",data,NULL)); if (strcmp(((char*)dict->data),"")!=0){
else dict->data=(void*)data; 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; dict->flag1=1;
return 1; return 1;
} else return 0; } else return 0;
} else return 0;
} }
int yon_config_clean(){ int yon_config_clean(){
@ -1210,18 +1245,20 @@ void yon_config_register(char *key, char *config_section, void *data){
if (!__yon__config__strings||!yon_dictionary_get((dictionary**)&__yon__config__strings,key)){ 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_parameter_add_or_create_if_exists_with_data(__yon__config__strings,key,yon_char_new(data));
__yon__config__strings->flag1=1; __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)){ else if (yon_dictionary_get((dictionary**)&__yon__config__strings,key)){
if (data!=__yon__config__strings->data&&strcmp(__yon__config__strings->data,data)){ if (data!=__yon__config__strings->data&&strcmp(__yon__config__strings->data,data)){
__yon__config__strings->data=yon_char_new(data); __yon__config__strings->data=yon_char_new(data);
__yon__config__strings->flag1=1; __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)){ if (yon_dictionary_get(&__yon_config_ignored, __yon__config__strings->key)){
yon_dictionary_rip(__yon_config_ignored); 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){ config_str yon_config_load(char *command, int *str_len){

@ -16,6 +16,17 @@
#define DesktopPath "/usr/share/applications/" #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) /**for_dictionaries(element, stack)
* [EN] * [EN]
* *
@ -591,8 +602,8 @@ config_str yon_dir_get_contents(char *dir_path, int *size);
//config functions //config functions
#define ubconfig_save_command "ubconfig" #define ubconfig_save_command "ubconfig --quiet"
#define ubconfig_load_command "ubconfig --source" #define ubconfig_load_command "ubconfig --quiet --source"
/** /**
* Типы конфигураций ubconfig-а * Типы конфигураций ubconfig-а
@ -681,7 +692,9 @@ int yon_config_remove_by_key(char *key);
*/ */
int yon_config_remove_element(char *key, char *delete, char *divider); 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) /**yon_config_get_key_by_key(char *data)
* [EN] * [EN]
@ -736,7 +749,7 @@ int yon_config_set(char *key, void *data);
* [RU] * [RU]
* Производит поиск по конфигу и дополняет значение параметра с ключом [key] значением [data]; * Производит поиск по конфигу и дополняет значение параметра с ключом [key] значением [data];
*/ */
int yon_config_append(char *key, char *data); int yon_config_append(char *key, char *data, char *divider);
/**yon_config_clean() /**yon_config_clean()
* [EN] * [EN]

Loading…
Cancel
Save