1 /* SPDX-License-Identifier: BSD-3-Clause
2 * Copyright 2018, Olivier MATZ <zer0@droids-corp.org>
11 #include <ecoli_malloc.h>
12 #include <ecoli_config.h>
13 #include <ecoli_node.h>
14 #include <ecoli_node_helper.h>
17 ec_node_config_node_list_to_table(const struct ec_config *config,
20 struct ec_node **table = NULL;
21 struct ec_config *child;
31 if (ec_config_get_type(config) != EC_CONFIG_TYPE_LIST) {
37 TAILQ_FOREACH(child, &config->list, next) {
38 if (ec_config_get_type(child) != EC_CONFIG_TYPE_NODE) {
45 table = ec_malloc(n * sizeof(*table));
50 TAILQ_FOREACH(child, &config->list, next) {
51 table[n] = ec_node_clone(child->node);
61 for (i = 0; i < n; i++)
62 ec_node_free(table[i]);
70 ec_node_config_node_list_from_vargs(va_list ap)
72 struct ec_config *list = NULL;
73 struct ec_node *node = va_arg(ap, struct ec_node *);
75 list = ec_config_list();
79 for (; node != EC_NODE_ENDLIST; node = va_arg(ap, struct ec_node *)) {
83 if (ec_config_list_add(list, ec_config_node(node)) < 0)
90 for (; node != EC_NODE_ENDLIST; node = va_arg(ap, struct ec_node *))