String parsing function rework

pull/62/head
parent 8e390d04a1
commit 6dc10bafc8

@ -673,6 +673,33 @@ char *yon_char_replace(char *source, char *find, char*replace){
return source; return source;
} }
/**yon_char_parse(char *parameters, int *size, char *divider)
* [EN]
* Parses string [parameters], divided by [divider],
* then returns parsed string array and sets [size] to
* size of returned array
*/
// char **yon_char_parse(char *parameters, int *size, char *divider){
// char **string=NULL;
// int i=1;
// string=malloc(sizeof(char*));
// char *paramline=yon_char_new(parameters);
// char *param;
// while ((param=yon_char_divide_search(paramline,divider,1))){
// string=realloc(string,sizeof(char*)*i);
// string[i-1]=yon_char_new(param);
// i++;
// if (strcmp(param,paramline)==0) break;
// }
// // string=realloc(string,sizeof(char*)*i);
// // string[i-1]=yon_char_new(paramline);
// // i++;
// // printf("%d\n",i);
// *size=i-1;
// return string;
// }
/**yon_char_parse(char *parameters, int *size, char *divider) /**yon_char_parse(char *parameters, int *size, char *divider)
* [EN] * [EN]
* Parses string [parameters], divided by [divider], * Parses string [parameters], divided by [divider],
@ -681,23 +708,20 @@ char *yon_char_replace(char *source, char *find, char*replace){
*/ */
char **yon_char_parse(char *parameters, int *size, char *divider){ char **yon_char_parse(char *parameters, int *size, char *divider){
char **string=NULL; char **string=NULL;
int i=1; *size=0;
string=malloc(sizeof(char*));
char *paramline=yon_char_new(parameters); char *paramline=yon_char_new(parameters);
char *param; char *param = strstr(paramline,divider);
while ((param=yon_char_divide_search(paramline,divider,1))){ for (;param;param=strstr(paramline,divider)){
string=realloc(string,sizeof(char*)*i); string = yon_remalloc(string,sizeof(char*)*((*size)+1));
string[i-1]=yon_char_new(param); string[(*size)]=yon_char_divide(paramline,strlen(paramline)-strlen(param));
i++; *size=(*size)+1;
if (strcmp(param,paramline)==0) break; }
} if (string){
// string=realloc(string,sizeof(char*)*i); string = yon_remalloc(string,sizeof(char*)*((*size)+1));
// string[i-1]=yon_char_new(paramline); string[(*size)]=paramline;
// i++; (*size)+=1;
// printf("%d\n",i); }
*size=i-1;
return string; return string;
} }
/**yon_char_parsed_rip(char **char_string, int *size, int item_to_delete) /**yon_char_parsed_rip(char **char_string, int *size, int item_to_delete)
@ -746,6 +770,26 @@ int yon_char_parsed_check_exist(char **parameters, int size, char *param){
return -1; return -1;
} }
/**yon_char_parsed_check_repeats(char **parameters, int size)
* [EN]
* Checks if [parameters] string array of length [size]
* has repeated elements;
* [RU]
* Проверяет есть ли в массиве строк [parameters], размера [size]
* повторения
*/
int yon_char_parsed_check_repeats(char **parameters, int size){
for (int i=0;i<size;i++){
for (int j=0;j<size;j++){
if (parameters[i]&&parameters[j]){
if (!strcmp(parameters[i],parameters[j])&&i!=j)
return 1;
}
}
}
return 0;
}
/**yon_char_parsed_includes_char_parsed (config_str source, config_str to_check, int source_size, int check_size) /**yon_char_parsed_includes_char_parsed (config_str source, config_str to_check, int source_size, int check_size)
* [EN] * [EN]
* *

@ -155,6 +155,8 @@ 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); int yon_char_parsed_check_exist(char **parameters, int size, char *param);
int yon_char_parsed_check_repeats(char **parameters, int size);
int yon_char_find_count(char *source, char *find); int yon_char_find_count(char *source, char *find);
int yon_char_parsed_includes_char_parsed (config_str source, config_str to_check, int source_size, int check_size); int yon_char_parsed_includes_char_parsed (config_str source, config_str to_check, int source_size, int check_size);

Loading…
Cancel
Save