Kevin Wolf <kw...@redhat.com> writes: > Am 18.06.2019 um 11:01 hat Daniel P. Berrangé geschrieben: >> On Mon, Jun 17, 2019 at 08:49:03PM +0200, Markus Armbruster wrote: >> > From: Kevin Wolf <kw...@redhat.com> >> > >> > The -mon pretty=on|off switch of the -mon option applies only to QMP >> > monitors. It's silently ignored for HMP. Deprecate this combination so >> > that we can make it an error in future versions. >> >> No objection to merging this PR as is, but how about we extend the >> deprecation to QMP too ? >> >> I was responsible for adding this option back in 2010 and I don't >> think I've used it since 2012 when I added pretty printing support >> to scripts/qmp/qmp-shell. I struggle to imagine good reasons for >> using QMP directly with pretty printing, as opposed to doing it >> via qmp-shell or another wrapper tool. > > qemu-iotests uses it. It doesn't only make the output (and espeically > diffs on failure) much more readable, but in fact also avoids very long > lines in the refernce output that used to break patch emails when we > didn't use pretty printing yet. > > So let's keep it for QMP, please.
Perhaps we can get rid of it if we find a suitable filter. Hmm, Python comes with one: "python -m json.tool". It expects just one expression, and fails if anything follows: $ printf '{"execute": "qmp_capabilities"}\n{"execute": "query-version"}\n' | socat UNIX:/work/armbru/images/test-qmp STDIO | python3 -m json.tool Extra data: line 2 column 1 (char 134) To pretty print a sequence of expressions, you have to wrap a loop around it: $ printf '{"execute": "qmp_capabilities"}\n{"execute": "query-version"}\n' | socat UNIX:/work/armbru/images/test-qmp STDIO | { while read line; do echo "$line" | python3 -m json.tool; done; } { "QMP": { "version": { "qemu": { "micro": 50, "minor": 0, "major": 4 }, "package": "v4.0.0-1467-g6385dd6613" }, "capabilities": [ "oob" ] } } { "return": {} } { "return": { "qemu": { "micro": 50, "minor": 0, "major": 4 }, "package": "v4.0.0-1467-g6385dd6613" } } I figure we'd want to loop in Python instead of shell. My point is: pretty-printing is trivial in Python. The case for maintaining C code to do it seems weak.