From c058cc5ddf7bdfe3e3298ec541089acd76530c4c Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Tue, 16 Sep 2025 10:41:19 +0200 Subject: [PATCH] CLEANUP: tools: use the item API for the file names tree The file names tree uses the immediate cebtree API, better use the item one which is more expressive and safer. --- src/tools.c | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/src/tools.c b/src/tools.c index 929d93512..3acbc56c7 100644 --- a/src/tools.c +++ b/src/tools.c @@ -7247,20 +7247,18 @@ int restore_env(void) const char *copy_file_name(const char *name) { struct file_name_node *file; - struct ceb_node *node; + struct file_name_node *file2; size_t len; if (!name) return NULL; HA_RWLOCK_RDLOCK(OTHER_LOCK, &file_names.lock); - node = cebus_imm_lookup(&file_names.root, name); + file = cebus_item_lookup(&file_names.root, node, name, name, struct file_name_node); HA_RWLOCK_RDUNLOCK(OTHER_LOCK, &file_names.lock); - if (node) { - file = container_of(node, struct file_name_node, node); + if (file) return file->name; - } len = strlen(name); file = malloc(sizeof(struct file_name_node) + len + 1); @@ -7269,13 +7267,13 @@ const char *copy_file_name(const char *name) memcpy(file->name, name, len + 1); HA_RWLOCK_WRLOCK(OTHER_LOCK, &file_names.lock); - node = cebus_imm_insert(&file_names.root, &file->node); + file2 = cebus_item_insert(&file_names.root, node, name, file); HA_RWLOCK_WRUNLOCK(OTHER_LOCK, &file_names.lock); - if (node != &file->node) { + if (file2 != file) { /* the node was created in between */ free(file); - file = container_of(node, struct file_name_node, node); + file = file2; } return file->name; } @@ -7284,13 +7282,11 @@ const char *copy_file_name(const char *name) void free_all_file_names() { struct file_name_node *file; - struct ceb_node *node; HA_RWLOCK_WRLOCK(OTHER_LOCK, &file_names.lock); - while ((node = cebus_imm_first(&file_names.root))) { - file = container_of(node, struct file_name_node, node); - cebus_imm_delete(&file_names.root, node); + while ((file = cebus_item_first(&file_names.root, node, name, struct file_name_node))) { + cebus_item_delete(&file_names.root, node, name, file); free(file); } -- 2.47.3