diff options
Diffstat (limited to 'config.c')
-rw-r--r-- | config.c | 10 |
1 files changed, 9 insertions, 1 deletions
@@ -72,13 +72,21 @@ char *get_line(char **str) { return s; } +char *make_str(const char *str) { + const size_t length = strlen(str); + char *s = malloc(length+1); + memset(s, 0, length+1); + memcpy(s, str, length); + return s; +} + config_val parse_option_value(const config_opt *opt, char *value) { config_val val = {0}; switch (opt->type) { case TYPE_INT : case TYPE_BOOL : val.i = strtol(value, NULL, 0); break; - case TYPE_STRING: val.str = value; break; + case TYPE_STRING: val.str = make_str(value); break; case TYPE_FLOAT : val.f = strtof(value, NULL); break; default : break; } |