From: Bastian Dehn Date: Tue, 16 Jul 2024 16:42:23 +0000 (+0200) Subject: add rename with trim points X-Git-Tag: 1.0.0^2^2~12 X-Git-Url: https://gitweb.hhaalo.de/?a=commitdiff_plain;h=ce2dbbb12f00321d764f0e8183cd343fef73f817;p=mv_none_space.git add rename with trim points --- diff --git a/src/rename.c b/src/rename.c index f948563..516770b 100644 --- a/src/rename.c +++ b/src/rename.c @@ -1,7 +1,30 @@ #include +#include #include #include "rename.h" +void rename_point_str(char* src, char* dst) +{ + int len = strlen(src); + int point_count = 0; + for (int i = len - 1; i >= 0; i--) { + if (src[i] == 0x2e) + point_count++; + + if (src[i] != 0x2e) + break; + } + + char* tmp_str = malloc(sizeof(char) * len + 1); + memset(tmp_str, 0, len + 1); + strncpy(tmp_str, src, len - point_count); + + rename_str(tmp_str, dst); + + free(tmp_str); + tmp_str = NULL; +} + void rename_lower_str(char* src, char* dst) { rename_str(src, dst); diff --git a/src/rename.h b/src/rename.h index 99a4f40..19f4cdd 100644 --- a/src/rename.h +++ b/src/rename.h @@ -4,6 +4,7 @@ #define STR_MAX_LENGTH 1024 typedef void (*rename_func_ptr)(char* src, char* dst); +void rename_point_str(char* src, char* dst); void rename_lower_str(char* src, char* dst); void rename_str(char* src, char* dst); diff --git a/tests/rename_tests.c b/tests/rename_tests.c index 5a7693b..4cc58ec 100644 --- a/tests/rename_tests.c +++ b/tests/rename_tests.c @@ -117,6 +117,16 @@ void rename_lower_case(void **state) assert_string_equal(output, "gruss_gott,_hat_der_biergarten_offen?"); } +void rename_point_case(void **state) +{ + char* output = (char*) *state; + char* input = "Dies ist die Geschichte von..........."; + + rename_point_str(input, output); + + assert_string_equal(output, "Dies_ist_die_Geschichte_von"); +} + int main() { const struct CMUnitTest tests[] = { @@ -129,6 +139,7 @@ int main() cmocka_unit_test_setup_teardown(rename_Ue, setup, teardown), cmocka_unit_test_setup_teardown(rename_scharfes_s, setup, teardown), cmocka_unit_test_setup_teardown(rename_lower_case, setup, teardown), + cmocka_unit_test_setup_teardown(rename_point_case, setup, teardown), }; return cmocka_run_group_tests(tests, NULL, NULL);