From c7df560b818224d9a9ca3b0ba31a54312dc7062b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Andr=C3=A9=20Tanner?= Date: Sat, 20 Aug 2016 16:01:22 +0200 Subject: buffer: add buffer_remove implementation --- buffer.c | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'buffer.c') diff --git a/buffer.c b/buffer.c index b3c05d6..abf3ab7 100644 --- a/buffer.c +++ b/buffer.c @@ -59,6 +59,16 @@ bool buffer_put0(Buffer *buf, const char *data) { return buffer_put(buf, data, strlen(data)+1); } +bool buffer_remove(Buffer *buf, size_t pos, size_t len) { + if (len == 0) + return true; + if (pos + len > buf->len) + return false; + memmove(buf->data + pos, buf->data + pos + len, buf->len - pos - len); + buf->len -= len; + return true; +} + bool buffer_insert(Buffer *buf, size_t pos, const void *data, size_t len) { if (pos > buf->len) return false; -- cgit v1.2.3