Signed-off-by: Gerd Hoffmann <kra...@redhat.com> --- include/io/buffer.h | 12 ++++++++++++ io/buffer.c | 11 +++++++++++ 2 files changed, 23 insertions(+)
diff --git a/include/io/buffer.h b/include/io/buffer.h index 2b1b261..cffad19 100644 --- a/include/io/buffer.h +++ b/include/io/buffer.h @@ -34,12 +34,24 @@ typedef struct QIOBuffer QIOBuffer; */ struct QIOBuffer { + char *name; size_t capacity; size_t offset; uint8_t *buffer; }; /** + * qio_buffer_init: + * @buffer: the buffer object + * @name: buffer name + * + * Optionally attach a name to the buffer, to make it easier + * to identify in debug traces. + */ +void qio_buffer_init(QIOBuffer *buffer, const char *name, ...) + GCC_FMT_ATTR(2, 3); + +/** * qio_buffer_reserve: * @buffer: the buffer object * @len: the minimum required free space diff --git a/io/buffer.c b/io/buffer.c index 6aa06e7..daa3ebf 100644 --- a/io/buffer.c +++ b/io/buffer.c @@ -22,6 +22,15 @@ #define QIO_BUFFER_MIN_INIT_SIZE 4096 +void qio_buffer_init(QIOBuffer *buffer, const char *name, ...) +{ + va_list ap; + + va_start(ap, name); + buffer->name = g_strdup_vprintf(name, ap); + va_end(ap); +} + void qio_buffer_reserve(QIOBuffer *buffer, size_t len) { if ((buffer->capacity - buffer->offset) < len) { @@ -49,9 +58,11 @@ void qio_buffer_reset(QIOBuffer *buffer) void qio_buffer_free(QIOBuffer *buffer) { g_free(buffer->buffer); + g_free(buffer->name); buffer->offset = 0; buffer->capacity = 0; buffer->buffer = NULL; + buffer->name = NULL; } void qio_buffer_append(QIOBuffer *buffer, const void *data, size_t len) -- 1.8.3.1