From: Thomas Weißschuh Date: Thu, 13 Jun 2024 09:39:34 +0000 (+0200) Subject: lib/buffer: introduce ul_buffer_get_string() X-Git-Tag: v2.42-start~297 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=49e177d627f80640aac81522090cbdc151204c2d;p=thirdparty%2Futil-linux.git lib/buffer: introduce ul_buffer_get_string() Some users need a zero-byte-terminated string. As the buffer internally already maintains a zero-termination, add a helper function that exposes this to users. Signed-off-by: Thomas Weißschuh --- diff --git a/include/buffer.h b/include/buffer.h index 1c1be3112..b71bc0b73 100644 --- a/include/buffer.h +++ b/include/buffer.h @@ -35,6 +35,7 @@ int ul_buffer_append_ntimes(struct ul_buffer *buf, size_t n, const char *str); int ul_buffer_set_data(struct ul_buffer *buf, const char *data, size_t sz); char *ul_buffer_get_data(struct ul_buffer *buf, size_t *sz, size_t *width); +char *ul_buffer_get_string(struct ul_buffer *buf, size_t *sz, size_t *width); char *ul_buffer_get_safe_data(struct ul_buffer *buf, size_t *sz, size_t *width, const char *safechars); size_t ul_buffer_get_bufsiz(struct ul_buffer *buf); diff --git a/lib/buffer.c b/lib/buffer.c index cc863fa3a..a3a19c26e 100644 --- a/lib/buffer.c +++ b/lib/buffer.c @@ -188,6 +188,19 @@ char *ul_buffer_get_data(struct ul_buffer *buf, size_t *sz, size_t *width) return buf->begin; } +char *ul_buffer_get_string(struct ul_buffer *buf, size_t *sz, size_t *width) +{ + char *ret; + + ret = ul_buffer_get_data(buf, sz, width); + + /* data in buffer is already zero-terminated */ + if (sz) + *sz = *sz + 1; + + return ret; +} + /* size of allocated area (!= size of stored data */ size_t ul_buffer_get_bufsiz(struct ul_buffer *buf) {