diff options
| author | Federico Angelilli <code@fedang.net> | 2024-11-27 23:19:38 +0100 |
|---|---|---|
| committer | Federico Angelilli <code@fedang.net> | 2024-11-27 23:19:38 +0100 |
| commit | 6ab3b52fbde3ab2ac11e66e4d664f67e108f6aee (patch) | |
| tree | 838f5231fffc6cacdd65762443fd56bbe0f275f6 /src/block.c | |
| parent | 2582279bc1046954702311c300294c5fd9f3ae0c (diff) | |
Rework resolve functions
Diffstat (limited to 'src/block.c')
| -rw-r--r-- | src/block.c | 22 |
1 files changed, 22 insertions, 0 deletions
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[]; |
