From: Bastian Dehn Date: Fri, 27 Feb 2026 16:20:08 +0000 (+0100) Subject: refator replace wide char X-Git-Tag: 1.1.4^2~11 X-Git-Url: https://gitweb.hhaalo.de/?a=commitdiff_plain;h=382a51b7bd3c42eb2e73503532f85599cd0d0c9f;p=mv_none_space.git refator replace wide char --- diff --git a/src/rename.c b/src/rename.c index e017bc7..2dd57e9 100644 --- a/src/rename.c +++ b/src/rename.c @@ -3,6 +3,42 @@ #include #include "rename.h" +void _replace_two_byte_wide_char(const char character, char* dest) +{ + switch (character) { + case WIDE_CHAR_a: + dest[0] = 'a'; + dest[1] = 'e'; + break; + case WIDE_CHAR_A: + dest[0] = 'A'; + dest[1] = 'e'; + break; + case WIDE_CHAR_o: + dest[0] = 'o'; + dest[1] = 'e'; + break; + case WIDE_CHAR_O: + dest[0] = 'O'; + dest[1] = 'e'; + break; + case WIDE_CHAR_u: + dest[0] = 'u'; + dest[1] = 'e'; + break; + case WIDE_CHAR_U: + dest[0] = 'U'; + dest[1] = 'e'; + break; + case WIDE_CHAR_SS: + dest[0] = 's'; + dest[1] = 's'; + break; + default: + break; + } +} + unsigned int wide_char_length(const char character) { unsigned int count = 0; @@ -103,39 +139,20 @@ char* rename_string(const char* src) memset(dest, 0, STR_MAX_LENGTH); int dest_count = 0; size_t length = strlen(src); + unsigned int wide_char_len = 0; for (size_t 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) { + wide_char_len = wide_char_length(src[i]); + if (wide_char_len == 0) { + if (src[i] == SPACE) + dest[dest_count++] = '_'; + else + dest[dest_count++] = src[i]; + } + + if (wide_char_len == 2) { + _replace_two_byte_wide_char(src[i + 1], &dest[dest_count]); + dest_count += 2; i++; - dest[dest_count++] = 's'; - dest[dest_count++] = 's'; - } else { - dest[dest_count++] = src[i]; } }