#! /bin/sh # igawk --- like gawk but do @include processing # Arnold Robbins, arnold@gnu.ai.mit.edu, Public Domain # July 1993 igs=${TMP:-/tmp}/igs$$ ige=${TMP:-/tmp}/ige$$ if [ "$1" = debug ] then set -x shift else # cleanup on exit, hangup, interrupt, quit, termination #trap 'rm -f $igs $ige' 0 1 2 3 15 trap 'rm -f $igs $ige' 0 2 15 fi while [ $# -ne 0 ] # loop over arguments do case $1 in --) shift; break;; -W) shift set -- -W"$@" continue;; -[vF]) opts="$opts $1 '$2'" shift;; -[vF]*) opts="$opts '$1'" ;; -f) echo @include "$2" >> $igs shift;; -f*) f=`echo "$1" | sed 's/-f//'` echo @include "$f" >> $igs ;; -?file=*) # -Wfile or --file f=`echo "$1" | sed 's/-.file=//'` echo @include "$f" >> $igs ;; -?file) # get arg, $2 echo @include "$2" >> $igs shift;; -?source=*) # -Wsource or --source t=`echo "$1" | sed 's/-.source=//'` echo "$t" >> $igs ;; -?source) # get arg, $2 echo "$2" >> $igs shift;; -?version) echo igawk: version 1.0 1>&2 gawk --version exit 0 ;; -[W-]*) opts="$opts '$1'" ;; *) break;; esac shift done if [ ! -s $igs ] then if [ -z "$1" ] then echo igawk: no program! 1>&2 exit 1 else echo "$1" > $igs shift fi fi # at this point, $igs has the program gawk -f igawk.awk $igs > $ige eval gawk -f '$ige' $opts -- "$@" exit $?