summaryrefslogtreecommitdiffstats
path: root/src/libnetdata/config/appconfig_traversal.c
blob: f26def2c2363697b476e054ac3ece10d57685b95 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
// SPDX-License-Identifier: GPL-3.0-or-later

#include "appconfig_internals.h"

size_t appconfig_foreach_value_in_section(struct config *root, const char *section, appconfig_foreach_value_cb_t cb, void *data) {
    size_t used = 0;
    struct config_section *co = appconfig_section_find(root, section);
    if(co) {
        SECTION_LOCK(co);
        struct config_option *cv;
        for(cv = co->values; cv ; cv = cv->next) {
            if(cb(data, string2str(cv->name), string2str(cv->value))) {
                cv->flags |= CONFIG_VALUE_USED;
                used++;
            }
        }
        SECTION_UNLOCK(co);
    }

    return used;
}