Basic design: Implement a generic radix tree that takes nul-terminated C string keys and maps them to void * values. The values contain the full key and must provide a get-key function that returns the key.
I have a WIP from a few years ago.