Back to libut API Reference


    #include "libut/ut.h"
    UT_iob *UT_iob_create(void);


This function creates an iob data structure and returns a pointer to it. The name iob derives from input-output buffer since that was its original purpose. The iob is a dynamic-length binary buffer. In other words, it can be appended to indefinitely.

Data can be appended to the iob using UT_iob_printf(3) for formatted text or UT_iob_append(3) to copy a binary buffer into the iob. These functions can be called repeatedly and mixed together; they always append to the iob.

The content of the iob can be extracted using UT_iob_writefd(3) to write the contents to a file descriptor directly or UT_iob_flatten(3) to create a memory buffer of the iob content. An iob's length in bytes can be obtained using UT_iob_len(3). When finished with an iob, UT_iob_free(3) must be called to release its internal memory buffers.


Internally an iob is a linked-list of malloc'd buffers. Each UT_iob_printf(3) or UT_iob_append(3) appends a link to the list.


UT_iob_printf(3), UT_iob_append(3), UT_iob_free(3), UT_iob_writefd(3), UT_iob_bufcmp(3), UT_iob_flatten(3), UT_iob_len(3)


Troy D. Hanson <>