blobmsg: implement blobmsg_printf and blobmsg_vprintf

Signed-off-by: Felix Fietkau <nbd@openwrt.org>
This commit is contained in:
Felix Fietkau 2013-02-17 16:42:12 +01:00
parent bd47d85d38
commit af2f52a37b
2 changed files with 31 additions and 0 deletions

View file

@ -216,6 +216,31 @@ blobmsg_open_nested(struct blob_buf *buf, const char *name, bool array)
return (void *)offset;
}
void
blobmsg_vprintf(struct blob_buf *buf, const char *name, const char *format, va_list arg)
{
va_list arg2;
char cbuf;
int len;
va_copy(arg2, arg);
len = vsnprintf(&cbuf, sizeof(cbuf), format, arg2);
va_end(arg2);
vsprintf(blobmsg_alloc_string_buffer(buf, name, len + 1), format, arg);
blobmsg_add_string_buffer(buf);
}
void
blobmsg_printf(struct blob_buf *buf, const char *name, const char *format, ...)
{
va_list ap;
va_start(ap, format);
blobmsg_vprintf(buf, name, format, ap);
va_end(ap);
}
void *
blobmsg_alloc_string_buffer(struct blob_buf *buf, const char *name, int maxlen)
{

View file

@ -16,6 +16,7 @@
#ifndef __BLOBMSG_H
#define __BLOBMSG_H
#include <stdarg.h>
#include "blob.h"
#define BLOBMSG_ALIGN 2
@ -195,6 +196,11 @@ void *blobmsg_alloc_string_buffer(struct blob_buf *buf, const char *name, int ma
void *blobmsg_realloc_string_buffer(struct blob_buf *buf, int maxlen);
void blobmsg_add_string_buffer(struct blob_buf *buf);
void blobmsg_vprintf(struct blob_buf *buf, const char *name, const char *format, va_list arg);
void blobmsg_printf(struct blob_buf *buf, const char *name, const char *format, ...)
__attribute__((format(printf, 3, 4)));
/* blobmsg to json formatting */
#define blobmsg_for_each_attr(pos, attr, rem) \