diff options
author | Dmitri Pal <dpal@redhat.com> | 2010-07-23 19:33:04 -0400 |
---|---|---|
committer | Stephen Gallagher <sgallagh@redhat.com> | 2010-09-22 14:57:53 -0400 |
commit | ee99d5d047080218bde02e2d06e0d14518fefa4f (patch) | |
tree | 59b8ec3bd8d19dd98e78aec2de0aac74e38ffd97 /basicobjects/simplebuffer.c | |
parent | 2893de11973c4912f4c2a3d40f09ef0823a3f091 (diff) | |
download | ding-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.c | 28 |
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) { |