summaryrefslogtreecommitdiff
path: root/scripts/hxtool
blob: 617a694eafe5ca9dab064bf41ba0ecf8110b878d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#!/bin/sh

print_if_not_rst()
{
    test $in_rst -eq 0 && printf "%s\n" "$str"
}

hxtoh()
{
    in_rst=0
    # .name for HMP
    seen_name=0
    while read -r str; do
        case $str in
            HXCOMM*)
            ;;
            SRST*)
              if [ $in_rst -eq 1 ]
              then
                echo "Error: SRST inside another RST" >&2
                exit 1
              fi
              # consume the name
              seen_name=0
              in_rst=1
            ;;
            ERST*)
              if [ $in_rst -eq 0 ]
              then
                echo "Error: ERST already outside RST" >&2
                exit 1
              fi
              in_rst=0
            ;;
            # Note the space at the start - we need to exclude something.name
            ( .name*)
              if [ $seen_name -eq 1 ]
              then
                echo "Error: Seen another .name, maybe missing docs?" >&2
                exit 1
              fi
              seen_name=1
              print_if_not_rst
            ;;
            *)
            print_if_not_rst
            ;;
        esac
    done
}

case "$1" in
"-h") hxtoh ;;
*) exit 1 ;;
esac < "$2"

exit 0