diff --git a/port/linux/test/strs-test.cpp b/port/linux/test/strs-test.cpp index 2d39662a8..c05a9b52e 100644 --- a/port/linux/test/strs-test.cpp +++ b/port/linux/test/strs-test.cpp @@ -73,3 +73,11 @@ TEST(strs, format) { TEST(strs, mem) { EXPECT_EQ(pikaMemNow(), mem); } + +TEST(strs, arg_strAppend) { + Arg* str_arg = arg_setStr(NULL, (char*)"", (char*)"a"); + str_arg = arg_strAppend(str_arg, (char*)"b"); + EXPECT_STREQ(arg_getStr(str_arg), (char*)"ab"); + arg_deinit(str_arg); + EXPECT_EQ(pikaMemNow(), 0); +} diff --git a/src/dataStrs.c b/src/dataStrs.c index d8811b59f..3608f9019 100644 --- a/src/dataStrs.c +++ b/src/dataStrs.c @@ -113,3 +113,11 @@ char* strsFormat(Args* buffs, uint16_t buffSize, const char* fmt, ...) { return res; } +Arg* arg_strAppend(Arg* arg_in, char* str_to_append){ + Args* buffs = New_strBuff(); + char* str_out = strsAppend(buffs, arg_getStr(arg_in), str_to_append); + Arg* arg_out = arg_setStr(arg_in, "", str_out); + arg_deinit(arg_in); + args_deinit(buffs); + return arg_out; +} \ No newline at end of file diff --git a/src/dataStrs.h b/src/dataStrs.h index b3e7445ab..59a9b1413 100644 --- a/src/dataStrs.h +++ b/src/dataStrs.h @@ -39,4 +39,5 @@ char* strsRemovePrefix(Args* buffs, char* inputStr, char* prefix); char* strsAppend(Args* buffs, char* strOrigin, char* strAppend); char* strsFormat(Args* buffs, uint16_t buffSize, const char* fmt, ...); char* strsGetDirectStr(Args* buffs, char* argPath); +Arg* arg_strAppend(Arg* arg_in, char* str_to_append); #endif