case $# in 0) PAR='make install && make clean' ; CMD=Action ;; 1) PAR="$1" ; CMD=Action ;; 2) PAR="$1" ; CMD="$2" ;; *) echo Syntax: "$0" [command [file]] ; exit 1 ;; esac if test -r "$CMD" then : else case "$CMD" in Action) echo No Action file present ;; *) echo No Action file "($CMD)" present ;; esac fi case $0 in /*) THISFILE=$0 ;; *) THISFILE=`pwd`/$0 ;; esac SYS= RETC=0 { while read LINE do eval set $LINE case x"$1" in x!*) ;; xname) SYS="$2" ACTION='$PAR' DIR=. FM=no FAIL='Failed for $SYS, see $DIR/Out' SUCC='$SYS -- done' ATYPE= FATAL=no DOIT=yes ;; xfatal) FATAL=yes ;; xaction|xindir) case x$ATYPE in x) ACTION=$2 ; ATYPE=$1 case $ATYPE$FM in indirno) FAIL='Failed for $SYS' ;; esac ;; *) echo Already specified an $ATYPE for this name RETC=65 ;; esac ;; xfailure) FM=yes FAIL="$2" ;; xsuccess) SUCC="$2" ;; xdir) DIR="$2" ;; xsystem) PAT="$2" oIFS=$IFS IFS="|" eval set $2 case x`ack_sys` in x$1|x$2|x$3|x$4|x$5|x$6|x$7) ;; *) echo "Sorry, $SYS can only be made on $PAT systems" DOIT=no ;; esac IFS=$oIFS ;; xend) case $DOIT in no) continue ;; esac case x$SYS in x) echo Missing name line; RETC=65 ;; *) if test -d $DIR then ( cd $DIR X= case $ATYPE in indir) if sh $THISFILE "$PAR" $ACTION then eval echo $SUCC touch NoAction else RETC=2 ; eval echo $FAIL fi ;; *) case "$ACTION" in '$PAR') ACTION="$PAR" ;; *) ;; esac if [ -f NoAction ] then ACTION='echo "No actions performed, NoAction file present"' fi if eval "{ $ACTION ; } >Out 2>&1 /dev/null 1>&- 1>&3 exit $RETC ) case $? in 0) ;; *) case $RETC in 0) RETC=$? ;; esac ;; esac else echo Directory $DIR for $SYS is inaccessible RETC=66 fi ;; esac case $FATAL$RETC in yes0) ;; yes*) echo Fatal error, installation stopped. exit $RETC ;; esac SYS= ;; *) echo Unknown keyword "$1" RETC=67 ;; esac done exit $RETC } <$CMD RETX=$? case $RETX in 0) exit $RETC ;; *) exit $RETX ;; esac