]> gitweb.hhaalo.de Git - mv_none_space.git/commitdiff
add escape string
authorBastian Dehn <hhaalo@arcor.de>
Tue, 16 Jul 2024 20:41:20 +0000 (22:41 +0200)
committerBastian Dehn <hhaalo@arcor.de>
Tue, 16 Jul 2024 20:41:20 +0000 (22:41 +0200)
src/main.c
src/rename.c
tests/rename_tests.c

index b85151861ae06653d301fe16689684a032e7a4da..ecd66ae8b25fcb89576d703d7bf9f6ecfc161700 100644 (file)
@@ -8,6 +8,8 @@
 
 void rename_files(const char* dir_path, rename_func_ptr renamefunc)
 {
+       char* input_filename = malloc(sizeof(char) * STR_MAX_LENGTH);
+       memset(input_filename, 0, STR_MAX_LENGTH);
        char* output_filename = malloc(sizeof(char) * STR_MAX_LENGTH);
        memset(output_filename, 0, STR_MAX_LENGTH);
        glob_t files;
@@ -27,15 +29,20 @@ void rename_files(const char* dir_path, rename_func_ptr renamefunc)
                        rename(files.gl_pathv[i], output_filename);
                }
 
-               if (S_ISDIR(statbuf.st_mode))
-                       rename_files(output_filename, renamefunc);
+               if (S_ISDIR(statbuf.st_mode)) {
+                       escape_str(output_filename, input_filename);
+                       rename_files(input_filename, renamefunc);
+               }
 
                memset(output_filename, 0, STR_MAX_LENGTH);
+               memset(input_filename, 0, STR_MAX_LENGTH);
        }
 
        globfree(&files);
        free(output_filename);
        output_filename = NULL;
+       free(input_filename);
+       input_filename = NULL;
        free(pattern);
        pattern = NULL;
 }
index b90552c330f7e7ae8a1f7bbd98148e8c99c007e6..150db81c595aa388fa99ffe65363a55d88cccd49 100644 (file)
@@ -14,6 +14,8 @@ void escape_str(char* src, char* dst)
                case 0x29:
                case 0x5b:
                case 0x5d:
+               case 0x7b:
+               case 0x7d:
                        dst[dstcounter++] = '\\';
                        dst[dstcounter++] = src[i];
                        break;
index fd38ea6f87411e55488bae624a55d1e69e8333aa..649f5dcab3675f84b9b61b2c390d68f0370c8e17 100644 (file)
@@ -130,11 +130,11 @@ void rename_point_case(void **state)
 void escape_str_test(void **state)
 {
        char* output = (char*) *state;
-       char* input = "Dies ist [die] (Geschichte) von";
+       char* input = "Dies ist [die] (Geschichte) {von}";
 
        escape_str(input, output);
 
-       assert_string_equal(output, "Dies\\ ist\\ \\[die\\]\\ \\(Geschichte\\)\\ von");
+       assert_string_equal(output, "Dies\\ ist\\ \\[die\\]\\ \\(Geschichte\\)\\ \\{von\\}");
 }
 
 int main()