return node;
}
+list_node_t *list_insert_before(list_t *list, list_node_t *before, void *data) {
+ list_node_t *node;
+
+ node = list_alloc_node();
+
+ node->data = data;
+ node->next = before;
+ node->prev = before->prev;
+ before->prev = node;
+
+ if(node->prev)
+ node->prev->next = node;
+ else
+ list->head = node;
+
+ list->count++;
+
+ return node;
+}
+
void list_unlink_node(list_t *list, list_node_t *node) {
if(node->prev)
node->prev->next = node->next;
extern list_node_t *list_insert_head(list_t *, void *);
extern list_node_t *list_insert_tail(list_t *, void *);
extern list_node_t *list_insert_after(list_t *, list_node_t *, void *);
+extern list_node_t *list_insert_before(list_t *, list_node_t *, void *);
extern void list_unlink_node(list_t *, list_node_t *);
extern void list_delete_node(list_t *, list_node_t *);
} else {
found = xmalloc_and_zero(sizeof *found);
found->name = xstrdup(name);
- list_insert_after(&node_list, i, found);
+ fprintf(stderr, "Inserting %s before %s\n", found->name, node->name);
+ list_insert_before(&node_list, i, found);
+ changed = true;
break;
}
}
found = xmalloc_and_zero(sizeof *found);
found->name = xstrdup(name);
list_insert_tail(&node_list, found);
+ changed = true;
}
found->known = true;