From 8b435b76d68dd8f11808f0cff4d8998d2be48f4c Mon Sep 17 00:00:00 2001 From: Laurent Bercot Date: Tue, 2 Jul 2024 18:54:34 +0000 Subject: Prepare for 0.0.2.0; add shibari-cache-config Signed-off-by: Laurent Bercot --- src/config/conftree.c | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 src/config/conftree.c (limited to 'src/config/conftree.c') diff --git a/src/config/conftree.c b/src/config/conftree.c new file mode 100644 index 0000000..573646a --- /dev/null +++ b/src/config/conftree.c @@ -0,0 +1,51 @@ +/* ISC license. */ + +#include +#include +#include + +#include "shibari-cache-config-internal.h" + +static repo conftree = \ +{ \ + .ga = GENALLOC_ZERO, \ + .tree = AVLTREE_INIT(8, 3, 8, &node_dtok, &node_cmp, &conftree.ga), \ + .storage = &g.storage \ +} ; + +void confnode_start (node *node, char const *key, size_t filepos, uint32_t line) +{ + return node_start(&g.storage, node, key, filepos, line) ; +} + +void confnode_add (node *node, char const *s, size_t len) +{ + return node_add(&g.storage, node, s, len) ; +} + +node const *conftree_search (char const *key) +{ + return repo_search(&conftree, key) ; +} + +void conftree_add (node const *node) +{ + return repo_add(&conftree, node) ; +} + +void conftree_update (node const *node) +{ + return repo_update(&conftree, node) ; +} + +static int confnode_write (uint32_t d, unsigned int h, void *data) +{ + node *nod = genalloc_s(node, &conftree.ga) + d ; + (void)h ; + return cdbmake_add((cdbmaker *)data, conftree.storage->s + nod->key, nod->keylen, conftree.storage->s + nod->data, nod->datalen) ; +} + +int conftree_write (cdbmaker *cm) +{ + return avltree_iter(&conftree.tree, &confnode_write, cm) ; +} -- cgit v1.3.1