Replace function fix #51

Merged
asmeron merged 2 commits from YanTheKaller/libublsettings:master into master 5 months ago

@ -245,7 +245,7 @@ char *yon_char_from_long(long int_to_convert)
char* yon_char_replace(char *source, char *find, char *replace){ char* yon_char_replace(char *source, char *find, char *replace){
int size; int size;
config_str parsed = yon_char_parse(source,&size,find); config_str parsed = yon_char_parse(source,&size,find);
char *final = yon_char_parsed_to_string(parsed,size,replace); char *final = yon_char_parsed_to_string_full(parsed,size,replace);
return final; return final;
} }
@ -570,6 +570,22 @@ char *yon_char_parsed_to_string(config_str parsed, int size, char *divider_repla
return ""; return "";
} }
char *yon_char_parsed_to_string_full(config_str parsed, int size, char *divider_replace){
if (parsed && size>0){
char *final_string = "";
char *temp;
for (int i=0;i<size;i++){
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)){
return final_string;
} else return NULL;
}
return "";
}
char *yon_char_parsed_to_string_for_iters(config_str parsed, int size, char *divider_replace,int iterations){ char *yon_char_parsed_to_string_for_iters(config_str parsed, int size, char *divider_replace,int iterations){
if (parsed && size>0&& iterations>0){ if (parsed && size>0&& iterations>0){
char *final_string = ""; char *final_string = "";

@ -261,8 +261,10 @@ char *yon_config_replace_parameter(char *command, char *parameter, int place){
if (!yon_char_is_empty(command)); if (!yon_char_is_empty(command));
int size=0; int size=0;
config_str parsed = yon_char_parse(command,&size," "); config_str parsed = yon_char_parse(command,&size," ");
if (place<size){ int firstparameter = yon_config_command_get_section_pos(parsed,size)+1;
parsed[place]=yon_char_new(parameter); if (firstparameter+place<size){
free(parsed[firstparameter+place]);
parsed[firstparameter+place]=yon_char_new(parameter);
} }
char *final = yon_char_parsed_to_string(parsed,size," "); char *final = yon_char_parsed_to_string(parsed,size," ");
yon_char_parsed_free(parsed,size); yon_char_parsed_free(parsed,size);
@ -337,7 +339,7 @@ int yon_config_load_config(YON_CONFIG_TYPE config_type, ...){
char *key = yon_char_divide_search(current_value,"=",-1); char *key = yon_char_divide_search(current_value,"=",-1);
yon_char_remove_brackets(current_value); yon_char_remove_brackets(current_value);
char *current_command = yon_char_new(command[i]); char *current_command = yon_char_new(command[i]);
current_command = yon_config_replace_parameter(current_command,key,5); current_command = yon_config_replace_parameter(current_command,key,0);
char *cur_data = config(key); char *cur_data = config(key);
int cur_ignore = yon_config_check_ignore(key); int cur_ignore = yon_config_check_ignore(key);
if ((cur_ignore&&current_value)||(!cur_ignore)) if ((cur_ignore&&current_value)||(!cur_ignore))

@ -43,7 +43,7 @@ int yon_get_size_get_from_letter(char size){
break; break;
case 'G': return 2; case 'G': return 2;
break; break;
case 'T': return 0; case 'T': return 3;
break; break;
default: return -1; default: return -1;
break; break;

@ -561,6 +561,7 @@ dictionary *yon_char_parsed_convert_copy_to_dictionary(config_str parsed, int si
* Конвертирует массив строк [parsed] размера [size] в строку, вставляя в местах соединений строку [divider_replace] * Конвертирует массив строк [parsed] размера [size] в строку, вставляя в местах соединений строку [divider_replace]
*/ */
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);
char *yon_char_parsed_to_string_full(config_str parsed, int size, char *divider_replace);
/**yon_char_parsed_to_string_for_iters(config_str parsed, int size, char *divider_replace,int iterations) /**yon_char_parsed_to_string_for_iters(config_str parsed, int size, char *divider_replace,int iterations)
* [EN] * [EN]

Loading…
Cancel
Save