#include "buf.h" bbuf* bbuf_new(int size) { bbuf *ret = NULL; ret = malloc(sizeof(bbuf)); if (!ret) { return NULL; } ret->buf = malloc(size); if (!ret->buf) { free(ret); return NULL; } ret->buf_size = size; ret->size = 0; return ret; } //set buffer value int bbuf_set(bbuf *a, char *val, int size) { if (!a) return -1; if (!a->buf) return -1; if (size<0) return -1; if (size > a->buf_size) { a->size = a->buf_size; } else { a->size = size; } memcpy(a->buf, val, a->size); return a->size; } //get copy of buffer bbuf *bbuf_copy(bbuf *buf) { bbuf *ret = NULL; if (!buf) { return NULL; } ret = malloc(sizeof(bbuf)); memcpy(ret, buf, sizeof(bbuf)); ret->buf = malloc(buf->buf_size); if (!ret->buf) { free(ret); return NULL; } memcpy(ret->buf, buf->buf, buf->buf_size); ret->size = buf->size; ret->buf_size = buf->buf_size; return ret; } //get buffer from buffer, mapped pointer, plz dont modify int bbuf_get(bbuf *buf, char **val, int *size) { if (!buf) { return -1; } if (!val) { return -1; } *size = buf->size; *val = buf->buf; return 0; } //resize buffer int bbuf_realloc(bbuf *buf, int size) { int ret = -1; char *ptr=NULL; if (!buf) return -1; if (size < 0) return -1; if (buf->buf_size == size) return size; ret = buf->buf_size; ptr = realloc(buf->buf, size); if (ptr != NULL) { buf->buf = ptr; ret = size; } return ret; } int bbuf_reduce(bbuf *buf) { printf("Not implemented\n"); return -1; } //increase buffer for size int bbuf_inc(bbuf *a, char *b, int size) { printf("Not implemented\n"); return -1; } //decrease buffer for size int bbuf_dec(bbuf *a, char *b, int size) { printf("Not implemented\n"); return -1; } int bbuf_concat(bbuf *a, bbuf *b) { printf("Not implemented\n"); return -1; } int bbuf_size(bbuf *a) { if (a == NULL) { return -1; } //return used size return a->buf_size; } int bbuf_print(bbuf *a) { int i; if (NULL == a) { return -1; } for (i=0;ibuf_size;i++) { char ch = a->buf[i]; if (isalpha(ch)) { printf("%c",ch); } else { printf("."); } } return 0; } //free buffer void bbuf_free(bbuf *buf) { if (buf == NULL) { return; } if (buf->buf != NULL) { memset(buf->buf, 0, buf->buf_size); free(buf->buf); buf->buf = NULL; memset(buf, 0, sizeof(bbuf)); free(buf); buf = NULL; } }