On Mon, 6 May 2013 08:31:23 +0000 Zhangleiqiang <zhangleiqi...@huawei.com> wrote:
> 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 <zhangleiqi...@huawei.com> Applied to the qmp branch, thanks. > --- > QMP/qmp-shell | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/QMP/qmp-shell b/QMP/qmp-shell > index d126e63..73cb3b6 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':