diff options
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[]; |
