Example #1
0
int
fbuf_copy(fbuf_t *fbufsrc, fbuf_t *fbufdst)
{
    if (!fbuf_extend(fbufdst, fbufsrc->used))
        return -1;
    fbuf_clear(fbufdst);
    memcpy(fbufdst->data + fbufdst->skip, fbufsrc->data + fbufsrc->skip, fbufsrc->used);
    fbufdst->used = fbufsrc->used;
    fbufdst->data[fbufdst->skip+fbufdst->used] = 0;

    return fbufdst->used;
}
Example #2
0
void fbuf_consume(struct fbuf *buf, size_t sz)
{
	assert_valid_fbuf(buf);

	/* overflow check */
	assert(sz <= fbuf_avail(buf));

	buf->start += sz;

	/* if our buffer is empty, clear it */
	if (fbuf_avail(buf) == 0)
		fbuf_clear(buf);
}
Example #3
0
void fbuf_free(struct fbuf *buf)
{
	assert_valid_fbuf(buf);

	/* if we have a non-zero object then free it's buffer */
	if (buf->base)
		free(buf->base);

	/* and ensure it is cleared */
	buf->base = 0;
	buf->size = 0;

	fbuf_clear(buf);
}