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