diff --git a/include/pcp/buffer.h b/include/pcp/buffer.h index 58b1a9a..52d6a8e 100644 --- a/include/pcp/buffer.h +++ b/include/pcp/buffer.h @@ -88,6 +88,9 @@ unsigned char *buffer_get(Buffer *b); points to b->buf and should not be free'd directly*/ char *buffer_get_str(Buffer *b); +/* fetch whatever is left in the buffer */ +unsigned char *buffer_get_remainder(Buffer *b); + /* same as buffer_get() but fetch some data chunk from somewhere in the middle of the buffer */ size_t buffer_extract(Buffer *b, void *buf, size_t offset, size_t len); diff --git a/libpcp/buffer.c b/libpcp/buffer.c index 3f2c01f..e8cba06 100644 --- a/libpcp/buffer.c +++ b/libpcp/buffer.c @@ -98,6 +98,16 @@ size_t buffer_get_chunk(Buffer *b, void *buf, size_t len) { return len; } +unsigned char *buffer_get_remainder(Buffer *b) { + void *buf; + if(buffer_get_chunk(b, buf, b->end - b->offset) == 0) { + return NULL; + } + else { + return buf; + } +} + uint8_t buffer_get8(Buffer *b) { uint8_t i; if(buffer_get_chunk(b, &i, 1) > 0) {