#include #include #include "buffer.h" void buffer_init (struct buffer *b, int size) { b->size = size; b->data = malloc (size); b->data[0] = '\0'; b->index = 0; } void buffer_add (struct buffer *b, const char *data, size_t len) { if (len > 0) { while ((b->index + len) >= b->size) { b->size <<= 1; b->data = realloc (b->data, b->size); } if (len == 1) b->data[b->index] = *data; else memcpy (b->data + b->index, data, len); b->index += len; b->data[b->index] = '\0'; } } void buffer_addch (struct buffer *b, char c) { buffer_add (b, &c, 1); } void buffer_addstr (struct buffer *b, const char *s) { buffer_add (b, s, strlen (s)); } void buffer_reset (struct buffer *b) { b->index = 0; b->data[0] = '\0'; }