c-bindings: improvements to API functions returning strings
Created by: germasch
For a more detailed discussion of the underlying issue, see #1226 (closed) .
In a nutshell, the current API requires the user to pass in a preallocated buffer, but how large that buffer had to be is not known until after the call. This PR makes it possible to use those functions safely by calling the API function twice:
- first, with a NULL buffer, so only the size will be returned
- second, preallocate the buffer using the size from step 1, then call the function again.
While safe if used correctly, this interface is unfortunately cumbersome. It doesn't do anything about adding trailing zeros (though that could be added), either.