From 856f31bd21d6ed4762e855a59dcf8873e485999d Mon Sep 17 00:00:00 2001 From: Bastian Dehn Date: Tue, 16 Jul 2024 22:41:20 +0200 Subject: [PATCH] add escape string --- src/main.c | 11 +++++++++-- src/rename.c | 2 ++ tests/rename_tests.c | 4 ++-- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/src/main.c b/src/main.c index b851518..ecd66ae 100644 --- a/src/main.c +++ b/src/main.c @@ -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; } diff --git a/src/rename.c b/src/rename.c index b90552c..150db81 100644 --- a/src/rename.c +++ b/src/rename.c @@ -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; diff --git a/tests/rename_tests.c b/tests/rename_tests.c index fd38ea6..649f5dc 100644 --- a/tests/rename_tests.c +++ b/tests/rename_tests.c @@ -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() -- 2.39.5