summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorantirez <antirez@gmail.com>2015-07-25 17:05:20 +0200
committerantirez <antirez@gmail.com>2015-07-25 17:05:20 +0200
commit11425c89cf4a2c36941ac7b85c5f4d74636d4e45 (patch)
treef330d4ed3a6d38354b269118ede56a9fdc28ed5f
parent6b836b6b4148a3623e35807e998097865b9ebb3a (diff)
downloadredis-11425c89cf4a2c36941ac7b85c5f4d74636d4e45.tar.gz
SDS: sdsjoinsds() call ported from antirez/sds fork.
-rw-r--r--src/sds.c12
-rw-r--r--src/sds.h1
2 files changed, 13 insertions, 0 deletions
diff --git a/src/sds.c b/src/sds.c
index d0649dcf7..c1c78e285 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 <stdio.h>
#include "testhelp.h"
diff --git a/src/sds.h b/src/sds.h
index 1fcbe1155..7cc8e9c14 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);