aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMartin Willi <martin@revosec.ch>2012-09-18 12:43:31 +0200
committerMartin Willi <martin@revosec.ch>2012-09-18 17:11:02 +0200
commit5f9d62fb915a712cfdd8791dc5808db7f4f66e99 (patch)
treeb992a89300bf5040ee63c9f98c0e6125a675c182 /src
parent8c19323c370187b4181e1077053e231d52dd2107 (diff)
downloadstrongswan-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.c22
-rw-r--r--src/libstrongswan/utils/linked_list.h13
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_ @}*/