[strings] string_trim makes a copy rather than modifying the pointer
This commit is contained in:
@@ -11,7 +11,10 @@ char *normalize_string_utf8(char *str, uint64_t options) {
|
|||||||
bool have_utf8proc_options = false;
|
bool have_utf8proc_options = false;
|
||||||
|
|
||||||
if (options & NORMALIZE_STRING_TRIM) {
|
if (options & NORMALIZE_STRING_TRIM) {
|
||||||
string_trim(str);
|
char *trimmed = string_trim(str);
|
||||||
|
if (trimmed != NULL) {
|
||||||
|
str = trimmed;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (options & NORMALIZE_STRING_DECOMPOSE) {
|
if (options & NORMALIZE_STRING_DECOMPOSE) {
|
||||||
|
|||||||
@@ -411,7 +411,7 @@ inline bool string_contains_hyphen(char *str) {
|
|||||||
return string_next_hyphen_index(str, strlen(str)) >= 0;
|
return string_next_hyphen_index(str, strlen(str)) >= 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t string_rtrim(char *str) {
|
size_t string_right_spaces(char *str) {
|
||||||
size_t spaces = 0;
|
size_t spaces = 0;
|
||||||
|
|
||||||
uint8_t *ptr = (uint8_t *)str;
|
uint8_t *ptr = (uint8_t *)str;
|
||||||
@@ -433,14 +433,11 @@ size_t string_rtrim(char *str) {
|
|||||||
spaces++;
|
spaces++;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (spaces > 0) {
|
|
||||||
*(str + index) = '\0';
|
|
||||||
}
|
|
||||||
|
|
||||||
return spaces;
|
return spaces;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t string_ltrim(char *str) {
|
size_t string_left_spaces(char *str) {
|
||||||
size_t spaces = 0;
|
size_t spaces = 0;
|
||||||
|
|
||||||
uint8_t *ptr = (uint8_t *)str;
|
uint8_t *ptr = (uint8_t *)str;
|
||||||
@@ -462,17 +459,15 @@ size_t string_ltrim(char *str) {
|
|||||||
spaces++;
|
spaces++;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (spaces > 0) {
|
|
||||||
memmove(str, str + index, len + 1 - index);
|
|
||||||
}
|
|
||||||
|
|
||||||
return spaces;
|
return spaces;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline size_t string_trim(char *str) {
|
char *string_trim(char *str) {
|
||||||
size_t spaces = string_ltrim(str);
|
size_t left_spaces = string_left_spaces(str);
|
||||||
spaces += string_rtrim(str);
|
size_t right_spaces = string_right_spaces(str);
|
||||||
return spaces;
|
size_t len = strlen(str);
|
||||||
|
char *ret = strndup(str + left_spaces, len - left_spaces - right_spaces);
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
char_array *char_array_from_string(char *str) {
|
char_array *char_array_from_string(char *str) {
|
||||||
|
|||||||
@@ -90,9 +90,7 @@ ssize_t string_next_hyphen_index(char *str, size_t len);
|
|||||||
bool string_contains_hyphen(char *str);
|
bool string_contains_hyphen(char *str);
|
||||||
bool string_contains_hyphen_len(char *str, size_t len);
|
bool string_contains_hyphen_len(char *str, size_t len);
|
||||||
|
|
||||||
size_t string_ltrim(char *str);
|
char *string_trim(char *str);
|
||||||
size_t string_rtrim(char *str);
|
|
||||||
size_t string_trim(char *str);
|
|
||||||
|
|
||||||
/* char_array is a dynamic character array defined in collections.h
|
/* char_array is a dynamic character array defined in collections.h
|
||||||
but has a few additional methods related to string manipulation.
|
but has a few additional methods related to string manipulation.
|
||||||
|
|||||||
Reference in New Issue
Block a user