]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
CLEANUP: tools: use the item API for the file names tree
authorWilly Tarreau <w@1wt.eu>
Tue, 16 Sep 2025 08:41:19 +0000 (10:41 +0200)
committerWilly Tarreau <w@1wt.eu>
Tue, 16 Sep 2025 08:41:19 +0000 (10:41 +0200)
The file names tree uses the immediate cebtree API, better use the
item one which is more expressive and safer.

src/tools.c

index 929d935128d966279c0fa19fdce41e1885736a06..3acbc56c759e94be0096d15b2d7f2ca32621bba3 100644 (file)
@@ -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);
        }