|  | #!/bin/sh | 
|  |  | 
|  | hxtoh() | 
|  | { | 
|  | flag=1 | 
|  | while read -r str; do | 
|  | case $str in | 
|  | HXCOMM*) | 
|  | ;; | 
|  | STEXI*|ETEXI*|SQMP*|EQMP*) flag=$(($flag^1)) | 
|  | ;; | 
|  | *) | 
|  | test $flag -eq 1 && printf "%s\n" "$str" | 
|  | ;; | 
|  | esac | 
|  | done | 
|  | } | 
|  |  | 
|  | hxtotexi() | 
|  | { | 
|  | flag=0 | 
|  | line=1 | 
|  | while read -r str; do | 
|  | case "$str" in | 
|  | HXCOMM*) | 
|  | ;; | 
|  | STEXI*) | 
|  | if test $flag -eq 1 ; then | 
|  | echo "line $line: syntax error: expected ETEXI, found $str" >&2 | 
|  | exit 1 | 
|  | fi | 
|  | flag=1 | 
|  | ;; | 
|  | ETEXI*) | 
|  | if test $flag -ne 1 ; then | 
|  | echo "line $line: syntax error: expected STEXI, found $str" >&2 | 
|  | exit 1 | 
|  | fi | 
|  | flag=0 | 
|  | ;; | 
|  | SQMP*|EQMP*) | 
|  | if test $flag -eq 1 ; then | 
|  | echo "line $line: syntax error: expected ETEXI, found $str" >&2 | 
|  | exit 1 | 
|  | fi | 
|  | ;; | 
|  | DEFHEADING*) | 
|  | echo "$(expr "$str" : "DEFHEADING(\(.*\))")" | 
|  | ;; | 
|  | ARCHHEADING*) | 
|  | echo "$(expr "$str" : "ARCHHEADING(\(.*\),.*)")" | 
|  | ;; | 
|  | *) | 
|  | test $flag -eq 1 && echo "$str" | 
|  | ;; | 
|  | esac | 
|  | line=$((line+1)) | 
|  | done | 
|  | } | 
|  |  | 
|  | hxtoqmp() | 
|  | { | 
|  | IFS= | 
|  | flag=0 | 
|  | line=1 | 
|  | while read -r str; do | 
|  | case "$str" in | 
|  | HXCOMM*) | 
|  | ;; | 
|  | SQMP*) | 
|  | if test $flag -eq 1 ; then | 
|  | echo "line $line: syntax error: expected EQMP, found $str" >&2 | 
|  | exit 1 | 
|  | fi | 
|  | flag=1 | 
|  | ;; | 
|  | EQMP*) | 
|  | if test $flag -ne 1 ; then | 
|  | echo "line $line: syntax error: expected SQMP, found $str" >&2 | 
|  | exit 1 | 
|  | fi | 
|  | flag=0 | 
|  | ;; | 
|  | STEXI*|ETEXI*) | 
|  | if test $flag -eq 1 ; then | 
|  | echo "line $line: syntax error: expected EQMP, found $str" >&2 | 
|  | exit 1 | 
|  | fi | 
|  | ;; | 
|  | *) | 
|  | test $flag -eq 1 && echo "$str" | 
|  | ;; | 
|  | esac | 
|  | line=$((line+1)) | 
|  | done | 
|  | } | 
|  |  | 
|  | case "$1" in | 
|  | "-h") hxtoh ;; | 
|  | "-t") hxtotexi ;; | 
|  | "-q") hxtoqmp ;; | 
|  | *) exit 1 ;; | 
|  | esac | 
|  |  | 
|  | exit 0 |