summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorZhangleiqiang <zhangleiqiang@huawei.com>2013-05-06 08:31:23 +0000
committerLuiz Capitulino <lcapitulino@redhat.com>2013-05-15 08:58:43 -0400
commit74bc9066bc2cf61dd12994ea3b73401d33112656 (patch)
tree3a640134c4b4c6b92e1875ae36542cd8ebb327b6
parent110db9b48c0a6379fca122801c3ae48e349aa6d4 (diff)
downloadfocaccia-qemu-74bc9066bc2cf61dd12994ea3b73401d33112656.tar.gz
focaccia-qemu-74bc9066bc2cf61dd12994ea3b73401d33112656.zip
qmp: fix handling of cmd with Equals in qmp-shell
	qmp: fix handling of cmd with equal mark in qmp-shell

    qmp-shell splits the argument and value of input command
	by equal mark("="). But there are commands whose values
	include equal mark themselves, and the json built by
	qmp-shell will not correct. For example, when using NBD as
	the target of block-backup command, the input
	"block-backup target=nbd+unix:///drive0?socket=/tmp/nbd.sock"
	will fail, because the json built will be as follows:

    {
		"execute":"block-backup",
		"arguments":{"target":"nbd+unix:///drive0?socket"}
	}

    Fix it by joining the sections split by equal mark excluding the
	first section in __build_cmd function when the length of sections
	is larger than two.

Signed-off-by: zhangleiqiang <zhangleiqiang@huawei.com>
Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
-rwxr-xr-xQMP/qmp-shell2
1 files changed, 2 insertions, 0 deletions
diff --git a/QMP/qmp-shell b/QMP/qmp-shell
index d126e63ad1..73cb3b6cef 100755
--- a/QMP/qmp-shell
+++ b/QMP/qmp-shell
@@ -99,6 +99,8 @@ class QMPShell(qmp.QEMUMonitorProtocol):
         for arg in cmdargs[1:]:
             opt = arg.split('=')
             try:
+                if(len(opt) > 2):
+                    opt[1] = '='.join(opt[1:])
                 value = int(opt[1])
             except ValueError:
                 if opt[1] == 'true':