Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.openwrt.org/project/libubox.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@openwrt.org>2013-02-10 23:43:51 +0400
committerFelix Fietkau <nbd@openwrt.org>2013-02-10 23:43:51 +0400
commit4ab499899ce2ed884a1235ada501c39e355911e7 (patch)
tree7b06a1fc4cc7c36768a20c6e201ab6cb87402d93
parentb786f852674769813061474366e936fe6e5bd22e (diff)
blobmsg: add blobmsg_realloc_string_buffer()
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
-rw-r--r--blobmsg.c17
-rw-r--r--blobmsg.h1
2 files changed, 18 insertions, 0 deletions
diff --git a/blobmsg.c b/blobmsg.c
index 7257eae..8db2238 100644
--- a/blobmsg.c
+++ b/blobmsg.c
@@ -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)
{
diff --git a/blobmsg.h b/blobmsg.h
index 9fdf486..c4bf10d 100644
--- a/blobmsg.h
+++ b/blobmsg.h
@@ -192,6 +192,7 @@ static inline char *blobmsg_get_string(struct blob_attr *attr)
}
void *blobmsg_alloc_string_buffer(struct blob_buf *buf, const char *name, int maxlen);
+void *blobmsg_realloc_string_buffer(struct blob_buf *buf, int maxlen);
void blobmsg_add_string_buffer(struct blob_buf *buf);
/* blobmsg to json formatting */