OSDN Git Service

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