xref: /openbmc/qemu/scripts/hxtool (revision 4c3b5a4891c44ebbc23d80f95e5b66e2ec66b8b1)
1*4c3b5a48SBlue Swirl#!/bin/sh
2*4c3b5a48SBlue Swirl
3*4c3b5a48SBlue Swirlhxtoh()
4*4c3b5a48SBlue Swirl{
5*4c3b5a48SBlue Swirl    flag=1
6*4c3b5a48SBlue Swirl    while read -r str; do
7*4c3b5a48SBlue Swirl        case $str in
8*4c3b5a48SBlue Swirl            HXCOMM*)
9*4c3b5a48SBlue Swirl            ;;
10*4c3b5a48SBlue Swirl            STEXI*|ETEXI*|SQMP*|EQMP*) flag=$(($flag^1))
11*4c3b5a48SBlue Swirl            ;;
12*4c3b5a48SBlue Swirl            *)
13*4c3b5a48SBlue Swirl            test $flag -eq 1 && printf "%s\n" "$str"
14*4c3b5a48SBlue Swirl            ;;
15*4c3b5a48SBlue Swirl        esac
16*4c3b5a48SBlue Swirl    done
17*4c3b5a48SBlue Swirl}
18*4c3b5a48SBlue Swirl
19*4c3b5a48SBlue Swirlhxtotexi()
20*4c3b5a48SBlue Swirl{
21*4c3b5a48SBlue Swirl    flag=0
22*4c3b5a48SBlue Swirl    line=1
23*4c3b5a48SBlue Swirl    while read -r str; do
24*4c3b5a48SBlue Swirl        case "$str" in
25*4c3b5a48SBlue Swirl            HXCOMM*)
26*4c3b5a48SBlue Swirl            ;;
27*4c3b5a48SBlue Swirl            STEXI*)
28*4c3b5a48SBlue Swirl            if test $flag -eq 1 ; then
29*4c3b5a48SBlue Swirl                echo "line $line: syntax error: expected ETEXI, found $str" >&2
30*4c3b5a48SBlue Swirl                exit 1
31*4c3b5a48SBlue Swirl            fi
32*4c3b5a48SBlue Swirl            flag=1
33*4c3b5a48SBlue Swirl            ;;
34*4c3b5a48SBlue Swirl            ETEXI*)
35*4c3b5a48SBlue Swirl            if test $flag -ne 1 ; then
36*4c3b5a48SBlue Swirl                echo "line $line: syntax error: expected STEXI, found $str" >&2
37*4c3b5a48SBlue Swirl                exit 1
38*4c3b5a48SBlue Swirl            fi
39*4c3b5a48SBlue Swirl            flag=0
40*4c3b5a48SBlue Swirl            ;;
41*4c3b5a48SBlue Swirl            SQMP*|EQMP*)
42*4c3b5a48SBlue Swirl            if test $flag -eq 1 ; then
43*4c3b5a48SBlue Swirl                echo "line $line: syntax error: expected ETEXI, found $str" >&2
44*4c3b5a48SBlue Swirl                exit 1
45*4c3b5a48SBlue Swirl            fi
46*4c3b5a48SBlue Swirl            ;;
47*4c3b5a48SBlue Swirl            DEFHEADING*)
48*4c3b5a48SBlue Swirl            echo "$(expr "$str" : "DEFHEADING(\(.*\))")"
49*4c3b5a48SBlue Swirl            ;;
50*4c3b5a48SBlue Swirl            *)
51*4c3b5a48SBlue Swirl            test $flag -eq 1 && echo "$str"
52*4c3b5a48SBlue Swirl            ;;
53*4c3b5a48SBlue Swirl        esac
54*4c3b5a48SBlue Swirl        line=$((line+1))
55*4c3b5a48SBlue Swirl    done
56*4c3b5a48SBlue Swirl}
57*4c3b5a48SBlue Swirl
58*4c3b5a48SBlue Swirlhxtoqmp()
59*4c3b5a48SBlue Swirl{
60*4c3b5a48SBlue Swirl    IFS=
61*4c3b5a48SBlue Swirl    flag=0
62*4c3b5a48SBlue Swirl    line=1
63*4c3b5a48SBlue Swirl    while read -r str; do
64*4c3b5a48SBlue Swirl        case "$str" in
65*4c3b5a48SBlue Swirl            HXCOMM*)
66*4c3b5a48SBlue Swirl            ;;
67*4c3b5a48SBlue Swirl            SQMP*)
68*4c3b5a48SBlue Swirl            if test $flag -eq 1 ; then
69*4c3b5a48SBlue Swirl                echo "line $line: syntax error: expected EQMP, found $str" >&2
70*4c3b5a48SBlue Swirl                exit 1
71*4c3b5a48SBlue Swirl            fi
72*4c3b5a48SBlue Swirl            flag=1
73*4c3b5a48SBlue Swirl            ;;
74*4c3b5a48SBlue Swirl            EQMP*)
75*4c3b5a48SBlue Swirl            if test $flag -ne 1 ; then
76*4c3b5a48SBlue Swirl                echo "line $line: syntax error: expected SQMP, found $str" >&2
77*4c3b5a48SBlue Swirl                exit 1
78*4c3b5a48SBlue Swirl            fi
79*4c3b5a48SBlue Swirl            flag=0
80*4c3b5a48SBlue Swirl            ;;
81*4c3b5a48SBlue Swirl            STEXI*|ETEXI*)
82*4c3b5a48SBlue Swirl            if test $flag -eq 1 ; then
83*4c3b5a48SBlue Swirl                echo "line $line: syntax error: expected EQMP, found $str" >&2
84*4c3b5a48SBlue Swirl                exit 1
85*4c3b5a48SBlue Swirl            fi
86*4c3b5a48SBlue Swirl            ;;
87*4c3b5a48SBlue Swirl            *)
88*4c3b5a48SBlue Swirl            test $flag -eq 1 && echo "$str"
89*4c3b5a48SBlue Swirl            ;;
90*4c3b5a48SBlue Swirl        esac
91*4c3b5a48SBlue Swirl        line=$((line+1))
92*4c3b5a48SBlue Swirl    done
93*4c3b5a48SBlue Swirl}
94*4c3b5a48SBlue Swirl
95*4c3b5a48SBlue Swirlcase "$1" in
96*4c3b5a48SBlue Swirl"-h") hxtoh ;;
97*4c3b5a48SBlue Swirl"-t") hxtotexi ;;
98*4c3b5a48SBlue Swirl"-q") hxtoqmp ;;
99*4c3b5a48SBlue Swirl*) exit 1 ;;
100*4c3b5a48SBlue Swirlesac
101*4c3b5a48SBlue Swirl
102*4c3b5a48SBlue Swirlexit 0
103