projects
/
tinc
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
9735569
)
Allow inserting items in the middle of a list.
author
Guus Sliepen
<guus@tinc-vpn.org>
Sun, 15 May 2011 14:29:54 +0000
(16:29 +0200)
committer
Guus Sliepen
<guus@tinc-vpn.org>
Sun, 15 May 2011 14:29:54 +0000
(16:29 +0200)
src/list.c
patch
|
blob
|
history
src/list.h
patch
|
blob
|
history
diff --git
a/src/list.c
b/src/list.c
index
a26c58d
..
9d4920b
100644
(file)
--- a/
src/list.c
+++ b/
src/list.c
@@
-91,6
+91,26
@@
list_node_t *list_insert_tail(list_t *list, void *data) {
return node;
}
return node;
}
+list_node_t *list_insert_after(list_t *list, list_node_t *after, void *data) {
+ list_node_t *node;
+
+ node = list_alloc_node();
+
+ node->data = data;
+ node->next = after->next;
+ node->prev = after;
+ after->next = node;
+
+ if(node->next)
+ node->next->prev = node;
+ else
+ list->tail = node;
+
+ list->count++;
+
+ return node;
+}
+
void list_unlink_node(list_t *list, list_node_t *node) {
if(node->prev)
node->prev->next = node->next;
void list_unlink_node(list_t *list, list_node_t *node) {
if(node->prev)
node->prev->next = node->next;
diff --git
a/src/list.h
b/src/list.h
index
197fbb8
..
a458039
100644
(file)
--- a/
src/list.h
+++ b/
src/list.h
@@
-54,6
+54,7
@@
extern void list_free_node(list_t *, list_node_t *);
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_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 void list_unlink_node(list_t *, list_node_t *);
extern void list_delete_node(list_t *, list_node_t *);
extern void list_unlink_node(list_t *, list_node_t *);
extern void list_delete_node(list_t *, list_node_t *);