//#include <stdlib.h>
#include "list.h"
#include "../../malloc.h"
+#include "../../string.h"
+#include "../../bootmii_ppc.h"
struct list* list_create()
{
}
/* find last element */
- struct element * iterator = l->head;
+ struct element *iterator = l->head;
while(iterator->next!=NULL) {
iterator = iterator->next;
-// FIXME: untested and unused!!
+// FIXME: untested
u8 list_delete_element(struct list *l, struct element *e)
{
+ struct element *iterator = l->head;
+ struct element *delete = NULL;
+
+ if(!l->head) {
+ return 0;
+ } else {
+ if(l->head->data && !(memcmp(l->head->data, e->data, sizeof(struct element)))) {
+ delete = l->head;
+ l->head = NULL;
+ }
+ }
+
+ while(iterator->next!=NULL) {
+ if(iterator->next->data && !(memcmp(iterator->next->data, e->data, sizeof(struct element)))) {
+ delete = iterator->next;
+ iterator->next = iterator->next->next;
+ break;
+ }
+
+ iterator = iterator->next;
+ }
+
+ if(delete) {
+ free(delete->data);
+ free(delete);
+ }
+
return 1;
}