From cbaeb60241cd69c455b64ffecb818274d830f4cb Mon Sep 17 00:00:00 2001 From: Martin Mares Date: Fri, 28 Apr 2006 10:35:38 +0200 Subject: [PATCH] Added a function for joining an array of strings, using an optional separator. --- lib/mempool-str.c | 25 +++++++++++++++++++++++++ lib/mempool.h | 1 + lib/mempool.t | 2 ++ 3 files changed, 28 insertions(+) diff --git a/lib/mempool-str.c b/lib/mempool-str.c index 96bc07da..62fb18ba 100644 --- a/lib/mempool-str.c +++ b/lib/mempool-str.c @@ -61,6 +61,28 @@ mp_multicat(struct mempool *p, ...) return buf; } +char * +mp_strjoin(struct mempool *p, char **a, uns n, uns sep) +{ + uns sizes[n]; + uns len = 1; + for (uns i=0; i @@ -71,6 +93,9 @@ int main(void) char *s = mp_strdup(p, "12345"); char *c = mp_multicat(p, "<<", s, ">>", NULL); puts(c); + char *a[] = { "bugs", "gnats", "insects" }; + puts(mp_strjoin(p, a, 3, '.')); + puts(mp_strjoin(p, a, 3, 0)); return 0; } diff --git a/lib/mempool.h b/lib/mempool.h index 95727688..6f6a7ffe 100644 --- a/lib/mempool.h +++ b/lib/mempool.h @@ -70,6 +70,7 @@ mp_strcat(struct mempool *mp, char *x, char *y) { return mp_multicat(mp, x, y, NULL); } +char *mp_strjoin(struct mempool *p, char **a, uns n, uns sep); /* mempool-fmt.c */ diff --git a/lib/mempool.t b/lib/mempool.t index 0a3ccc41..7a1f2978 100644 --- a/lib/mempool.t +++ b/lib/mempool.t @@ -5,3 +5,5 @@ Out: Run: obj/lib/mempool-str-t Out: <<12345>> + bugs.gnats.insects + bugsgnatsinsects -- 2.39.2