From: Nils Durner Date: Fri, 13 Nov 2009 21:44:58 +0000 (+0000) Subject: GNUNET_CONTAINER_slist_append X-Git-Tag: initial-import-from-subversion-38251~23090 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=6e82eafc0400a66cebcfbcc05429ffbd5acf55a1;p=oweals%2Fgnunet.git GNUNET_CONTAINER_slist_append --- diff --git a/src/include/gnunet_container_lib.h b/src/include/gnunet_container_lib.h index 4debd2ccf..1f707e44c 100644 --- a/src/include/gnunet_container_lib.h +++ b/src/include/gnunet_container_lib.h @@ -912,6 +912,15 @@ void GNUNET_CONTAINER_slist_add (struct GNUNET_CONTAINER_SList *l, const void *buf, size_t len); +/** + * Append a singly linked list to another + * @param dst list to append to + * @param src source + */ +void +GNUNET_CONTAINER_slist_append (struct GNUNET_CONTAINER_SList *dst, struct GNUNET_CONTAINER_SList *src); + + /** * Create a new singly linked list * @return the new list diff --git a/src/util/container_slist.c b/src/util/container_slist.c index ab547f313..fb9ab5558 100644 --- a/src/util/container_slist.c +++ b/src/util/container_slist.c @@ -145,6 +145,29 @@ GNUNET_CONTAINER_slist_add (struct GNUNET_CONTAINER_SList *l, } +/** + * Append a singly linked list to another + * @param dst list to append to + * @param src source + */ +void +GNUNET_CONTAINER_slist_append (struct GNUNET_CONTAINER_SList *dst, struct GNUNET_CONTAINER_SList *src) +{ + struct GNUNET_CONTAINER_SList_Iterator *i; + + for (i = GNUNET_CONTAINER_slist_begin (src); GNUNET_CONTAINER_slist_end (i) != + GNUNET_YES; GNUNET_CONTAINER_slist_next (i)) + + { + GNUNET_CONTAINER_slist_add (dst, + (i->elem->disp == GNUNET_CONTAINER_SLIST_DISPOSITION_STATIC) ? GNUNET_CONTAINER_SLIST_DISPOSITION_STATIC + : GNUNET_CONTAINER_SLIST_DISPOSITION_TRANSIENT, i->elem->elem, + i->elem->len); + } + GNUNET_CONTAINER_slist_iter_destroy (i); +} + + /** * Create a new singly linked list * @return the new list