On 04/22/2015 10:34 AM, Eric Blake wrote:
On 04/21/2015 08:02 PM, John Snow wrote:
As a convenience for the user, replace any single quotes given
with double quotes so that the data will deserialize correctly
via json.loads().
Signed-off-by: John Snow <js...@redhat.com>
---
scripts/qmp/qmp-shell | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/scripts/qmp/qmp-shell b/scripts/qmp/qmp-shell
index 5347f89..d7cb33d 100755
--- a/scripts/qmp/qmp-shell
+++ b/scripts/qmp/qmp-shell
@@ -129,7 +129,7 @@ class QMPShell(qmp.QEMUMonitorProtocol):
< command-name > [ arg-name1=arg1 ] ... [ arg-nameN=argN ]
"""
- cmdargs = cmdline.split()
+ cmdargs = cmdline.replace("'", '"').split()
This replaces ALL single quotes, even if they would otherwise be
escaped. That is, if I pass foo="a\'\"b", it will probably be corrupted.
qmp-shell exists mainly as a convenience for testing, and I doubt
testers are likely to want to use unbalanced quotes as contents of
strings, so I can give a weak:
Reviewed-by: Eric Blake <ebl...@redhat.com>
But it's still worth thinking about whether there is a more robust
solution to be used.
I done looked it up:
I can probably squash patches 2&3 with a single fix to use the
ast.literal_eval() function, which does accept single or double quotes,
since it parses python syntax instead of JSON.
I could probably also just have it 'try' each method until it finds
something it likes.
--js