+int
+blobmsg_vprintf(struct blob_buf *buf, const char *name, const char *format, va_list arg)
+{
+ va_list arg2;
+ char cbuf;
+ char *sbuf;
+ int len, ret;
+
+ va_copy(arg2, arg);
+ len = vsnprintf(&cbuf, sizeof(cbuf), format, arg2);
+ va_end(arg2);
+
+ sbuf = blobmsg_alloc_string_buffer(buf, name, len + 1);
+ if (!sbuf)
+ return -1;
+ ret = vsprintf(sbuf, format, arg);
+ blobmsg_add_string_buffer(buf);
+
+ return ret;
+}
+
+int
+blobmsg_printf(struct blob_buf *buf, const char *name, const char *format, ...)
+{
+ va_list ap;
+ int ret;
+
+ va_start(ap, format);
+ ret = blobmsg_vprintf(buf, name, format, ap);
+ va_end(ap);
+
+ return ret;
+}
+