diff options
author | Martin Willi <martin@revosec.ch> | 2012-09-18 12:43:31 +0200 |
---|---|---|
committer | Martin Willi <martin@revosec.ch> | 2012-09-18 17:11:02 +0200 |
commit | 5f9d62fb915a712cfdd8791dc5808db7f4f66e99 (patch) | |
tree | b992a89300bf5040ee63c9f98c0e6125a675c182 /src | |
parent | 8c19323c370187b4181e1077053e231d52dd2107 (diff) | |
download | strongswan-5f9d62fb915a712cfdd8791dc5808db7f4f66e99.tar.bz2 strongswan-5f9d62fb915a712cfdd8791dc5808db7f4f66e99.tar.xz |
Add a linked list constructor taking items from a vararg list
Diffstat (limited to 'src')
-rw-r--r-- | src/libstrongswan/utils/linked_list.c | 22 | ||||
-rw-r--r-- | src/libstrongswan/utils/linked_list.h | 13 |
2 files changed, 33 insertions, 2 deletions
diff --git a/src/libstrongswan/utils/linked_list.c b/src/libstrongswan/utils/linked_list.c index 6b5f5f81a..1ff80999b 100644 --- a/src/libstrongswan/utils/linked_list.c +++ b/src/libstrongswan/utils/linked_list.c @@ -16,6 +16,7 @@ */ #include <stdlib.h> +#include <stdarg.h> #include "linked_list.h" @@ -591,3 +592,24 @@ linked_list_t *linked_list_create_from_enumerator(enumerator_t *enumerator) return list; } + +/* + * See header. + */ +linked_list_t *linked_list_create_with_items(void *item, ...) +{ + linked_list_t *list; + va_list args; + + list = linked_list_create(); + + va_start(args, item); + while (item) + { + list->insert_last(list, item); + item = va_arg(args, void*); + } + va_end(args); + + return list; +} diff --git a/src/libstrongswan/utils/linked_list.h b/src/libstrongswan/utils/linked_list.h index b5b29e4c3..1b5518480 100644 --- a/src/libstrongswan/utils/linked_list.h +++ b/src/libstrongswan/utils/linked_list.h @@ -302,9 +302,18 @@ linked_list_t *linked_list_create(void); /** * Creates a linked list from an enumerator. * - * @enumerator enumerator over void*, gets destroyed - * @return linked_list_t object, containing enumerated values + * @param enumerator enumerator over void*, gets destroyed + * @return linked_list_t object, containing enumerated values */ linked_list_t *linked_list_create_from_enumerator(enumerator_t *enumerator); +/** + * Creates a linked list from a NULL terminated vararg list of items. + * + * @param first first item + * @param ... subsequent items, terminated by NULL + * @return linked_list_t object, containing passed items + */ +linked_list_t *linked_list_create_with_items(void *first, ...); + #endif /** LINKED_LIST_H_ @}*/ |