[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;
|
||||
|
||||
if (options & NORMALIZE_STRING_TRIM) {
|
||||
string_trim(str);
|
||||
char *trimmed = string_trim(str);
|
||||
if (trimmed != NULL) {
|
||||
str = trimmed;
|
||||
}
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
size_t string_rtrim(char *str) {
|
||||
size_t string_right_spaces(char *str) {
|
||||
size_t spaces = 0;
|
||||
|
||||
uint8_t *ptr = (uint8_t *)str;
|
||||
@@ -433,14 +433,11 @@ size_t string_rtrim(char *str) {
|
||||
spaces++;
|
||||
}
|
||||
|
||||
if (spaces > 0) {
|
||||
*(str + index) = '\0';
|
||||
}
|
||||
|
||||
return spaces;
|
||||
|
||||
}
|
||||
|
||||
size_t string_ltrim(char *str) {
|
||||
size_t string_left_spaces(char *str) {
|
||||
size_t spaces = 0;
|
||||
|
||||
uint8_t *ptr = (uint8_t *)str;
|
||||
@@ -462,17 +459,15 @@ size_t string_ltrim(char *str) {
|
||||
spaces++;
|
||||
}
|
||||
|
||||
if (spaces > 0) {
|
||||
memmove(str, str + index, len + 1 - index);
|
||||
}
|
||||
|
||||
return spaces;
|
||||
}
|
||||
|
||||
inline size_t string_trim(char *str) {
|
||||
size_t spaces = string_ltrim(str);
|
||||
spaces += string_rtrim(str);
|
||||
return spaces;
|
||||
char *string_trim(char *str) {
|
||||
size_t left_spaces = string_left_spaces(str);
|
||||
size_t right_spaces = string_right_spaces(str);
|
||||
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) {
|
||||
|
||||
@@ -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_len(char *str, size_t len);
|
||||
|
||||
size_t string_ltrim(char *str);
|
||||
size_t string_rtrim(char *str);
|
||||
size_t string_trim(char *str);
|
||||
char *string_trim(char *str);
|
||||
|
||||
/* char_array is a dynamic character array defined in collections.h
|
||||
but has a few additional methods related to string manipulation.
|
||||
|
||||
Reference in New Issue
Block a user