blobmsg: implement blobmsg_printf and blobmsg_vprintf
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
This commit is contained in:
parent
bd47d85d38
commit
af2f52a37b
2 changed files with 31 additions and 0 deletions
25
blobmsg.c
25
blobmsg.c
|
@ -216,6 +216,31 @@ blobmsg_open_nested(struct blob_buf *buf, const char *name, bool array)
|
||||||
return (void *)offset;
|
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 *
|
void *
|
||||||
blobmsg_alloc_string_buffer(struct blob_buf *buf, const char *name, int maxlen)
|
blobmsg_alloc_string_buffer(struct blob_buf *buf, const char *name, int maxlen)
|
||||||
{
|
{
|
||||||
|
|
|
@ -16,6 +16,7 @@
|
||||||
#ifndef __BLOBMSG_H
|
#ifndef __BLOBMSG_H
|
||||||
#define __BLOBMSG_H
|
#define __BLOBMSG_H
|
||||||
|
|
||||||
|
#include <stdarg.h>
|
||||||
#include "blob.h"
|
#include "blob.h"
|
||||||
|
|
||||||
#define BLOBMSG_ALIGN 2
|
#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_realloc_string_buffer(struct blob_buf *buf, int maxlen);
|
||||||
void blobmsg_add_string_buffer(struct blob_buf *buf);
|
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 */
|
/* blobmsg to json formatting */
|
||||||
|
|
||||||
#define blobmsg_for_each_attr(pos, attr, rem) \
|
#define blobmsg_for_each_attr(pos, attr, rem) \
|
||||||
|
|
Loading…
Reference in a new issue