Statistics
| Branch: | Revision:

root / hxtool @ 9a85d394

History | View | Annotate | Download (2.2 kB)

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
hxtotexi()
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
                echo "line $line: syntax error: expected ETEXI, found $str" >&2
30
                exit 1
31
            fi
32
            flag=1
33
            ;;
34
            ETEXI*)
35
            if test $flag -ne 1 ; then
36
                echo "line $line: syntax error: expected STEXI, found $str" >&2
37
                exit 1
38
            fi
39
            flag=0
40
            ;;
41
            SQMP*|EQMP*)
42
            if test $flag -eq 1 ; then
43
                echo "line $line: syntax error: expected ETEXI, found $str" >&2
44
                exit 1
45
            fi
46
            ;;
47
            DEFHEADING*)
48
            echo "$(expr "$str" : "DEFHEADING(\(.*\))")"
49
            ;;
50
            *)
51
            test $flag -eq 1 && echo "$str"
52
            ;;
53
        esac
54
        line=$((line+1))
55
    done
56
}
57

    
58
hxtoqmp()
59
{
60
    IFS=
61
    flag=0
62
    line=1
63
    while read -r str; do
64
        case "$str" in
65
            HXCOMM*)
66
            ;;
67
            SQMP*)
68
            if test $flag -eq 1 ; then
69
                echo "line $line: syntax error: expected EQMP, found $str" >&2
70
                exit 1
71
            fi
72
            flag=1
73
            ;;
74
            EQMP*)
75
            if test $flag -ne 1 ; then
76
                echo "line $line: syntax error: expected SQMP, found $str" >&2
77
                exit 1
78
            fi
79
            flag=0
80
            ;;
81
            STEXI*|ETEXI*)
82
            if test $flag -eq 1 ; then
83
                echo "line $line: syntax error: expected EQMP, found $str" >&2
84
                exit 1
85
            fi
86
            ;;
87
            *)
88
            test $flag -eq 1 && echo "$str"
89
            ;;
90
        esac
91
        line=$((line+1))
92
    done
93
}
94

    
95
case "$1" in
96
"-h") hxtoh ;;
97
"-t") hxtotexi ;;
98
"-q") hxtoqmp ;;
99
*) exit 1 ;;
100
esac
101

    
102
exit 0