]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
lib/buffer: introduce ul_buffer_get_string()
authorThomas Weißschuh <thomas@t-8ch.de>
Thu, 13 Jun 2024 09:39:34 +0000 (11:39 +0200)
committerKarel Zak <kzak@redhat.com>
Thu, 27 Jun 2024 10:10:19 +0000 (12:10 +0200)
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 <thomas@t-8ch.de>
(cherry picked from commit 49e177d627f80640aac81522090cbdc151204c2d)

include/buffer.h
lib/buffer.c

index b122da4eb4102ce5386d007c1689b3c63f7af8f9..1ccbc971b1931828d9ae42ff79db061097364d80 100644 (file)
@@ -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);
index cc863fa3afe985cc1825aa2682bbe51056a1c66c..a3a19c26eee95f147e1a570b9a1dfb4610ce0696 100644 (file)
@@ -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)
 {