X-Git-Url: http://git.madism.org/?p=apps%2Fmadmutt.git;a=blobdiff_plain;f=lib-lib%2Fbuffer.h;h=b73e506bdd7f3ac9930f9c9688dba83f88211446;hp=a4d191218119a5f4b7d692bd3694d6b87337dc39;hb=6d838d9aef36d95fa439b3f7cc06d4e81c8581bd;hpb=643b8bf1557f533756a5563ff1e5c416561c58ed diff --git a/lib-lib/buffer.h b/lib-lib/buffer.h index a4d1912..b73e506 100644 --- a/lib-lib/buffer.h +++ b/lib-lib/buffer.h @@ -50,13 +50,20 @@ static inline char *buffer_unwrap(buffer_t **buf) { } -void buffer_resize(buffer_t *, ssize_t newsize); +static inline void buffer_resize(buffer_t *buf, ssize_t newsize) { + p_allocgrow(&buf->data, newsize + 1, &buf->size); +} static inline void buffer_ensure(buffer_t *buf, ssize_t extra) { assert (extra >= 0); if (buf->len + extra >= buf->size) { buffer_resize(buf, buf->len + extra); } } +static inline void buffer_setlen(buffer_t *buf, ssize_t len) { + assert (buf->size > len); + buf->len = len; + buf->data[len] = '\0'; +} static inline void buffer_extend(buffer_t *buf, ssize_t extra) { buffer_ensure(buf, extra); buf->len += extra; @@ -86,6 +93,22 @@ static inline void buffer_addch(buffer_t *buf, int c) { buffer_extendch(buf, 1, c); } +static inline void buffer_reset(buffer_t *buf) { + if (buf->len) { + buf->len = 0; + buf->data[0] = '\0'; + } +} + +void buffer_splice(buffer_t *, ssize_t pos, ssize_t len, const void *, ssize_t); +void buffer_consume_upto(buffer_t *, const char *s); + +ssize_t buffer_addvf(buffer_t *buf, const char *fmt, va_list) + __attribute__((format(printf, 2, 0))); + +ssize_t buffer_addf(buffer_t *buf, const char *fmt, ...) + __attribute__((format(printf, 2, 3))); + /****** LEGACY BUFFERS *******/