]> gitweb.hhaalo.de Git - mv_none_space.git/commitdiff
change rename string with space test
authorBastian Dehn <hhaalo@arcor.de>
Thu, 2 Oct 2025 15:56:49 +0000 (17:56 +0200)
committerBastian Dehn <hhaalo@arcor.de>
Thu, 2 Oct 2025 15:56:49 +0000 (17:56 +0200)
src/rename.c
src/rename.h
tests/rename_tests.c

index 92a0da7d8ff92b459e9348967e80d956895764c3..0218fd8471ea27535110902b0c065853869bd036 100644 (file)
@@ -132,6 +132,55 @@ void rename_str(const char* src, char* dst)
        }
 }
 
+char* rename_string(const char* src)
+{
+       size_t length = strlen(src);
+       int dest_count = 0;
+       char* dest = malloc(sizeof(char) * STR_MAX_LENGTH);
+
+       for (int i = 0; i < length; i++) {
+               if (src[i] == SPACE) {
+                       dest[dest_count++] = '_';
+               } else if (src[i] == WIDE_CHAR_PREFIX && src[i + 1] == WIDE_CHAR_a) {
+                       i++;
+                       dest[dest_count++] = 'a';
+                       dest[dest_count++] = 'e';
+               } else if (src[i] == WIDE_CHAR_PREFIX && src[i + 1] == WIDE_CHAR_A) {
+                       i++;
+                       dest[dest_count++] = 'A';
+                       dest[dest_count++] = 'e';
+               } else if (src[i] == WIDE_CHAR_PREFIX && src[i + 1] == WIDE_CHAR_o) {
+                       i++;
+                       dest[dest_count++] = 'o';
+                       dest[dest_count++] = 'e';
+               } else if (src[i] == WIDE_CHAR_PREFIX && src[i + 1] == WIDE_CHAR_O) {
+                       i++;
+                       dest[dest_count++] = 'O';
+                       dest[dest_count++] = 'e';
+               } else if (src[i] == WIDE_CHAR_PREFIX && src[i + 1] == WIDE_CHAR_u) {
+                       i++;
+                       dest[dest_count++] = 'u';
+                       dest[dest_count++] = 'e';
+               } else if (src[i] == WIDE_CHAR_PREFIX && src[i + 1] == WIDE_CHAR_U) {
+                       i++;
+                       dest[dest_count++] = 'U';
+                       dest[dest_count++] = 'e';
+               } else if (src[i] == WIDE_CHAR_PREFIX && src[i + 1] == WIDE_CHAR_SS) {
+                       i++;
+                       dest[dest_count++] = 's';
+                       dest[dest_count++] = 's';
+               } else {
+                       dest[dest_count++] = src[i];
+               }
+       }
+
+       dest[dest_count] = '\0';
+       length = strlen(dest) + 1;
+       dest = realloc(dest, sizeof(char) * length);
+
+       return dest;
+}
+
 void rename_revert_str(const char* src, char* dst)
 {
        int len = strlen(src);
index d49648fcdf6e87202bb1c0e0805311d5f6eadf46..87f1c3b209ee46dcefc078460e6823853cc53417 100644 (file)
@@ -38,6 +38,7 @@ char* escape(const char* src);
 __attribute_deprecated__ void rename_point_str(const char* src, char* dst);
 __attribute_deprecated__ void rename_lower_str(const char* src, char* dst);
 __attribute_deprecated__ void rename_str(const char* src, char* dst);
+char* rename_string(const char* src);
 __attribute_deprecated__ void rename_revert_str(const char* src, char* dst);
 
 #endif
\ No newline at end of file
index 663b0eb175b5198d0da2bd1497b0dd0085323388..a1556a6c5bf6913ace3bf1323fc0d98b87d11130 100644 (file)
@@ -27,14 +27,16 @@ int teardown(void **state)
        return 0;
 }
 
-void rename_spaces(void **state)
+void rename_spaces()
 {
-       char* output = (char*) *state;
        char* input = "Dies ist ein Test Satz";
 
-       rename_str(input, output);
+       char* output = rename_string(input);
 
        assert_string_equal(output, "Dies_ist_ein_Test_Satz");
+
+       free(output);
+       output = NULL;
 }
 
 void rename_ae(void **state)