I am using your library and I wanted to suggests an interesting option. If a setting is present multiple times in the configuration, then an error is generated (duplicate setting), why not give the option to update the setting by the new value. This is very interresting when you work with include files because you can create a default configuration and overload some values by including a custom file at the end.
The behaviour ("no duplicate" or "allow override" could be selected by a specific setting).
I made the change in quick and dirty in config_setting_add for testing and it seems to work nicely
if(config_setting_get_member(parent, name) != NULL)
return(config_setting_get_member(parent, name)); /* already exists */