From a27bd3293a00e2a00fedfda5bffedb03a87f591b Mon Sep 17 00:00:00 2001 From: mrb0nk500 Date: Sun, 6 Jun 2021 13:29:50 -0400 Subject: Added the config option value parser. This function, called `parse_option_value()`, parses the supplied `value` string, and based on the value type supplied by `opt`, sets a given member of `val` for that value type. --- config.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/config.c b/config.c index 148ad7d..3a6b54b 100644 --- a/config.c +++ b/config.c @@ -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; -- cgit v1.2.3-13-gbd6f