This code is a total nightmare.
A pain to read, and lots of strcpy/strcat/sprintf's which actually
turn out to be okay, after adding a die-when-out-of-memory callback
for the boehm garbage collector.
There are undoubtedly other issues with this code. Caveat user.