Blob Blame History Raw
#! /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 $?