diff options
author | Felix Fietkau <nbd@openwrt.org> | 2013-02-10 23:43:51 +0400 |
---|---|---|
committer | Felix Fietkau <nbd@openwrt.org> | 2013-02-10 23:43:51 +0400 |
commit | 4ab499899ce2ed884a1235ada501c39e355911e7 (patch) | |
tree | 7b06a1fc4cc7c36768a20c6e201ab6cb87402d93 /blobmsg.c | |
parent | b786f852674769813061474366e936fe6e5bd22e (diff) |
blobmsg: add blobmsg_realloc_string_buffer()
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
Diffstat (limited to 'blobmsg.c')
-rw-r--r-- | blobmsg.c | 17 |
1 files changed, 17 insertions, 0 deletions
@@ -233,6 +233,23 @@ blobmsg_alloc_string_buffer(struct blob_buf *buf, const char *name, int maxlen) return data_dest; } +void * +blobmsg_realloc_string_buffer(struct blob_buf *buf, int maxlen) +{ + struct blob_attr *attr = blob_next(buf->head); + int offset = attr_to_offset(buf, blob_next(buf->head)) + blob_pad_len(attr); + int required = maxlen - (buf->buflen - offset); + + if (required <= 0) + goto out; + + blob_buf_grow(buf, required); + attr = blob_next(buf->head); + +out: + return blobmsg_data(attr); +} + void blobmsg_add_string_buffer(struct blob_buf *buf) { |