From 98565127c60cba3d5b747bb9eb698e06d187f45b Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Sun, 2 Oct 2011 19:32:44 +0200 Subject: [PATCH] extend vlist code to allow keeping the old data structure instead of the new one on updates --- utils.c | 5 +++++ utils.h | 1 + 2 files changed, 6 insertions(+) diff --git a/utils.c b/utils.c index 42d3176..a67a8c9 100644 --- a/utils.c +++ b/utils.c @@ -37,11 +37,16 @@ vlist_add(struct vlist_tree *tree, struct vlist_node *node) anode = avl_find(&tree->avl, key); if (anode) { + if (tree->keep_old) + goto update_only; + old_node = container_of(anode, struct vlist_node, avl); avl_delete(&tree->avl, anode); } avl_insert(&tree->avl, &node->avl); + +update_only: tree->update(tree, node, old_node); } diff --git a/utils.h b/utils.h index c8101e7..ab73930 100644 --- a/utils.h +++ b/utils.h @@ -28,6 +28,7 @@ struct vlist_tree { vlist_update_cb update; int node_offset; + bool keep_old; int version; }; -- 2.25.1