15d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#!/bin/sh
25d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
35d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerhxtoh()
45d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{
55d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner    flag=1
65d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner    while read -r str; do
75d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner        case $str in
85d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner            HXCOMM*)
95d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner            ;;
10eccfd661905bb0b073c4acba561da85c8ddfeb9eDavid 'Digit' Turner            STEXI*|ETEXI*|SQMP*|EQMP*) flag=$(($flag^1))
115d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner            ;;
125d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner            *)
135d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner            test $flag -eq 1 && printf "%s\n" "$str"
145d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner            ;;
155d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner        esac
165d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner    done
175d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner}
185d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
195d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerhxtotexi()
205d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner{
215d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner    flag=0
22eccfd661905bb0b073c4acba561da85c8ddfeb9eDavid 'Digit' Turner    line=1
235d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner    while read -r str; do
245d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner        case "$str" in
255d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner            HXCOMM*)
265d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner            ;;
27eccfd661905bb0b073c4acba561da85c8ddfeb9eDavid 'Digit' Turner            STEXI*)
28eccfd661905bb0b073c4acba561da85c8ddfeb9eDavid 'Digit' Turner            if test $flag -eq 1 ; then
29eccfd661905bb0b073c4acba561da85c8ddfeb9eDavid 'Digit' Turner                echo "line $line: syntax error: expected ETEXI, found $str" >&2
30eccfd661905bb0b073c4acba561da85c8ddfeb9eDavid 'Digit' Turner                exit 1
31eccfd661905bb0b073c4acba561da85c8ddfeb9eDavid 'Digit' Turner            fi
32eccfd661905bb0b073c4acba561da85c8ddfeb9eDavid 'Digit' Turner            flag=1
33eccfd661905bb0b073c4acba561da85c8ddfeb9eDavid 'Digit' Turner            ;;
34eccfd661905bb0b073c4acba561da85c8ddfeb9eDavid 'Digit' Turner            ETEXI*)
35eccfd661905bb0b073c4acba561da85c8ddfeb9eDavid 'Digit' Turner            if test $flag -ne 1 ; then
36eccfd661905bb0b073c4acba561da85c8ddfeb9eDavid 'Digit' Turner                echo "line $line: syntax error: expected STEXI, found $str" >&2
37eccfd661905bb0b073c4acba561da85c8ddfeb9eDavid 'Digit' Turner                exit 1
38eccfd661905bb0b073c4acba561da85c8ddfeb9eDavid 'Digit' Turner            fi
39eccfd661905bb0b073c4acba561da85c8ddfeb9eDavid 'Digit' Turner            flag=0
40eccfd661905bb0b073c4acba561da85c8ddfeb9eDavid 'Digit' Turner            ;;
41eccfd661905bb0b073c4acba561da85c8ddfeb9eDavid 'Digit' Turner            SQMP*|EQMP*)
42eccfd661905bb0b073c4acba561da85c8ddfeb9eDavid 'Digit' Turner            if test $flag -eq 1 ; then
43eccfd661905bb0b073c4acba561da85c8ddfeb9eDavid 'Digit' Turner                echo "line $line: syntax error: expected ETEXI, found $str" >&2
44eccfd661905bb0b073c4acba561da85c8ddfeb9eDavid 'Digit' Turner                exit 1
45eccfd661905bb0b073c4acba561da85c8ddfeb9eDavid 'Digit' Turner            fi
465d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner            ;;
475d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner            DEFHEADING*)
482910f183ddd5286911bc1e3499ea93cb57de8b75David 'Digit' Turner            echo "$(expr "$str" : "DEFHEADING(\(.*\))")"
495d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner            ;;
505d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner            *)
512910f183ddd5286911bc1e3499ea93cb57de8b75David 'Digit' Turner            test $flag -eq 1 && echo "$str"
525d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner            ;;
535d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner        esac
54eccfd661905bb0b073c4acba561da85c8ddfeb9eDavid 'Digit' Turner        line=$((line+1))
55eccfd661905bb0b073c4acba561da85c8ddfeb9eDavid 'Digit' Turner    done
56eccfd661905bb0b073c4acba561da85c8ddfeb9eDavid 'Digit' Turner}
57eccfd661905bb0b073c4acba561da85c8ddfeb9eDavid 'Digit' Turner
58eccfd661905bb0b073c4acba561da85c8ddfeb9eDavid 'Digit' Turnerhxtoqmp()
59eccfd661905bb0b073c4acba561da85c8ddfeb9eDavid 'Digit' Turner{
60eccfd661905bb0b073c4acba561da85c8ddfeb9eDavid 'Digit' Turner    IFS=
61eccfd661905bb0b073c4acba561da85c8ddfeb9eDavid 'Digit' Turner    flag=0
62eccfd661905bb0b073c4acba561da85c8ddfeb9eDavid 'Digit' Turner    line=1
63eccfd661905bb0b073c4acba561da85c8ddfeb9eDavid 'Digit' Turner    while read -r str; do
64eccfd661905bb0b073c4acba561da85c8ddfeb9eDavid 'Digit' Turner        case "$str" in
65eccfd661905bb0b073c4acba561da85c8ddfeb9eDavid 'Digit' Turner            HXCOMM*)
66eccfd661905bb0b073c4acba561da85c8ddfeb9eDavid 'Digit' Turner            ;;
67eccfd661905bb0b073c4acba561da85c8ddfeb9eDavid 'Digit' Turner            SQMP*)
68eccfd661905bb0b073c4acba561da85c8ddfeb9eDavid 'Digit' Turner            if test $flag -eq 1 ; then
69eccfd661905bb0b073c4acba561da85c8ddfeb9eDavid 'Digit' Turner                echo "line $line: syntax error: expected EQMP, found $str" >&2
70eccfd661905bb0b073c4acba561da85c8ddfeb9eDavid 'Digit' Turner                exit 1
71eccfd661905bb0b073c4acba561da85c8ddfeb9eDavid 'Digit' Turner            fi
72eccfd661905bb0b073c4acba561da85c8ddfeb9eDavid 'Digit' Turner            flag=1
73eccfd661905bb0b073c4acba561da85c8ddfeb9eDavid 'Digit' Turner            ;;
74eccfd661905bb0b073c4acba561da85c8ddfeb9eDavid 'Digit' Turner            EQMP*)
75eccfd661905bb0b073c4acba561da85c8ddfeb9eDavid 'Digit' Turner            if test $flag -ne 1 ; then
76eccfd661905bb0b073c4acba561da85c8ddfeb9eDavid 'Digit' Turner                echo "line $line: syntax error: expected SQMP, found $str" >&2
77eccfd661905bb0b073c4acba561da85c8ddfeb9eDavid 'Digit' Turner                exit 1
78eccfd661905bb0b073c4acba561da85c8ddfeb9eDavid 'Digit' Turner            fi
79eccfd661905bb0b073c4acba561da85c8ddfeb9eDavid 'Digit' Turner            flag=0
80eccfd661905bb0b073c4acba561da85c8ddfeb9eDavid 'Digit' Turner            ;;
81eccfd661905bb0b073c4acba561da85c8ddfeb9eDavid 'Digit' Turner            STEXI*|ETEXI*)
82eccfd661905bb0b073c4acba561da85c8ddfeb9eDavid 'Digit' Turner            if test $flag -eq 1 ; then
83eccfd661905bb0b073c4acba561da85c8ddfeb9eDavid 'Digit' Turner                echo "line $line: syntax error: expected EQMP, found $str" >&2
84eccfd661905bb0b073c4acba561da85c8ddfeb9eDavid 'Digit' Turner                exit 1
85eccfd661905bb0b073c4acba561da85c8ddfeb9eDavid 'Digit' Turner            fi
86eccfd661905bb0b073c4acba561da85c8ddfeb9eDavid 'Digit' Turner            ;;
87eccfd661905bb0b073c4acba561da85c8ddfeb9eDavid 'Digit' Turner            *)
88eccfd661905bb0b073c4acba561da85c8ddfeb9eDavid 'Digit' Turner            test $flag -eq 1 && echo "$str"
89eccfd661905bb0b073c4acba561da85c8ddfeb9eDavid 'Digit' Turner            ;;
90eccfd661905bb0b073c4acba561da85c8ddfeb9eDavid 'Digit' Turner        esac
91eccfd661905bb0b073c4acba561da85c8ddfeb9eDavid 'Digit' Turner        line=$((line+1))
925d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner    done
935d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner}
945d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
955d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnercase "$1" in
965d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner"-h") hxtoh ;;
975d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner"-t") hxtotexi ;;
98eccfd661905bb0b073c4acba561da85c8ddfeb9eDavid 'Digit' Turner"-q") hxtoqmp ;;
995d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner*) exit 1 ;;
1005d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turneresac
1015d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner
1025d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerexit 0
103