#include #include "memory-stream.h" bool memory_stream_open(struct memory_stream *m) { *m = (struct memory_stream){ 0 }; m->fp = open_memstream(&m->str, &m->str_len); return m->fp != NULL; } char * memory_stream_close(struct memory_stream *m) { char *str; int ret; ret = fclose(m->fp); str = m->str; *m = (struct memory_stream){ 0 }; if (ret != 0) { free(str); str = NULL; } return str; } void memory_stream_cleanup(struct memory_stream *m) { free(memory_stream_close(m)); }