diff options
Diffstat (limited to 'buffer.c')
| -rw-r--r-- | buffer.c | 16 |
1 files changed, 9 insertions, 7 deletions
@@ -6,7 +6,11 @@ #define BUF_SIZE 1024 -bool buffer_alloc(Buffer *buf, size_t size) { +void buffer_init(Buffer *buf) { + memset(buf, 0, sizeof *buf); +} + +bool buffer_grow(Buffer *buf, size_t size) { if (size < BUF_SIZE) size = BUF_SIZE; if (buf->size < size) { @@ -25,17 +29,15 @@ void buffer_truncate(Buffer *buf) { buf->len = 0; } -void buffer_free(Buffer *buf) { +void buffer_release(Buffer *buf) { if (!buf) return; free(buf->data); - buf->data = NULL; - buf->len = 0; - buf->size = 0; + buffer_init(buf); } bool buffer_put(Buffer *buf, const void *data, size_t len) { - if (!buffer_alloc(buf, len)) + if (!buffer_grow(buf, len)) return false; memcpy(buf->data, data, len); buf->len = len; @@ -44,7 +46,7 @@ bool buffer_put(Buffer *buf, const void *data, size_t len) { bool buffer_append(Buffer *buf, const void *data, size_t len) { size_t rem = buf->size - buf->len; - if (len > rem && !buffer_alloc(buf, buf->size + len - rem)) + if (len > rem && !buffer_grow(buf, buf->size + len - rem)) return false; memcpy(buf->data + buf->len, data, len); buf->len += len; |
