diff options
-rw-r--r-- | config.c | 14 |
1 files changed, 14 insertions, 0 deletions
@@ -73,6 +73,20 @@ char *get_line(char **str) { return s; } +config_val parse_option_value(const config_opt *opt, char *value) { + config_val val = {0}; + + switch (opt->type) { + case TYPE_INT : (long)val.i = strtol(value, NULL, 0); break; + case TYPE_STRING: val.str = value; break; + case TYPE_FLOAT : val.f = strtof(value, NULL); break; + case TYPE_BOOL : (long)val.b = strtol(value, NULL, 0); break; + default : break; + } + + return val; +} + config *parse_config(const char *filename) { /* Size of the file, in bytes. */ long filesize = 0; |