Message ID | 3A6795EA1206904E94BEC8EF9DF109AE05D4C2AB@szxeml510-mbx.china.huawei.com |
---|---|
State | New |
Headers | show |
On Mon, 6 May 2013 08:31:23 +0000 Zhangleiqiang <zhangleiqiang@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 <zhangleiqiang@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':
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':
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> --- QMP/qmp-shell | 2 ++ 1 file changed, 2 insertions(+)