[libvirt] [PATCH 14/25] util: qemu: Add support for user-passed strings in JSON->commandline

Peter Krempa pkrempa at redhat.com
Mon Jul 25 18:11:59 UTC 2016


Until now the JSON->commandline convertor was used only for objects
created by qemu. To allow reusing it with disk formatter we'll need to
escape ',' as usual in qemu commandlines.
---
 src/util/virqemu.c          | 3 ++-
 tests/qemucommandutiltest.c | 1 +
 2 files changed, 3 insertions(+), 1 deletion(-)

diff --git a/src/util/virqemu.c b/src/util/virqemu.c
index a5d5385..99c14c2 100644
--- a/src/util/virqemu.c
+++ b/src/util/virqemu.c
@@ -46,7 +46,8 @@ virQEMUBuildCommandLineJSONRecurse(const char *key,

     switch ((virJSONType) value->type) {
     case VIR_JSON_TYPE_STRING:
-        virBufferAsprintf(buf, ",%s=%s", key, value->data.string);
+        virBufferAsprintf(buf, ",%s=", key);
+        virQEMUBuildBufferEscapeComma(buf, value->data.string);
         break;

     case VIR_JSON_TYPE_NUMBER:
diff --git a/tests/qemucommandutiltest.c b/tests/qemucommandutiltest.c
index 21fef1c..8299462 100644
--- a/tests/qemucommandutiltest.c
+++ b/tests/qemucommandutiltest.c
@@ -100,6 +100,7 @@ mymain(void)

     DO_TEST_COMMAND_OBJECT_FROM_JSON("{}", NULL);
     DO_TEST_COMMAND_OBJECT_FROM_JSON("{\"string\":\"qwer\"}", "string=qwer");
+    DO_TEST_COMMAND_OBJECT_FROM_JSON("{\"string\":\"qw,e,r\"}", "string=qw,,e,,r");
     DO_TEST_COMMAND_OBJECT_FROM_JSON("{\"number\":1234}", "number=1234");
     DO_TEST_COMMAND_OBJECT_FROM_JSON("{\"boolean\":true}", "boolean=yes");
     DO_TEST_COMMAND_OBJECT_FROM_JSON("{\"boolean\":false}", "boolean=no");
-- 
2.9.0




More information about the libvir-list mailing list