summaryrefslogtreecommitdiff
path: root/src/buffer.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/buffer.c')
-rw-r--r--src/buffer.c23
1 files changed, 18 insertions, 5 deletions
diff --git a/src/buffer.c b/src/buffer.c
index 2fbfe72..dde1d90 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -12,15 +12,28 @@ bool init_growable_buffer(growable_buffer *buffer) {
return true;
}
-bool grow_growable_buffer(growable_buffer *buffer, size_t at_least) {
+char* grow_growable_buffer(growable_buffer *buffer, size_t at_least) {
size_t new_size = ((at_least % GROW_SIZE) + 1 ) * GROW_SIZE;
if (new_size < buffer->size){
buffer->content = realloc(buffer->content, new_size);
- if (!buffer->content){
- return false;
- }
buffer->size = new_size;
- return true;
+ }
+ return buffer->content;
+}
+
+void append_growable_buffer(growable_buffer *buffer, char* content,
+ size_t length) {
+ size_t i;
+ char *buf;
+
+ if (buffer->size <= buffer->used + length) {
+ buf = grow_growable_buffer(buffer, length);
+ } else {
+ buf = buffer->content;
+ }
+
+ for (i=0; i<length; i++){
+ buf[buffer->used + i] = content[i];
}
}