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.
+ */
+struct ll *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 NULL;
+}