diff options
Diffstat (limited to 'src/bufio/buffer.c')
-rw-r--r-- | src/bufio/buffer.c | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/src/bufio/buffer.c b/src/bufio/buffer.c new file mode 100644 index 0000000..8963652 --- /dev/null +++ b/src/bufio/buffer.c @@ -0,0 +1,24 @@ +#include "impl.h" + +// NewBuffer allocates a bytes buffer with size 'size'. +// This is unallocated usage. +// Returns the fat pointer by value. + +void* +newbuffer(uintptr off, uintptr size) +{ + if (size == 0 || size > BUF·max) size = BUF·size; + + void *mem = malloc(off + sizeof(Buffer) + size); + Buffer *buf = mem + off; + + buf->eof = 0; + buf->off = 0; + buf->base = buf->b + BUF·ungets; + buf->end = buf->b + size; + buf->size = buf->end - buf->base; + + memset(buf->b, 0, size); + + return mem; +} |