aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--buffer.c6
-rw-r--r--buffer.h3
2 files changed, 9 insertions, 0 deletions
diff --git a/buffer.c b/buffer.c
index c0c626f..d8b01f7 100644
--- a/buffer.c
+++ b/buffer.c
@@ -103,3 +103,9 @@ size_t buffer_length(Buffer *buf) {
const char *buffer_content(Buffer *buf) {
return buf->data;
}
+
+const char *buffer_content0(Buffer *buf) {
+ if (buf->len == 0 || (buf->data[buf->len-1] != '\0' && !buffer_append(buf, "\0", 1)))
+ return "";
+ return buf->data;
+}
diff --git a/buffer.h b/buffer.h
index cef75f3..1c9f684 100644
--- a/buffer.h
+++ b/buffer.h
@@ -42,6 +42,9 @@ bool buffer_prepend0(Buffer*, const char *data);
size_t buffer_length0(Buffer*);
/* return length of a buffer including possible NUL byte */
size_t buffer_length(Buffer*);
+/* pointer to buffer data, guaranteed to return a NUL terminated
+ * string even if buffer is empty */
+const char *buffer_content0(Buffer*);
/* pointer to buffer data, might be NULL if empty, might not be NUL terminated */
const char *buffer_content(Buffer*);