if (!move->prev) list->top = move;
}
+void
+list_remove(d_list_t *list, void *data)
+{
+ d_list_it_t *it = list_find(list, data);
+ if (it) list_delete_link(list, it);
+}
+
int
list_length(d_list_t *list)
{
it = it->next;
return it;
}
+
+d_list_it_t*
+list_find(d_list_t *list, void *data)
+{
+ d_list_it_t *it;
+
+ for (it = list->top; it; it = it->next)
+ if (it->data == data) return it;
+ return NULL;
+}