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