diff --git a/source/libublsettings-char.c b/source/libublsettings-char.c index 1048179..1ef29c6 100644 --- a/source/libublsettings-char.c +++ b/source/libublsettings-char.c @@ -250,7 +250,7 @@ char *yon_char_from_int(int int_to_convert) { int i = snprintf( NULL, 0, "%d", int_to_convert ); - char *ch = malloc(i * sizeof(char) + 1); + char *ch = malloc(i * sizeof(char) + 1+ int_to_convert<0?1:0); memset(ch,0,i * sizeof(char) + 1); sprintf(ch, "%d", int_to_convert); return ch; @@ -264,7 +264,7 @@ char *yon_char_from_float(float int_to_convert) { convert_check = convert_check / 10; } - char *ch = malloc((i + 9)* sizeof(char)); + char *ch = malloc((i + 9)* sizeof(char)+ int_to_convert<0?1:0); memset(ch,0,(i + 9)* sizeof(char)); sprintf(ch, "%.2f", int_to_convert); return ch; @@ -278,7 +278,7 @@ char *yon_char_from_double(double int_to_convert) { convert_check = convert_check / 10; } - char *ch = malloc((i + 9)* sizeof(char)); + char *ch = malloc((i + 9)* sizeof(char)+ int_to_convert<0?1:0); memset(ch,0,(i + 9)* sizeof(char)); sprintf(ch, "%.2f", int_to_convert); return ch; @@ -286,14 +286,9 @@ char *yon_char_from_double(double int_to_convert) char *yon_char_from_long(long int_to_convert) { - int i = 1; - double convert_check = (double)int_to_convert; - for (i = 1; convert_check >= 10; i++) - { - convert_check = convert_check / 10; - } - char *ch = malloc(i * sizeof(char) + 1); - memset(ch,0,i * sizeof(char) + 1); + size_t size = 20 * sizeof(char) + 1 + int_to_convert<0?1:0; + char *ch = malloc(size); + memset(ch,0,size); sprintf(ch, "%ld", int_to_convert); return ch; } @@ -481,7 +476,9 @@ config_str yon_char_parsed_new (int *size, ...){ void yon_char_parsed_free(config_str source, int size){ if (source&&size>0){ for (int i=0;i0&&size2>0){ *final_size=0; diff --git a/source/libublsettings-file.c b/source/libublsettings-file.c index 4bdfada..35e8b5e 100644 --- a/source/libublsettings-file.c +++ b/source/libublsettings-file.c @@ -30,7 +30,7 @@ config_str yon_file_open(char *file_path, int *size){ char str_loaded[4098]; config_str final_string = NULL; while (fgets(str_loaded,4098,file)){ - final_string = final_string ? yon_char_parsed_append(final_string,size,str_loaded) : yon_char_parsed_new(size,str_loaded,NULL); + yon_char_parsed_add_or_create_if_exists(final_string,size,str_loaded); } fclose(file); return final_string; diff --git a/source/libublsettings.h b/source/libublsettings.h index 88cafb2..7e39499 100644 --- a/source/libublsettings.h +++ b/source/libublsettings.h @@ -998,6 +998,12 @@ config_str yon_char_parsed_cut(config_str parsed, int size, int pos); int yon_char_parsed_find_element(config_str parsed, int size, char *target); +/// @brief Checks if two config_str elements are equal or not for sort functions +/// @param a pinter for first compared element; +/// @param b pointer for second compared element; +/// @return -1 if ab +int yon_char_parsed_compare(const config_str a, const config_str b); + int yon_char_find_last_symbol_before_length(char *string, char target, int length); /**yon_char_wrap_to_length(char *target, unsigned int length, int *size) @@ -1513,7 +1519,8 @@ enum YON_LOCALE_PARAMETER{ YON_LOCALE_TERRITORY, YON_LOCALE_LANG_AB, YON_LOCALE_TITLE, - YON_LOCALE_CODE + YON_LOCALE_CODE, + YON_LOCALE_CODESET }; typedef struct yon_hash_element{