From b0e9c02876a367f96719cc014a245ef87f73146c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Ekl=C3=B6f?= Date: Sat, 20 Jun 2020 21:45:43 +0200 Subject: [PATCH] config-verify: add conf_verify_list() --- config-verify.c | 20 ++++++++++++++++++++ config-verify.h | 2 ++ 2 files changed, 22 insertions(+) diff --git a/config-verify.c b/config-verify.c index 862fc33..7e87d42 100644 --- a/config-verify.c +++ b/config-verify.c @@ -50,6 +50,26 @@ conf_verify_int(keychain_t *chain, const struct yml_node *node) return false; } +bool +conf_verify_list(keychain_t *chain, const struct yml_node *node, + bool (*verify)(keychain_t *chain, const struct yml_node *node)) +{ + if (!yml_is_list(node)) { + LOG_ERR("%s: value is not a list", conf_err_prefix(chain, node)); + return false; + } + + for (struct yml_list_iter iter = yml_list_iter(node); + iter.node != NULL; + yml_list_next(&iter)) + { + if (!verify(chain, iter.node)) + return false; + } + + return true; +} + bool conf_verify_enum(keychain_t *chain, const struct yml_node *node, const char *values[], size_t count) diff --git a/config-verify.h b/config-verify.h index 24d0256..44a6a66 100644 --- a/config-verify.h +++ b/config-verify.h @@ -35,6 +35,8 @@ bool conf_verify_int(keychain_t *chain, const struct yml_node *node); bool conf_verify_enum(keychain_t *chain, const struct yml_node *node, const char *values[], size_t count); +bool conf_verify_list(keychain_t *chain, const struct yml_node *node, + bool (*verify)(keychain_t *chain, const struct yml_node *node)); bool conf_verify_dict(keychain_t *chain, const struct yml_node *node, const struct attr_info info[]); /* NULL-terminated list */