From 555c781237468a4227918b6e5d3ee14e8192fae4 Mon Sep 17 00:00:00 2001 From: Alex 'AdUser' Z Date: Mon, 18 Jan 2021 14:25:31 +1000 Subject: [PATCH] * f2b_buf_append() : return size of actually appended data instead true/false --- src/buf.c | 11 ++++++----- src/buf.h | 2 +- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/buf.c b/src/buf.c index 08cc01f..2d25eae 100644 --- a/src/buf.c +++ b/src/buf.c @@ -22,21 +22,22 @@ f2b_buf_free(f2b_buf_t *buf) { memset(buf, 0x0, sizeof(f2b_buf_t)); } -bool +size_t f2b_buf_append(f2b_buf_t *buf, const char *str, size_t len) { - assert(buf != NULL); assert(str != NULL); if (len == 0) len = strlen(str); - if (buf->size < (buf->used + len)) - return false; /* not enough space */ + if ((buf->used + len) > buf->size) { + /* not enough space, append as much as possible */ + len = buf->size - buf->used; + } memcpy(&buf->data[buf->used], str, len); buf->used += len; buf->data[buf->used] = '\0'; - return true; + return len; } /** diff --git a/src/buf.h b/src/buf.h index 0779112..8745c57 100644 --- a/src/buf.h +++ b/src/buf.h @@ -9,7 +9,7 @@ typedef struct f2b_buf_t { bool f2b_buf_alloc(f2b_buf_t *buf, size_t max); void f2b_buf_free(f2b_buf_t *buf); -bool f2b_buf_append(f2b_buf_t *buf, const char *str, size_t size); +size_t f2b_buf_append(f2b_buf_t *buf, const char *str, size_t size); char * f2b_buf_extract(f2b_buf_t *buf, const char *end); size_t f2b_buf_splice(f2b_buf_t *buf, size_t len);