Add a variant similar to virJSONValueObjectAppendString which also formats more complex value strings with printf syntax. Signed-off-by: Peter Krempa <pkrempa@xxxxxxxxxx> --- src/libvirt_private.syms | 1 + src/util/virjson.c | 17 +++++++++++++++++ src/util/virjson.h | 2 ++ 3 files changed, 20 insertions(+) diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index 31813f177f..1bd02fd8ee 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -2361,6 +2361,7 @@ virJSONValueObjectAppendNumberLong; virJSONValueObjectAppendNumberUint; virJSONValueObjectAppendNumberUlong; virJSONValueObjectAppendString; +virJSONValueObjectAppendStringPrintf; virJSONValueObjectCreate; virJSONValueObjectCreateVArgs; virJSONValueObjectDeflatten; diff --git a/src/util/virjson.c b/src/util/virjson.c index dc662bf8e9..6921eccb60 100644 --- a/src/util/virjson.c +++ b/src/util/virjson.c @@ -649,6 +649,23 @@ virJSONValueObjectAppendString(virJSONValuePtr object, } +int +virJSONValueObjectAppendStringPrintf(virJSONValuePtr object, + const char *key, + const char *fmt, + ...) +{ + va_list ap; + g_autofree char *str = NULL; + + va_start(ap, fmt); + str = g_strdup_vprintf(fmt, ap); + va_end(ap); + + return virJSONValueObjectInsertString(object, key, str, false); +} + + int virJSONValueObjectPrependString(virJSONValuePtr object, const char *key, diff --git a/src/util/virjson.h b/src/util/virjson.h index 0894e91b59..588c977650 100644 --- a/src/util/virjson.h +++ b/src/util/virjson.h @@ -127,6 +127,8 @@ int virJSONValueObjectGetBoolean(virJSONValuePtr object, const char *key, bool * int virJSONValueObjectIsNull(virJSONValuePtr object, const char *key); int virJSONValueObjectAppendString(virJSONValuePtr object, const char *key, const char *value); +int virJSONValueObjectAppendStringPrintf(virJSONValuePtr object, const char *key, const char *fmt, ...) + G_GNUC_PRINTF(3, 4); int virJSONValueObjectPrependString(virJSONValuePtr object, const char *key, const char *value); int virJSONValueObjectAppendNumberInt(virJSONValuePtr object, const char *key, int number); int virJSONValueObjectAppendNumberUint(virJSONValuePtr object, const char *key, unsigned int number); -- 2.26.2