From ec34e9ce8a380df87dbf5b455b62e805c00ca8d3 Mon Sep 17 00:00:00 2001 From: mrb0nk500 Date: Thu, 10 Jun 2021 23:11:01 -0400 Subject: Added the `make_str()` function. This function automatically allocates a string that's the same size of the supplied string, and copies it to this newly allocated string, which is then returned. Since this uses `malloc()`, it must be `free()`'d after it's been used. --- config.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/config.c b/config.c index 6847587..f0622c5 100644 --- a/config.c +++ b/config.c @@ -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; } -- cgit v1.2.3-13-gbd6f