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.
This commit is contained in:
Willy Tarreau 2025-09-16 10:41:19 +02:00
parent 2d6b5c7a60
commit c058cc5ddf

View File

@ -7247,20 +7247,18 @@ int restore_env(void)
const char *copy_file_name(const char *name) const char *copy_file_name(const char *name)
{ {
struct file_name_node *file; struct file_name_node *file;
struct ceb_node *node; struct file_name_node *file2;
size_t len; size_t len;
if (!name) if (!name)
return NULL; return NULL;
HA_RWLOCK_RDLOCK(OTHER_LOCK, &file_names.lock); 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); HA_RWLOCK_RDUNLOCK(OTHER_LOCK, &file_names.lock);
if (node) { if (file)
file = container_of(node, struct file_name_node, node);
return file->name; return file->name;
}
len = strlen(name); len = strlen(name);
file = malloc(sizeof(struct file_name_node) + len + 1); 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); memcpy(file->name, name, len + 1);
HA_RWLOCK_WRLOCK(OTHER_LOCK, &file_names.lock); 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); HA_RWLOCK_WRUNLOCK(OTHER_LOCK, &file_names.lock);
if (node != &file->node) { if (file2 != file) {
/* the node was created in between */ /* the node was created in between */
free(file); free(file);
file = container_of(node, struct file_name_node, node); file = file2;
} }
return file->name; return file->name;
} }
@ -7284,13 +7282,11 @@ const char *copy_file_name(const char *name)
void free_all_file_names() void free_all_file_names()
{ {
struct file_name_node *file; struct file_name_node *file;
struct ceb_node *node;
HA_RWLOCK_WRLOCK(OTHER_LOCK, &file_names.lock); HA_RWLOCK_WRLOCK(OTHER_LOCK, &file_names.lock);
while ((node = cebus_imm_first(&file_names.root))) { while ((file = cebus_item_first(&file_names.root, node, name, struct file_name_node))) {
file = container_of(node, struct file_name_node, node); cebus_item_delete(&file_names.root, node, name, file);
cebus_imm_delete(&file_names.root, node);
free(file); free(file);
} }