diff --git a/src/util/src/tutil.c b/src/util/src/tutil.c index b27196da651e0bff321fe5b4e38927f141ff00e6..02498e222212fada5b7a9f39fbcfe5c76494a651 100644 --- a/src/util/src/tutil.c +++ b/src/util/src/tutil.c @@ -57,9 +57,8 @@ int32_t strdequote(char *z) { return j + 1; // only one quote, do nothing } - +// delete escape character: \\, \', \" int32_t strRmquote(char *z, int32_t len){ - // delete escape character: \\, \', \" char delim = 0; int32_t cnt = 0; int32_t j = 0; @@ -82,6 +81,7 @@ int32_t strRmquote(char *z, int32_t len){ z[j] = z[k]; j++; } + z[j] = 0; return j; } diff --git a/src/util/tests/stringTest.cpp b/src/util/tests/stringTest.cpp index 97a994f5446a3bf357fa239c5192957f32aead5b..e304ccaec6753ed627418ea8bf2fd428ae710859 100644 --- a/src/util/tests/stringTest.cpp +++ b/src/util/tests/stringTest.cpp @@ -8,24 +8,40 @@ TEST(testCase, str_rmquote_test) { char t1[] = "\"\".dd"; - int32_t len = strRmquote(t1); - + int32_t len = strRmquote(t1, strlen(t1)); printf("t1:%s, len:%d\n", t1, len); + EXPECT_EQ(3, len); + EXPECT_STRCASEEQ(t1, ".dd"); char t2[] = "\"fsd\\\"fs\".dd"; - len = strRmquote(t2); - + len = strRmquote(t2, strlen(t2)); printf("t2:%s, len:%d\n", t2, len); + EXPECT_EQ(9, len); + EXPECT_STRCASEEQ(t2, "fsd\"fs.dd"); char t3[] = "fs\\_d\\%.d\\d"; - len = strRmquote(t3); - + len = strRmquote(t3, strlen(t3)); printf("t3:%s, len:%d\n", t3, len); + EXPECT_EQ(10, len); + EXPECT_STRCASEEQ(t3, "fs\\_d\\%.dd"); char t4[] = "\"fs\\_d\\%\".dd"; - len = strRmquote(t4); - + len = strRmquote(t4, strlen(t4)); printf("t4:%s, len:%d\n", t4, len); + EXPECT_EQ(10, len); + EXPECT_STRCASEEQ(t4, "fs\\_d\\%.dd"); + + char t5[] = "\"fs\\_d\\%\""; + len = strRmquote(t5, strlen(t5)); + printf("t5:%s, len:%d\n", t5, len); + EXPECT_EQ(7, len); + EXPECT_STRCASEEQ(t5, "fs\\_d\\%"); + + char t6[] = "'fs\\_d\\%'"; + len = strRmquote(t6, strlen(t6)); + printf("t6:%s, len:%d\n", t6, len); + EXPECT_EQ(7, len); + EXPECT_STRCASEEQ(t6, "fs\\_d\\%"); } TEST(testCase, string_dequote_test) {