From: Bastian Dehn Date: Thu, 2 Oct 2025 16:36:12 +0000 (+0200) Subject: change rename point X-Git-Tag: 1.1.2^2~1^2~5 X-Git-Url: https://gitweb.hhaalo.de/?a=commitdiff_plain;h=6db6211384d8285ff9dbb25ecee1b4eac5dab0f6;p=mv_none_space.git change rename point --- diff --git a/src/rename.c b/src/rename.c index d4d7786..be9d32c 100644 --- a/src/rename.c +++ b/src/rename.c @@ -80,6 +80,27 @@ void rename_point_str(const char* src, char* dst) tmp_str = NULL; } +char* rename_point(const char* src) +{ + char* dest = rename_string(src); + + size_t length = strlen(dest); + int point_count = 0; + for (int i = length - 1; i > -1; i--) { + if (dest[i] == POINT) + point_count++; + + if (dest[i] != POINT) + break; + } + + dest[length - point_count] = '\0'; + length = strlen(dest) + 1; + dest = realloc(dest, sizeof(char) * length); + + return dest; +} + void rename_lower_str(const char* src, char* dst) { rename_str(src, dst); @@ -94,7 +115,7 @@ void rename_lower_str(const char* src, char* dst) char* rename_lower(const char* src) { char* dest = rename_string(src); - int length = strlen(dest); + size_t length = strlen(dest); for (int i = 0; i < length; i++) { if (dest[i] >= A && dest[i] <= Z) dest[i] += SPACE; diff --git a/src/rename.h b/src/rename.h index 9514ffb..e0f7616 100644 --- a/src/rename.h +++ b/src/rename.h @@ -36,6 +36,7 @@ typedef char* (*rename_ptr)(const char* src); __attribute_deprecated__ void escape_str(const char* src, char* dst); char* escape(const char* src); __attribute_deprecated__ void rename_point_str(const char* src, char* dst); +char* rename_point(const char* src); __attribute_deprecated__ void rename_lower_str(const char* src, char* dst); char* rename_lower(const char* src); __attribute_deprecated__ void rename_str(const char* src, char* dst); diff --git a/tests/rename_tests.c b/tests/rename_tests.c index 010234b..5b23d20 100644 --- a/tests/rename_tests.c +++ b/tests/rename_tests.c @@ -135,14 +135,16 @@ void rename_lower_case() output = NULL; } -void rename_point_case(void **state) +void rename_point_case() { - char* output = (char*) *state; char* input = "Dies ist die Geschichte von..........."; - rename_point_str(input, output); + char* output = rename_point(input); assert_string_equal(output, "Dies_ist_die_Geschichte_von"); + + free(output); + output = NULL; } void escape_test() @@ -249,7 +251,7 @@ int main() cmocka_unit_test(rename_Ue), cmocka_unit_test(rename_scharfes_s), cmocka_unit_test(rename_lower_case), - cmocka_unit_test_setup_teardown(rename_point_case, setup, teardown), + cmocka_unit_test(rename_point_case), cmocka_unit_test(escape_test), cmocka_unit_test_setup_teardown(rename_revert_spaces, setup, teardown), cmocka_unit_test_setup_teardown(rename_revert_ae, setup, teardown),