5 void list_append(m_list
*list
, void *item
) {
8 elem
= m_malloc(sizeof(*elem
));
16 elem
->prev
= list
->last
;
17 list
->last
->next
= elem
;
23 m_list
*ret
= m_malloc(sizeof(m_list
));
24 ret
->first
= ret
->last
= NULL
;
28 void * list_remove(m_list_elem
*elem
) {
29 void *item
= elem
->item
;
30 m_list
*list
= elem
->list
;
31 if (list
->first
== elem
)
33 list
->first
= elem
->next
;
35 if (list
->last
== elem
)
37 list
->last
= elem
->prev
;
41 elem
->prev
->next
= elem
->next
;
45 elem
->next
->prev
= elem
->prev
;