X-Git-Url: http://git.madism.org/?p=apps%2Fmadmutt.git;a=blobdiff_plain;f=lib-lib%2Fbuffer.c;h=4cc4dc5730f474dc0d5f0f1d163bbd7d93165a67;hp=f27dc5102d381aec71aa2a6c24da49afd6294bb4;hb=6d838d9aef36d95fa439b3f7cc06d4e81c8581bd;hpb=db3bd72d8b48f1f9b49899da081ffbec4ce2c1c6 diff --git a/lib-lib/buffer.c b/lib-lib/buffer.c index f27dc51..4cc4dc5 100644 --- a/lib-lib/buffer.c +++ b/lib-lib/buffer.c @@ -33,6 +33,8 @@ void buffer_splice(buffer_t *buf, ssize_t pos, ssize_t len, { if (dlen >= len) buffer_extend(buf, dlen - len); + if (len >= buf->len) + len = buf->len; memmove(buf->data + pos + dlen, buf->data + pos + len, buf->len - pos - len); @@ -40,6 +42,12 @@ void buffer_splice(buffer_t *buf, ssize_t pos, ssize_t len, buffer_setlen(buf, buf->len + dlen - len); } +void buffer_consume_upto(buffer_t *buf, const char *s) +{ + assert (buf->data <= s && s <= buf->data + buf->len); + buffer_splice(buf, 0, s - buf->data, NULL, 0); +} + ssize_t buffer_addvf(buffer_t *buf, const char *fmt, va_list args) { ssize_t len;