Using a buffer structure allows me to pass more information to callers and a bit more discretion over how data is passed. Better error reporting via having a file handle and reporting it Emacs/GCC style.