From 74bc9066bc2cf61dd12994ea3b73401d33112656 Mon Sep 17 00:00:00 2001 From: Zhangleiqiang Date: Mon, 6 May 2013 08:31:23 +0000 Subject: [PATCH] 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 Signed-off-by: Luiz Capitulino --- QMP/qmp-shell | 2 ++ 1 file changed, 2 insertions(+) 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':