diff --git a/source/libublsettings-char.c b/source/libublsettings-char.c index 3e81c68..6b2b9d3 100644 --- a/source/libublsettings-char.c +++ b/source/libublsettings-char.c @@ -109,6 +109,38 @@ char *yon_cut(char *source, int size, int startpos) return NULL; } +int yon_char_check_element(char *target, char *element, char *divider){ + if (yon_char_is_empty(target)||yon_char_is_empty(element)||yon_char_is_empty(divider)) return 0; + int size; + config_str parsed = yon_char_parse(target,&size,divider); + int found = yon_char_parsed_check_exist(parsed,size,element); + yon_char_parsed_free(parsed,size); + return !!found; + return 0; +} + +// char *yon_char_remove_element(char *target, char *element, char *divider){ +// if (!yon_char_check_element(target,element,divider)) return NULL; +// int size; +// config_str parsed = yon_char_parse(target,&size,divider); +// int found = yon_char_parsed_check_exist(parsed,size,element); +// yon_char_parsed_rip(parsed,&size,found); +// char *final = yon_char_parsed_to_string(parsed,size,divider); +// yon_char_parsed_free(parsed,size); + +// return final; +// } + +int yon_char_add_element(char *target, char *element, int position, char *divider){ + if (!yon_char_check_element(target,element,divider)) return 0; + int size; + config_str parsed = yon_char_parse(target,&size,divider); + if (position>size) position = size; + yon_char_parsed_add_or_create_if_exists(parsed,&size,element); + memcpy(parsed+position+1,parsed+position,sizeof(parsed)-sizeof(char*)*(size-position-1)); + return 1; +} + int yon_char_check_begins_with(char *haystack, char *needle){ if (!yon_char_is_empty(haystack)&&!yon_char_is_empty(needle)&&strlen(haystack)>=strlen(needle)){ int size = strlen(needle);