Esempio n. 1
0
static void cfg_free_opt_array(cfg_opt_t *opts)
{
	int i;

	for (i = 0; opts[i].name; ++i) {
		free((void *)opts[i].name);
		if (opts[i].type == CFGT_FUNC || is_set(CFGF_LIST, opts[i].flags))
			free(opts[i].def.parsed);
		else if (opts[i].type == CFGT_STR)
			free((void *)opts[i].def.string);
		else if (opts[i].type == CFGT_SEC)
			cfg_free_opt_array(opts[i].subopts);
	}
	free(opts);
}
Esempio n. 2
0
DLLIMPORT void cfg_free(cfg_t *cfg)
{
    int i;

    if(cfg == 0)
        return;

    for(i = 0; cfg->opts[i].name; ++i)
        cfg_free_value(&cfg->opts[i]);

    cfg_free_opt_array(cfg->opts);

    free(cfg->name);
    free(cfg->title);
    free(cfg->filename);

    free(cfg);
}