]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib: buffer - Add buffer_get_avail_size().
authorStephan Bosch <stephan.bosch@dovecot.fi>
Sun, 31 Mar 2019 11:18:04 +0000 (13:18 +0200)
committerStephan Bosch <stephan.bosch@open-xchange.com>
Mon, 26 Aug 2019 19:26:57 +0000 (21:26 +0200)
This determines how much data can be added to buffer.

src/lib/buffer.c
src/lib/buffer.h

index 92bd4a1c55153559b4012030d4bb728d412ddfce..f1883edb165a6223f160e320740aec9882894d2f 100644 (file)
@@ -379,6 +379,14 @@ size_t buffer_get_writable_size(const buffer_t *_buf)
        return buf->alloc-1;
 }
 
+size_t buffer_get_avail_size(const buffer_t *_buf)
+{
+       const struct real_buffer *buf = (const struct real_buffer *)_buf;
+
+       i_assert(buf->alloc >= buf->used);
+       return ((buf->dynamic ? SIZE_MAX : buf->alloc) - buf->used);
+}
+
 bool buffer_cmp(const buffer_t *buf1, const buffer_t *buf2)
 {
        if (buf1->used != buf2->used)
index 0c92e477a030de2bdfe184e7a34320e2d7eb1b48..70b5ea7101081a83d3e3a2dff3f3f59b5e97d83f 100644 (file)
@@ -107,6 +107,9 @@ size_t buffer_get_size(const buffer_t *buf) ATTR_PURE;
    With dynamic buffers this is buffer_get_size()-1, because the extra 1 byte
    is reserved for str_c()'s NUL. */
 size_t buffer_get_writable_size(const buffer_t *buf) ATTR_PURE;
+/* Returns the maximum number of bytes we can append to the buffer. If the
+   buffer is dynamic, this is always near SIZE_MAX. */
+size_t buffer_get_avail_size(const buffer_t *buf) ATTR_PURE;
 
 /* Returns TRUE if buffer contents are identical. */
 bool buffer_cmp(const buffer_t *buf1, const buffer_t *buf2);