From 6d0ce31b0ae5df97d4a340c54b66d95598b336a4 Mon Sep 17 00:00:00 2001 From: Federico Angelilli Date: Sat, 13 Jul 2024 12:27:04 +0200 Subject: Add ram type skeleton --- src/config.c | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) (limited to 'src/config.c') diff --git a/src/config.c b/src/config.c index ff587da..cfeb70f 100644 --- a/src/config.c +++ b/src/config.c @@ -277,14 +277,13 @@ void config_read(config_t *config, FILE *file) block = &config->blocks[config->n_blocks - 1]; char *label = strcopy(section + 6); - if (*label == '\0') { + if (label == NULL || *label == '\0') { ++errors; log_value_error("Block section must have a non-empty label", "s:section", section, "i:line", ini.line); free(label); - } else - block->label = label; + } if ((key = any_ini_stream_next_key(&ini)) == NULL || strcmp(key, "type")) { ++errors; @@ -309,6 +308,7 @@ void config_read(config_t *config, FILE *file) const config_block_t block_infos[] = { block_text_info, block_group_info, + block_ram_info, { 0 } }; @@ -316,10 +316,14 @@ void config_read(config_t *config, FILE *file) if (strcmp(block_infos[i].type_name, value)) continue; info = &block_infos[i]; - memcpy(block, &info->base, sizeof(block_t)); - block->info = result = !strcmp(value, "text") - ? block - : malloc(info->type_size); + block_copy(block, &info->base); + free(block->label); + block->label = label; + + if (info->type_size == 0) + result = block; + else + block->info = result = malloc(info->type_size); goto skip_pair; } @@ -410,7 +414,9 @@ void config_resolve(config_t *config, block_t *block) { int errors = 0; + block->label = strcopy("main"); block->type = BLOCK_GROUP; + block->group.spacing = 10; block->group.n_children = config->n_blocks; block->group.children = malloc(config->n_blocks * sizeof(block_t *)); -- cgit v1.2.3