Commit 810082d1 authored by Gerd Hoffmann's avatar Gerd Hoffmann
Browse files

buffer: add buffer_init



Signed-off-by: default avatarGerd Hoffmann <kraxel@redhat.com>
Reviewed-by: default avatarPeter Lieven <pl@kamp.de>
Reviewed-by: default avatarDaniel P. Berrange <berrange@redhat.com>
Message-id: 1446203414-4013-3-git-send-email-kraxel@redhat.com
parent 5c10dbb7
Loading
Loading
Loading
Loading
+12 −0
Original line number Diff line number Diff line
@@ -34,11 +34,23 @@ typedef struct Buffer Buffer;
 */

struct Buffer {
    char *name;
    size_t capacity;
    size_t offset;
    uint8_t *buffer;
};

/**
 * 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 buffer_init(Buffer *buffer, const char *name, ...)
        GCC_FMT_ATTR(2, 3);

/**
 * buffer_reserve:
 * @buffer: the buffer object
+11 −0
Original line number Diff line number Diff line
@@ -22,6 +22,15 @@

#define BUFFER_MIN_INIT_SIZE 4096

void buffer_init(Buffer *buffer, const char *name, ...)
{
    va_list ap;

    va_start(ap, name);
    buffer->name = g_strdup_vprintf(name, ap);
    va_end(ap);
}

void buffer_reserve(Buffer *buffer, size_t len)
{
    if ((buffer->capacity - buffer->offset) < len) {
@@ -49,9 +58,11 @@ void buffer_reset(Buffer *buffer)
void buffer_free(Buffer *buffer)
{
    g_free(buffer->buffer);
    g_free(buffer->name);
    buffer->offset = 0;
    buffer->capacity = 0;
    buffer->buffer = NULL;
    buffer->name = NULL;
}

void buffer_append(Buffer *buffer, const void *data, size_t len)