- add FIXME. Perhaps somebody is interrested in looking into this one.
  We would try to be clever and compare the *data instead of the *elt.

Somethink like this might be of more general use:
/* Unlink arbitrary element from the list that contains data */
void llist_unlink_data(llist_t **head, void *data)
{
    llist_t *elt;

    for (elt = *head; elt; elt = elt->link) {
        if (elt->data == data) {
            llist_unlink(elt);
            return;
        }
    }
}

1 file changed