Clarify memory ownership on returned strings.
Optimize case of wanting the root node: it's right there!
Move default config listener to Module, as it is intended for modules.
Include errno.h globally.
Reorder and add log initialization.
Correct order now is:
1) Config
2) Logging
3) Optional: daemonize (go to background)
4) Optional: configuration server
5) Run Mainloops
Use realpath() to discover the absolute path of the file and use/save that, so that later changes to the CDW (for example when daemonizing) don't affect it.
Add logging framework, to console and log file. Log file defined in config file, read at initialization once. Console can be deactivated (for daemon mode).
Log format is: TIME LOG_LEVEL: MESSAGE
Ensure new-line is present after log message, simplifies work for the user and ensure readability.