From 6ab3b52fbde3ab2ac11e66e4d664f67e108f6aee Mon Sep 17 00:00:00 2001 From: Federico Angelilli Date: Wed, 27 Nov 2024 23:19:38 +0100 Subject: Rework resolve functions --- src/block.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'src/block.c') diff --git a/src/block.c b/src/block.c index 1786502..04ad902 100644 --- a/src/block.c +++ b/src/block.c @@ -3,6 +3,7 @@ #include "block.h" #include "util.h" +#include "action.h" #include "any_log.h" extern const block_scheme_t block_text_scheme; @@ -50,6 +51,27 @@ void block_update(block_t *block) } } +bool block_resolve(block_t *block, config_t *config) +{ + if (block->resolved) + return true; + + block->resolved = true; + + for (size_t i = 0; i < EVENT_MAX; i++) { + char *action = (char *)block->actions[i]; + if (action == NULL) continue; + + if (!config_resolve_action(config, action, &block->actions[i])) + return false; + + free(action); + } + + return block->scheme->resolve_fn == NULL + || block->scheme->resolve_fn(block, config); +} + bool block_change(block_t *block, config_t *config, const char *key, const char *value) { extern const config_entry_t block_entries[]; -- cgit v1.2.3