Forgive me, I can't stand pure C any longer

That's why I take a different branch.
So currently I'm writing the C++ version, and I would try my best to use
C-style C++. The advantages I gained from C++ are limited in overloaded
function, variable declearation in the middle of the function, and a C++
xml library.
Anyway, I try to port a C version afterwards.