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:
-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 */