* Jonathan McDowell <noodles@earth.li>
*
* Copyright 2000-2002 Project Purple
+ *
+ * $Id: ll.c,v 1.5 2003/10/04 10:21:41 noodles Exp $
*/
#include <assert.h>
return count;
}
+
+/**
+ * llfree - Frees a linked list.
+ * @curll: The list to free.
+ * @objectfree: A pointer to a free function for the object.
+ *
+ * Walks through a list and free it. If a function is provided for
+ * objectfree then it's called for each element to free them, if it's NULL
+ * just the list is freed.
+ */
+void llfree(struct ll *curll, void (*objectfree) (void *object))
+{
+ struct ll *nextll;
+
+ while (curll != NULL) {
+ nextll = curll->next;
+ if (curll->object != NULL && objectfree != NULL) {
+ objectfree(curll->object);
+ curll->object = NULL;
+ }
+ free(curll);
+ curll = nextll;
+ }
+ return;
+}