From 00ad6b1d8e946069963bc2ab09f4f01c8e81ab03 Mon Sep 17 00:00:00 2001 From: Harry Jeffery Date: Sun, 18 Aug 2019 14:54:26 +0100 Subject: imv: Add bind command --- src/list.c | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) (limited to 'src/list.c') diff --git a/src/list.c b/src/list.c index ba5ce87..21f2f74 100644 --- a/src/list.c +++ b/src/list.c @@ -1,5 +1,7 @@ #include "list.h" +#include + struct list *list_create(void) { struct list *list = malloc(sizeof *list); @@ -107,4 +109,29 @@ int list_find(struct list *list, int (*cmp)(const void *, const void *), const v return -1; } +char *list_to_string(struct list *list, const char *sep, size_t start) +{ + size_t len = 0; + size_t cap = 512; + char *buf = malloc(cap); + buf[0] = 0; + + size_t sep_len = strlen(sep); + for (size_t i = start; i < list->len; ++i) { + size_t item_len = strlen(list->items[i]); + if (len + item_len + sep_len >= cap) { + cap *= 2; + buf = realloc(buf, cap); + assert(buf); + } + + strncat(buf, list->items[i], cap - 1); + len += item_len; + + strncat(buf, sep, cap - 1); + len += sep_len; + } + return buf; +} + /* vim:set ts=2 sts=2 sw=2 et: */ -- cgit v1.2.3