#include #include #include "ebuf.h" void ebuf_init(EBUF *eb) { eb->b = 0; eb->a = 0; eb->l = 0; } int ebuf_len(EBUF *eb) { return(eb->l); } void *ebuf_data(EBUF *eb) { return(eb->b); } void ebuf_clear(EBUF *eb) { eb->l = 0; } void ebuf_append1(EBUF *eb, unsigned char c) { if (eb->l >= eb->a) eb->b = realloc(eb->b,eb->a=eb->l+8); eb->b[eb->l++] = c; } void ebuf_appendn(EBUF *eb, const void *data, int len) { if (eb->l+len > eb->a) eb->b = realloc(eb->b,eb->a=eb->l+len+8); bcopy(data,eb->b+eb->l,len); eb->l += len; } void ebuf_done(EBUF *eb) { free(eb->b); eb->b = 0; eb->a = 0; }