Blame src/openct/buffer.c

Packit 9f0df5
/*
Packit 9f0df5
 * Buffer handling functions
Packit 9f0df5
 *
Packit 9f0df5
 * Copyright (C) 2003, Olaf Kirch <okir@suse.de>
Packit 9f0df5
 */
Packit 9f0df5
Packit 9f0df5
#include <config.h>
Packit 9f0df5
Packit 9f0df5
#ifdef HAVE_STRING_H
Packit 9f0df5
#include <string.h>
Packit 9f0df5
#endif
Packit 9f0df5
Packit 9f0df5
#include <openct/buffer.h>
Packit 9f0df5
Packit 9f0df5
void
Packit 9f0df5
ct_buf_init(ct_buf_t *bp, void *mem, size_t len)
Packit 9f0df5
{
Packit 9f0df5
	memset(bp, 0, sizeof(*bp));
Packit 9f0df5
	bp->base = (unsigned char *) mem;
Packit 9f0df5
	bp->size = len;
Packit 9f0df5
}
Packit 9f0df5
Packit 9f0df5
void
Packit 9f0df5
ct_buf_set(ct_buf_t *bp, void *mem, size_t len)
Packit 9f0df5
{
Packit 9f0df5
	ct_buf_init(bp, mem, len);
Packit 9f0df5
	bp->tail = len;
Packit 9f0df5
}
Packit 9f0df5
Packit 9f0df5
int
Packit 9f0df5
ct_buf_get(ct_buf_t *bp, void *mem, size_t len)
Packit 9f0df5
{
Packit 9f0df5
	if (len > bp->tail - bp->head)
Packit 9f0df5
		return -1;
Packit 9f0df5
	if (mem)
Packit 9f0df5
		memcpy(mem, bp->base + bp->head, len);
Packit 9f0df5
	bp->head += len;
Packit 9f0df5
	return len;
Packit 9f0df5
}
Packit 9f0df5
Packit 9f0df5
int
Packit 9f0df5
ct_buf_put(ct_buf_t *bp, const void *mem, size_t len)
Packit 9f0df5
{
Packit 9f0df5
	if (len > bp->size - bp->tail) {
Packit 9f0df5
		bp->overrun = 1;
Packit 9f0df5
		return -1;
Packit 9f0df5
	}
Packit 9f0df5
	if (mem)
Packit 9f0df5
		memcpy(bp->base + bp->tail, mem, len);
Packit 9f0df5
	bp->tail += len;
Packit 9f0df5
	return len;
Packit 9f0df5
}
Packit 9f0df5
Packit 9f0df5
int
Packit 9f0df5
ct_buf_putc(ct_buf_t *bp, int byte)
Packit 9f0df5
{
Packit 9f0df5
	unsigned char	c = byte;
Packit 9f0df5
Packit 9f0df5
	return ct_buf_put(bp, &c, 1);
Packit 9f0df5
}
Packit 9f0df5
Packit 9f0df5
unsigned int
Packit 9f0df5
ct_buf_avail(ct_buf_t *bp)
Packit 9f0df5
{
Packit 9f0df5
	return bp->tail - bp->head;
Packit 9f0df5
}
Packit 9f0df5
Packit 9f0df5
void *
Packit 9f0df5
ct_buf_head(ct_buf_t *bp)
Packit 9f0df5
{
Packit 9f0df5
	return bp->base + bp->head;
Packit 9f0df5
}
Packit 9f0df5