#include <string.h>
#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;
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];
}
}