| #!/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 |