diff options
Diffstat (limited to 'config.c')
-rw-r--r-- | config.c | 11 |
1 files changed, 11 insertions, 0 deletions
@@ -105,6 +105,17 @@ void set_config_opt(config *conf, config_type type, size_t offset, config_val va } } +void cleanup_config(config *conf) { + char *cfg = (char *)conf; + for (const config_opt *opt = config_opts; opt->name != NULL; opt++) { + /* Is this config option's type a string, and is the string of that config option in conf not NULL? */ + if (opt->type == TYPE_STRING && *(char **)(cfg+opt->offset) != NULL) { + free(*(char **)(cfg+opt->offset)); + } + } + free(conf); +} + config *parse_config(const char *filename) { /* Size of the file, in bytes. */ long filesize = 0; |