diff --git a/src/sds.c b/src/sds.c index d0649dcf..c1c78e28 100644 --- a/src/sds.c +++ b/src/sds.c @@ -1075,6 +1075,18 @@ sds sdsjoin(char **argv, int argc, char *sep) { return join; } +/* Like sdsjoin, but joins an array of SDS strings. */ +sds sdsjoinsds(sds *argv, int argc, const char *sep, size_t seplen) { + sds join = sdsempty(); + int j; + + for (j = 0; j < argc; j++) { + join = sdscatsds(join, argv[j]); + if (j != argc-1) join = sdscatlen(join,sep,seplen); + } + return join; +} + #if defined(REDIS_TEST) || defined(SDS_TEST_MAIN) #include #include "testhelp.h" diff --git a/src/sds.h b/src/sds.h index 1fcbe115..7cc8e9c1 100644 --- a/src/sds.h +++ b/src/sds.h @@ -247,6 +247,7 @@ sds sdscatrepr(sds s, const char *p, size_t len); sds *sdssplitargs(const char *line, int *argc); sds sdsmapchars(sds s, const char *from, const char *to, size_t setlen); sds sdsjoin(char **argv, int argc, char *sep); +sds sdsjoinsds(sds *argv, int argc, const char *sep, size_t seplen); /* Low level functions exposed to the user API */ sds sdsMakeRoomFor(sds s, size_t addlen);