]> 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)
committerThomas Weißschuh <thomas@t-8ch.de>
Thu, 13 Jun 2024 09:45:55 +0000 (11:45 +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>
include/buffer.h
lib/buffer.c

index 1c1be311220358b9cb978b6b7db9c390609b4785..b71bc0b73d099ed478573d572988827408b8ae5a 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)
 {