diff options
Diffstat (limited to 'config.c')
-rw-r--r-- | config.c | 11 |
1 files changed, 11 insertions, 0 deletions
@@ -87,6 +87,16 @@ config_val parse_option_value(const config_opt *opt, char *value) { return val; } +void set_config_opt(config *conf, config_type type, size_t offset, config_val val) { + switch (type) { + case TYPE_INT : *(int *)(conf+offset) = val.i; break; + case TYPE_STRING: *(char **)(conf+offset) = val.str; break; + case TYPE_FLOAT : *(float *)(conf+offset) = val.f; break; + case TYPE_BOOL : *(int *)(conf+offset) = val.b; break; + default : break; + } +} + config *parse_config(const char *filename) { /* Size of the file, in bytes. */ long filesize = 0; @@ -120,6 +130,7 @@ config *parse_config(const char *filename) { /* Is the config option valid? */ if (opt->name != NULL) { config_val val = parse_option_value(opt, value); + set_config_opt(cfg, opt->type, opt->offset, val); } } } |