@@ -215,6 +215,15 @@ struct string_list_item *string_list_append(struct string_list *list,
list->strdup_strings ? xstrdup(string) : (char *)string);
}
+void string_list_append_all(struct string_list *list,
+ const struct string_list *append_list)
+{
+ struct string_list_item *item;
+ ALLOC_GROW(list->items, list->nr + append_list->nr, list->alloc);
+ for_each_string_list_item(item, append_list)
+ string_list_append(list, item->string);
+}
+
/*
* Encapsulate the compare function pointer because ISO C99 forbids
* casting from void * to a function pointer and vice versa.
@@ -208,6 +208,13 @@ struct string_list_item *string_list_append(struct string_list *list, const char
*/
struct string_list_item *string_list_append_nodup(struct string_list *list, char *string);
+/**
+ * Add all strings in append_list to list. If list->strdup_string is
+ * set, then each string is copied; otherwise the new string_list_entry
+ * refers to the entry in the append_list.
+ */
+void string_list_append_all(struct string_list *list, const struct string_list *append_list);
+
/**
* Sort the list's entries by string value in `strcmp()` order.
*/
In a future patch, we'll need to take one string_list and append it to the end of another. Create the `string_list_append_all` function which does this. Signed-off-by: Denton Liu <liu.denton@gmail.com> --- string-list.c | 9 +++++++++ string-list.h | 7 +++++++ 2 files changed, 16 insertions(+)