summaryrefslogtreecommitdiffstats
path: root/basicobjects/simplebuffer.c
diff options
context:
space:
mode:
authorDmitri Pal <dpal@redhat.com>2010-07-23 19:33:04 -0400
committerStephen Gallagher <sgallagh@redhat.com>2010-09-22 14:57:53 -0400
commitee99d5d047080218bde02e2d06e0d14518fefa4f (patch)
tree59b8ec3bd8d19dd98e78aec2de0aac74e38ffd97 /basicobjects/simplebuffer.c
parent2893de11973c4912f4c2a3d40f09ef0823a3f091 (diff)
downloadding-libs-ee99d5d047080218bde02e2d06e0d14518fefa4f.tar.gz
ding-libs-ee99d5d047080218bde02e2d06e0d14518fefa4f.tar.xz
ding-libs-ee99d5d047080218bde02e2d06e0d14518fefa4f.zip
Added a convenience function
Added a function to add a string to the buffer. Allows adding const strings to the buffer. This solution eliminates all the hassle of type casting that was needed before.
Diffstat (limited to 'basicobjects/simplebuffer.c')
-rw-r--r--basicobjects/simplebuffer.c28
1 files changed, 28 insertions, 0 deletions
diff --git a/basicobjects/simplebuffer.c b/basicobjects/simplebuffer.c
index 8ddc628..b47d6b6 100644
--- a/basicobjects/simplebuffer.c
+++ b/basicobjects/simplebuffer.c
@@ -133,6 +133,34 @@ int simplebuffer_add_raw(struct simplebuffer *data,
return error;
}
+/* Function to add string to the end of the buffer. */
+int simplebuffer_add_str(struct simplebuffer *data,
+ const char *str,
+ uint32_t len,
+ uint32_t block)
+{
+
+ int error = EOK;
+ uint32_t size;
+
+ TRACE_FLOW_ENTRY();
+
+ size = len + 1;
+ error = simplebuffer_grow(data, size,
+ ((block > size) ? block : size));
+ if (error) {
+ TRACE_ERROR_NUMBER("Failed to grow buffer.", error);
+ return error;
+ }
+
+ memcpy(data->buffer + data->length, str, len);
+ data->length += len;
+ data->buffer[data->length] = '\0';
+
+ TRACE_FLOW_EXIT();
+ return error;
+}
+
/* Finction to add CR to the buffer */
int simplebuffer_add_cr(struct simplebuffer *data)
{