I wrote one of these a couple of years ago but it wasnt quite right. This takes another stab at it.
1. It uses the DFLT section to populate any key that is not already there.
2. All sections and sub section are case insensitive .
3. All keys are case insensitive.
4. Any section that does not have key=value pairs is ignored
5. The sections will only use the first numeric then alpha characters get the client
a. For instance