b40292e711
One of the most important missing feature in QMP today is its supported commands documentation. The plan is to make it part of self-description support, however self-description is a big task we have been postponing for a long time now and still don't know when it's going to be done. In order not to compromise QMP adoption and make users' life easier, this commit adds a simple text documentation which fully describes all QMP supported commands. This is not ideal for a number of reasons (harder to maintain, text-only, etc) but does improve the current situation. To avoid at least divering from the user monitor help and texi snippets, QMP bits are also maintained inside qemu-monitor.hx, and hxtool is extended to generate a single text file from them. Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com> Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
101 lines
2.1 KiB
Bash
101 lines
2.1 KiB
Bash
#!/bin/sh
|
|
|
|
hxtoh()
|
|
{
|
|
flag=1
|
|
while read -r str; do
|
|
case $str in
|
|
HXCOMM*)
|
|
;;
|
|
STEXI*|ETEXI*|SQMP*|EQMP*) flag=$(($flag^1))
|
|
;;
|
|
*)
|
|
test $flag -eq 1 && printf "%s\n" "$str"
|
|
;;
|
|
esac
|
|
done
|
|
}
|
|
|
|
hxtotexi()
|
|
{
|
|
flag=0
|
|
line=1
|
|
while read -r str; do
|
|
case "$str" in
|
|
HXCOMM*)
|
|
;;
|
|
STEXI*)
|
|
if test $flag -eq 1 ; then
|
|
echo "line $line: syntax error: expected ETEXI, found $str" >&2
|
|
exit 1
|
|
fi
|
|
flag=1
|
|
;;
|
|
ETEXI*)
|
|
if test $flag -ne 1 ; then
|
|
echo "line $line: syntax error: expected STEXI, found $str" >&2
|
|
exit 1
|
|
fi
|
|
flag=0
|
|
;;
|
|
SQMP*|EQMP*)
|
|
if test $flag -eq 1 ; then
|
|
echo "line $line: syntax error: expected ETEXI, found $str" >&2
|
|
exit 1
|
|
fi
|
|
;;
|
|
DEFHEADING*)
|
|
echo "$(expr "$str" : "DEFHEADING(\(.*\))")"
|
|
;;
|
|
*)
|
|
test $flag -eq 1 && echo "$str"
|
|
;;
|
|
esac
|
|
line=$((line+1))
|
|
done
|
|
}
|
|
|
|
hxtoqmp()
|
|
{
|
|
IFS=
|
|
flag=0
|
|
while read -r str; do
|
|
case "$str" in
|
|
HXCOMM*)
|
|
;;
|
|
SQMP*)
|
|
if test $flag -eq 1 ; then
|
|
echo "line $line: syntax error: expected EQMP, found $str" >&2
|
|
exit 1
|
|
fi
|
|
flag=1
|
|
;;
|
|
EQMP*)
|
|
if test $flag -ne 1 ; then
|
|
echo "line $line: syntax error: expected SQMP, found $str" >&2
|
|
exit 1
|
|
fi
|
|
flag=0
|
|
;;
|
|
STEXI*|ETEXI*)
|
|
if test $flag -eq 1 ; then
|
|
echo "line $line: syntax error: expected EQMP, found $str" >&2
|
|
exit 1
|
|
fi
|
|
;;
|
|
*)
|
|
test $flag -eq 1 && echo "$str"
|
|
;;
|
|
esac
|
|
done
|
|
}
|
|
|
|
case "$1" in
|
|
"-h") hxtoh ;;
|
|
"-t") hxtotexi ;;
|
|
"-q") hxtoqmp ;;
|
|
*) exit 1 ;;
|
|
esac
|
|
|
|
exit 0
|