summaryrefslogtreecommitdiff
path: root/hxtool
diff options
context:
space:
mode:
Diffstat (limited to 'hxtool')
-rw-r--r--hxtool44
1 files changed, 43 insertions, 1 deletions
diff --git a/hxtool b/hxtool
index 8f655320be..d499dc08ab 100644
--- a/hxtool
+++ b/hxtool
@@ -7,7 +7,7 @@ hxtoh()
case $str in
HXCOMM*)
;;
- STEXI*|ETEXI*) flag=$(($flag^1))
+ STEXI*|ETEXI*|SQMP*|EQMP*) flag=$(($flag^1))
;;
*)
test $flag -eq 1 && printf "%s\n" "$str"
@@ -38,6 +38,12 @@ hxtotexi()
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(\(.*\))")"
;;
@@ -49,9 +55,45 @@ hxtotexi()
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