From 2103b6b1c2d9d07e207bea3abde001efeede402d Mon Sep 17 00:00:00 2001 From: Federico Angelilli Date: Tue, 19 Nov 2024 01:22:23 +0100 Subject: Improve error reporting --- src/blocks/date.c | 8 ++++---- src/blocks/fs.c | 31 +++++++++++++++---------------- src/blocks/group.c | 1 - src/blocks/ram.c | 29 ++++++++++++++--------------- src/blocks/script.c | 8 ++++---- src/blocks/text.c | 8 ++++---- 6 files changed, 41 insertions(+), 44 deletions(-) (limited to 'src/blocks') diff --git a/src/blocks/date.c b/src/blocks/date.c index 17441a6..4fcdb2a 100644 --- a/src/blocks/date.c +++ b/src/blocks/date.c @@ -47,18 +47,19 @@ static void block_date_clean(block_t *block) free(date->block.text); } -static bool block_date_validate(block_t *block, const block_scheme_t *scheme) +static int block_date_validate(block_t *block, const block_scheme_t *scheme) { block_date_t *date = (block_date_t *)block; + int errors = 0; if (date->block.text == NULL) { log_error("Block '%s' requires key '%s'", block->label, "text"); - return false; + errors++; } date->format = date->block.text; date->block.text = strcopy("?"); - return true; + return errors; } const block_scheme_t block_date_scheme = { @@ -67,5 +68,4 @@ const block_scheme_t block_date_scheme = { .alloc_fn = block_date_alloc, .clean_fn = block_date_clean, .validate_fn = block_date_validate, - .resolve_fn = NULL, }; diff --git a/src/blocks/fs.c b/src/blocks/fs.c index 188f14a..7163cc5 100644 --- a/src/blocks/fs.c +++ b/src/blocks/fs.c @@ -110,40 +110,40 @@ static void block_fs_clean(block_t *block) free(fs->block.text); } -static bool block_fs_validate(block_t *block, const block_scheme_t *scheme) +static int block_fs_validate(block_t *block, const block_scheme_t *scheme) { block_fs_t *fs = (block_fs_t *)block; + int errors = 0; if (fs->block.text == NULL) { log_error("Block '%s' requires key '%s'", block->label, "text"); - return false; + errors++; } if (!format_init(&fs->format, fs->block.text, '%')) { log_error("Block '%s' has an invalid format", block->label); - return false; - } - - int marked = format_remark(&fs->format, block->label, block_fs_options); - if (marked < 0) - return false; + errors++; + } else { + int marked = format_remark(&fs->format, block->label, block_fs_options); + if (marked < 0) + errors += -marked; - if (marked == 0) { - log_warn("Block '%s' does not use any fs option", block->label); + if (marked == 0) { + log_warn("Block '%s' does not use any fs option", block->label); - block->update_fn = NULL; - log_debug("Disabled updates for block '%s'", block->label); - return true; + block->update_fn = NULL; + log_debug("Disabled updates for block '%s'", block->label); + } } struct stat sbuf; if (fs->path == NULL || stat(fs->path, &sbuf) < 0) { log_trace("Failed to read file '%s': %s", fs->path, strerror(errno)); log_error("Block '%s' was given an invalid path '%s'", block->label, fs->path); - return false; + errors++; } - return true; + return errors; } static const config_entry_t block_fs_entries[] = { @@ -157,5 +157,4 @@ const block_scheme_t block_fs_scheme = { .alloc_fn = block_fs_alloc, .clean_fn = block_fs_clean, .validate_fn = block_fs_validate, - .resolve_fn = NULL, }; diff --git a/src/blocks/group.c b/src/blocks/group.c index bf377f5..4fdff64 100644 --- a/src/blocks/group.c +++ b/src/blocks/group.c @@ -19,5 +19,4 @@ const block_scheme_t block_group_scheme = { .alloc_fn = block_group_alloc, .clean_fn = block_group_clean, .validate_fn = NULL, - .resolve_fn = NULL, }; diff --git a/src/blocks/ram.c b/src/blocks/ram.c index 4841860..8790ee3 100644 --- a/src/blocks/ram.c +++ b/src/blocks/ram.c @@ -124,33 +124,33 @@ static void block_ram_clean(block_t *block) free(ram->block.text); } -static bool block_ram_validate(block_t *block, const block_scheme_t *scheme) +static int block_ram_validate(block_t *block, const block_scheme_t *scheme) { block_ram_t *ram = (block_ram_t *)block; + int errors = 0; if (ram->block.text == NULL) { log_error("Block '%s' requires key '%s'", block->label, "text"); - return false; + errors++; } if (!format_init(&ram->format, ram->block.text, '%')) { log_error("Block '%s' has an invalid format", block->label); - return false; - } - - int marked = format_remark(&ram->format, block->label, block_ram_options); - if (marked < 0) - return false; + errors++; + } else { + int marked = format_remark(&ram->format, block->label, block_ram_options); + if (marked < 0) + errors += -marked; - if (marked == 0) { - log_warn("Block '%s' does not use any ram option", block->label); + if (marked == 0) { + log_warn("Block '%s' does not use any ram option", block->label); - block->update_fn = NULL; - log_debug("Disabled updates for block '%s'", block->label); - return true; + block->update_fn = NULL; + log_debug("Disabled updates for block '%s'", block->label); + } } - return true; + return errors; } const block_scheme_t block_ram_scheme = { @@ -159,5 +159,4 @@ const block_scheme_t block_ram_scheme = { .alloc_fn = block_ram_alloc, .clean_fn = block_ram_clean, .validate_fn = block_ram_validate, - .resolve_fn = NULL, }; diff --git a/src/blocks/script.c b/src/blocks/script.c index b2064eb..08ed9e3 100644 --- a/src/blocks/script.c +++ b/src/blocks/script.c @@ -59,18 +59,19 @@ static void block_script_clean(block_t *block) free(script->block.text); } -static bool block_script_validate(block_t *block, const block_scheme_t *scheme) +static int block_script_validate(block_t *block, const block_scheme_t *scheme) { block_script_t *script = (block_script_t *)block; + int errors = 0; if (script->block.text == NULL) { log_error("Block '%s' requires key '%s'", block->label, "text"); - return false; + errors++; } script->script = script->block.text; script->block.text = strcopy("?"); - return true; + return errors; } static const config_entry_t block_script_entries[] = { @@ -83,5 +84,4 @@ const block_scheme_t block_script_scheme = { .alloc_fn = block_script_alloc, .clean_fn = block_script_clean, .validate_fn = block_script_validate, - .resolve_fn = NULL, }; diff --git a/src/blocks/text.c b/src/blocks/text.c index 115beb0..0acb1de 100644 --- a/src/blocks/text.c +++ b/src/blocks/text.c @@ -15,16 +15,17 @@ static void block_text_clean(block_t *block) free(text->text); } -static bool block_text_validate(block_t *block, const block_scheme_t *scheme) +static int block_text_validate(block_t *block, const block_scheme_t *scheme) { block_text_t *text = (block_text_t *)block; + int errors = 0; if (text->text == NULL) { log_error("Block '%s' requires key '%s'", block->label, "text"); - return false; + errors++; } - return true; + return errors; } const block_scheme_t block_text_scheme = { @@ -33,5 +34,4 @@ const block_scheme_t block_text_scheme = { .alloc_fn = block_text_alloc, .clean_fn = block_text_clean, .validate_fn = block_text_validate, - .resolve_fn = NULL, }; -- cgit v1.2.3