aboutsummaryrefslogtreecommitdiff
path: root/src/config.c
diff options
context:
space:
mode:
authorFederico Angelilli <code@fedang.net>2024-07-13 12:27:04 +0200
committerFederico Angelilli <code@fedang.net>2024-07-13 12:27:04 +0200
commit6d0ce31b0ae5df97d4a340c54b66d95598b336a4 (patch)
tree2685adfb1450fbab6c7fb5e10e04b5e962eff236 /src/config.c
parentf10d68879e358a2642573d408bbc47f1c759d387 (diff)
Add ram type skeleton
Diffstat (limited to 'src/config.c')
-rw-r--r--src/config.c20
1 files changed, 13 insertions, 7 deletions
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 *));