#include #include #include "es.h" void es_init(ES *es) { es->b = 0; es->a = 0; es->l = 0; } void es_clear(ES *es) { es->l = 0; } void es_done(ES *es) { free(es->b); es_init(es); } void es_append_n(ES *es, const void *data, int len) { if (len < 1) return; if (es->l+len > es->a) es->b = realloc(es->b,es->a=es->l+len+16); bcopy(data,es->b+es->l,len); es->l += len; } void es_append_1(ES *es, char c) { es_append_n(es,&c,1); } int es_len(ES *es) { return(es->l); } char *es_buf(ES *es) { es_append_1(es,'\0'); es->l --; return(es->b); }