diff --git a/bin/foamCheckJobs b/bin/foamCheckJobs deleted file mode 100755 index 02923b928..000000000 --- a/bin/foamCheckJobs +++ /dev/null @@ -1,396 +0,0 @@ -#!/bin/sh -#------------------------------------------------------------------------------ -# ========= | -# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox -# \\ / O peration | -# \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation -# \\/ M anipulation | -#------------------------------------------------------------------------------- -# License -# This file is part of OpenFOAM. -# -# OpenFOAM is free software: you can redistribute it and/or modify it -# under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# OpenFOAM is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -# for more details. -# -# You should have received a copy of the GNU General Public License -# along with OpenFOAM. If not, see . -# -# Script -# foamCheckJobs -# -# Description -# Uses runningJobs/, finishedJobs/ and foamProcessInfo to create stateFile. -# stateFile contains per pid information on state of process. Format: -# pid state command -# -# where state is one of 'RUNN', 'SUSP', 'OTHR', 'FINI', 'ABRT' ('PEND') -# (first three are from foamProcessInfo, others from jobInfo files) -# (PEND is special state from when user has submitted but no jobInfo -# file yet. Not supported by this script yet) -# -#------------------------------------------------------------------------------ - -Script=${0##*/} - -#------------------------------------------------------------------------------- -#- User settings - -#- Number of days for files to be considered old -NDAYSLIMIT=7 -#------------------------------------------------------------------------------- - -#- work file -TMPFILE=/tmp/${Script}$$.tmp -#- work dir. Needs to be accessible for all machines -MACHDIR=$HOME/.OpenFOAM/${Script} -DEFSTATEFILE=$HOME/.OpenFOAM/foamCheckJobs.out - - -if [ `uname -s` = Linux ] -then - ECHO='echo -e' -else - ECHO='echo' -fi - - -usage() { - cat< -# Prints number of days between the two -# Eg. dayDiff "Jan 10 2002" "Dec 28 1999" -# ==> 13 -dayDiff() { - date -d "$1" > /dev/null 2>&1 - if [ $? -ne 0 ] - then - #- option '-d' on date not supported. Give up. - echo "0" - else - year1=`echo "$1" | awk '{print $3}'` - year2=`echo "$2" | awk '{print $3}'` - day1=`date -d "$1" "+%j"` - day2=`date -d "$2" "+%j"` - - nYears=`expr $year1 - $year2` - tmp1=`expr $nYears \* 365` - tmp2=`expr $day1 - $day2` - expr $tmp1 + $tmp2 - fi -} -#dayDiff "`date '+%b %d %Y'`" "Dec 28 2001" - - -# getAllJobs jobInfoDirectory -# Prints list of all jobs in directory (e.g. runningJobs/) -# Also handles 'slaves' entries in jobInfo: -# slaves 1 ( penfold.23766 ); -getAllJobs() { - if notEmpty $1 - then - jobs=$1/* - for f in $jobs - do - line=`grep '^[ ]*slaves' $f 2>/dev/null` - if [ $? -eq 0 ] - then - slaveJobs=`echo "$line" | sed -e 's/.*(\(.*\)).*/\1/'` - jobs="$jobs $slaveJobs" - fi - done - else - jobs='' - fi - echo "$jobs" -} - -# releaseLock jobId lockFile -# Releases lock on jobId -releaseLock () { - if [ -f $2 ] - then - #- move lock to finishedJobs - mv $2 $FOAM_JOB_DIR/finishedJobs/ - fi - echo "Lock on job $1 released." -} - - -#------------------------------------------------------------------------------- -# -# Main -# -#------------------------------------------------------------------------------- - -if [ $# -eq 1 ] -then - if [ "$1" = "-h" -o "$1" = "-help" ] - then - usage - fi - STATEFILE="$1" -elif [ $# -eq 0 ] -then - STATEFILE=${STATEFILE:-$DEFSTATEFILE} -else - usage -fi - - -#- Check a few things - -if [ ! "$FOAM_JOB_DIR" ] -then - echo "$Script : FOAM_JOB_DIR environment variable not set." - echo - exit 1 -fi - -if [ ! -d "$FOAM_JOB_DIR" ] -then - echo "$Script : directory does not exist." - echo " FOAM_JOB_DIR=$FOAM_JOB_DIR" - echo - exit 1 -fi -if [ ! -d "$FOAM_JOB_DIR/runningJobs" -o ! -d "$FOAM_JOB_DIR/finishedJobs" ] -then - echo "$Script : invalid directory." - echo " FOAM_JOB_DIR=$FOAM_JOB_DIR" - echo - exit 1 -fi - - - -#- obtain rsh method -RSH='ssh' -echo "Using remote shell type : $RSH" -echo "" -echo "Collecting information on jobs in" -echo " $FOAM_JOB_DIR" -echo "" - - -#- Collect machine names into $TMPFILE -# Also handles 'slaves' entry in jobInfo: - -rm -f $TMPFILE; touch $TMPFILE -RUNJOBS=`getAllJobs $FOAM_JOB_DIR/runningJobs` -for f in $RUNJOBS -do - machinePid=`basename $f | sed -e 's/^"//' -e 's/"$//'` - machine=`echo "$machinePid" | sed -e 's/\.[0-9][0-9]*$//'` - pid=`echo "$machinePid" | sed -e 's/.*\.\([0-9][0-9]*\)$/\1/'` - - fgrep "$machine" $TMPFILE >/dev/null 2>&1 - if [ $? -ne 0 ] - then - echo "$machine" >> $TMPFILE - fi -done -echo "Found machines:" -cat $TMPFILE -echo "" - - - -#- Collect process info on all machines, one file per machine - -mkdir -p $MACHDIR -cnt=1 -while true -do - machine=`sed -n -e "${cnt}p" $TMPFILE` - if [ ! "$machine" ] - then - break - fi - - machFile=$MACHDIR/$machine - rm -f $machFile - echo "Contacting $machine to collect process information:" - if [ $machine = `hostname` ] - then - echo " foamProcessInfo $machFile" - foamProcessInfo $machFile >/dev/null 2>&1 - else - echo " $RSH $machine foamProcessInfo $machFile" - $RSH $machine foamProcessInfo $machFile >/dev/null 2>&1 - fi - if [ $? -ne 0 -o ! -s $machFile ] - then - echo "** Failed collecting process information on $machine." - echo "Check $machFile and run foamProcessInfo by hand" - rm -f $machFile - else - echo "Succesfully collected information in $machFile ..." - fi - - cnt=`expr $cnt + 1` -done -echo "" - - -#- Construct state for runningJobs; move non runnning jobs to finishedJobs - -releaseAll='' -rm -f $STATEFILE -for f in $RUNJOBS -do - machinePid=`basename $f` - machine=`echo $machinePid | sed -e 's/\.[0-9][0-9]*$//'` - pid=`echo $machinePid | sed -e 's/.*\.\([0-9][0-9]*\)$/\1/'` - - machFile=$MACHDIR/$machine - if [ -r $machFile ] - then - entry=`grep "^$pid " $machFile 2>/dev/null` - if [ $? -ne 0 -o ! "$entry" ] - then - if [ "$releaseAll" ] - then - releaseLock $machinePid $f - else - echo "Job $machinePid seems to be no longer running. Release lock? (y/a)\c" - read answ - if [ "${answ:-y}" = 'y' ] - then - releaseLock $machinePid $f - elif [ "${answ:-y}" = 'a' ] - then - releaseAll='yes' - releaseLock $machinePid $f - else - state='OTHR' - echo "$machinePid $state" >> $STATEFILE - fi - fi - else - state=`echo "$entry" | awk '{print $2}'` - echo "$machinePid $state" >> $STATEFILE - fi - fi -done - - - -#- Collect old jobs in finishedJobs - -OLDFILES=`find $FOAM_JOB_DIR/finishedJobs -mtime +$NDAYSLIMIT -print` - -#- Construct state for finishedJobs and check on date of files. - -if notEmpty $FOAM_JOB_DIR/finishedJobs -then - dateNow=`date '+%b %d %Y'` - for f in $FOAM_JOB_DIR/finishedJobs/* - do - sz=`ls -s $f | awk '{print $1}'` - if [ "$sz" -gt 0 ] - then - machinePid=`basename $f` - machine=`echo $machinePid | sed -e 's/\.[0-9][0-9]*$//'` - pid=`echo $machinePid | sed -e 's/.*\.\([0-9][0-9]*\)$/\1/'` - - end=`getEntry $f endDate` - if [ ! "$end" ] - then - state='ABRT' - else - nDaysOld=`dayDiff "$dateNow" "$end"` - if [ "$nDaysOld" -gt $NDAYSLIMIT ] - then - OLDFILES="$OLDFILES $f" - fi - - state='FINI' - fi - - echo "$machinePid $state" >> $STATEFILE - fi - done -fi - - -#- Remove old locks - -nOldFiles=`echo "$OLDFILES" | wc -w` -if [ "$nOldFiles" -gt 0 ] -then - echo "You seem to have $nOldFiles locks older than $NDAYSLIMIT days in finishedJobs/" - $ECHO "Do you want to remove these? (y)\c" - read answ - if [ "${answ:-y}" = 'y' ] - then - rm -f $OLDFILES - fi -fi - - -rm -f $TMPFILE -rm -r $MACHDIR - -echo "" -echo "Updated stateFile:" -echo " $STATEFILE" -echo "" - -#------------------------------------------------------------------------------ diff --git a/bin/foamEndJob b/bin/foamEndJob deleted file mode 100755 index 8273a0412..000000000 --- a/bin/foamEndJob +++ /dev/null @@ -1,450 +0,0 @@ -#!/bin/sh -#------------------------------------------------------------------------------ -# ========= | -# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox -# \\ / O peration | -# \\ / A nd | Copyright (C) 2011-2014 OpenFOAM Foundation -# \\/ M anipulation | -#------------------------------------------------------------------------------- -# License -# This file is part of OpenFOAM. -# -# OpenFOAM is free software: you can redistribute it and/or modify it -# under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# OpenFOAM is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -# for more details. -# -# You should have received a copy of the GNU General Public License -# along with OpenFOAM. If not, see . -# -# Script -# foamEndJob -# -# Description -# Ends running job on current machine. Called with root,case,pid. -# - checks if pid exists -# - modifies controlDict -# - waits until -# - pid disappeared -# - controlDict modified -# to restore controlDict -# -#------------------------------------------------------------------------------- -Script=${0##*/} - -usage() { - exec 1>&2 - while [ "$#" -ge 1 ]; do echo "$1"; shift; done - cat< -Usage: $Script [OPTION] -c - -options: - -clear clear any outstanding $Script for the case - -case specify alternative case directory, default is the cwd - -now stop at next time step - -help print the usage - -Tries to end running OpenFOAM application at next write (or optionally -at the next time step). It needs runTimeModifiable switched on in the -controlDict. It changes stopAt in the controlDict and waits for the -job to finish. Restores original controlDict if - - - job has finished - - controlDict gets modified (by user) - - $Script gets killed. - -The -clear option clears any outstanding $Script for the case. - -USAGE - exit 1 -} - -unset clearOpt stopOpt - -# parse options -while [ "$#" -gt 0 ] -do - case "$1" in - -h | -help) - usage - ;; - -case) - [ "$#" -ge 2 ] || usage "'$1' option requires an argument" - cd "$2" 2>/dev/null || usage "directory does not exist: '$2'" - shift 2 - ;; - -c | -clear) - clearOpt=true - shift - ;; - -n | -now) - stopOpt=now - shift - ;; - -*) - usage "unknown option: '$*'" - ;; - *) - break - ;; - esac -done - - -# parent directory for normal or parallel -case "$PWD" in - processor*) caseDir=".." ;; - *) caseDir="." ;; -esac - -# check that case directory is writeable -[ -w $caseDir ] || { - echo "$Script : $caseDir is not writeable" - exit 1 -} - -# check that controlDict is writeable -controlDict=$caseDir/system/controlDict -[ -w $controlDict ] || { - echo "$Script : $controlDict is not writeable" - exit 1 -} - -# need a pid unless with the -clear option -if [ "$clearOpt" = true ] -then - [ $# -eq 0 ] || usage -else - [ $# -eq 1 ] || usage - PID=$1 -fi - - -#------------------------------------------------------------------------------- -# -# Functions -# -#------------------------------------------------------------------------------- - -# getNumberedLine dictionary entry -# Prints dictionary entry line + lineno -getNumberedLine() { - grep -n "^[ \t]*$2[ \t]" $1 | grep -v '^//' | head -1 -} - -# getLine dictionary entry -# Prints dictionary entry line (without lineno) -getLine() { - getNumberedLine $1 "$2" | sed -e 's/^[^:]*://' -} - -# getRawEntry dictionary entry -# Prints value of dictionary entry -getRawEntry() { - getLine $1 "$2" | sed -e "s/^[ \t]*$2[ \t][ \t]*//" -} - -# getEntry dictionary entry -# Like getRawEntry but strips " and ending ';' -getEntry() { - getRawEntry $1 "$2" | sed -e 's/^"//' -e 's/;$//' -e 's/"$//' -} - -# getKey entryLine -# Prints first item on line -getKey() { - echo "$1" | sed -e 's/[ \t]*\(.*\)[ \t].*/\1/' -} - - -# setRawEntry dictionary entry newValue -# Replaces value of entry -setRawEntry() { - oldNumLine=`getNumberedLine $1 "$2"` - lineNo=`echo "$oldNumLine" | sed -e 's/:.*//'` - oldLine=`echo "$oldNumLine" | sed -e 's/^[^:]*://'` - oldKey=`getKey "$oldLine"` - oldVal=`getRawEntry $1 "$2"` - - if [ ! "$oldKey" -o ! "$oldVal" -o ! "$oldLine" ] - then - echo "setRawStringEntry: entry $2 not found in $1" - echo "oldKey=$oldKey" - echo "lineNo=$lineNo" - echo "oldLine=$oldLine" - exit 1 - fi - - #echo "oldKey=$oldKey" - #echo "lineNo=$lineNo" - #echo "oldLine=$oldLine" - #echo "oldVal=$oldVal" - mv $1 ${1}_tmp - sed -e "${lineNo}s/ ${oldVal}/ $3;/" ${1}_tmp > $1 - rm -f ${1}_tmp -} - - - -# like getEntry but returns true if boolean is logical true -getBoolEntry() -{ - val=`getEntry $1 $2` - case "$val" in - y | yes | true | on | 1) - return 0 - ;; - n | no | false | off | 0) - return 123 - ;; - *) - echo "$Script : getBoolEntry : Illegal boolean value $val in dictionary $1" - exit 1 - ;; - esac -} - -# processExists pid -# Returns true if pid exists. -processExists() { - ps -u $LOGNAME -o pid | fgrep $1 >/dev/null -} - -# Restore controlDict and clean up -restoreDict() { - trap QUIT TERM INT - - echo "$Script : Restoring controlDict from controlDict_bak" - if [ -r ${controlDict}_bak ] - then - cp ${controlDict}_bak $controlDict - fi - - rm -f $pidFile - - echo "$Script : Exiting" - exit 0 -} - - -#------------------------------------------------------------------------------- -# -# Main -# -#------------------------------------------------------------------------------- - -#-- Force standards behaving ps -# Get info on all $USER processes -case `uname -s` in -HP-UX*) - UNIX95=a - export UNIX95 - ;; -IRIX*) - _XPG=1 - export _XPG - ;; -esac - - -# Pid actually running -if [ "$clearOpt" != true ] -then - processExists $PID - if [ $? -ne 0 ] - then - echo "$Script : process $PID not running" - exit 1 - fi -fi - -#- runTimeModifiable -getBoolEntry $controlDict runTimeModifiable || { - echo "$Script : runTimeModifiable not true in dictionary $controlDict" - exit 1 -} - -# -#- Check if another foamEndJob running -# -if [ "$clear" = true ] -then - pidFiles=`ls $caseDir/.foamEndJob* 2>/dev/null` - for pidFile in $pidFiles - do - pid=`cat $pidFile` - if [ "$pid" ] - then - echo "$Script : found $Script (pid $pid) for OpenFOAM process" - echo " case: $PWD/$caseDir" - echo "$Script : Killing $Script (pid $pid)" - kill $pid - rm -f $pidFile - fi - done - exit 0 -fi - -pidFile=$caseDir/.foamEndJob$PID -if [ -f $pidFile ] -then - pid=`cat $pidFile` - if [ "$pid" ] - then - processExists $pid - if [ $? -eq 0 ] - then - echo "$Script : found running $Script (pid $pid) for OpenFOAM process" - echo " case: $PWD/$caseDir" - echo " pid : $PID" - echo " lock: $pidFile" - echo "Remove the lock if this is not the case" - exit 1 - fi - fi -fi - -# Mark with my pid -echo $$ > $pidFile - -# -#- Get controlDict entries -# - - -#- startTime -startTime=`getEntry $controlDict startTime` -[ "$startTime" ] || { - echo "$Script : startTime not set in dictionary $controlDict" - exit 1 -} - -#- Write interval -writeInterval=`getEntry $controlDict writeInterval` -[ "$writeInterval" ] || { - echo "$Script : writeInterval not set in dictionary $controlDict" - exit 1 -} - -#- stopAt -stopAt=`getEntry $controlDict stopAt` -[ "$stopAt" ] || { - echo "$Script : stopAt not set in dictionary $controlDict" - exit 1 -} - -#- endTime -endTime=`getEntry $controlDict endTime` -[ "$endTime" ] || { - echo "$Script : endTime not set in dictionary $controlDict" - exit 1 -} - - -echo "$Script : Read from controlDict:" -echo " controlDict : $controlDict" -echo " writeInterval : $writeInterval" -#echo " startTime : $startTime" -echo " stopAt : $stopAt" -#echo " endTime : $endTime" - -echo "$Script : Making backup of controlDict to controlDict_bak" -cp $controlDict ${controlDict}_bak - -#- Set up handler to restore controlDict -trap restoreDict QUIT TERM INT - -if [ "$stopOpt" = now ] -then - setRawEntry $controlDict stopAt nextWrite - setRawEntry $controlDict writeControl timeStep - setRawEntry $controlDict writeInterval 1 - - echo "$Script : Changed in controlDict:" - echo " `getLine $controlDict stopAt`" - echo " `getLine $controlDict writeControl`" - echo " `getLine $controlDict writeInterval`" -else - setRawEntry $controlDict stopAt nextWrite - - echo "$Script : Changed in controlDict:" - echo " `getLine $controlDict stopAt`" -fi - - - -#- Just to make sure time has changed -touch ${controlDict} - -sleep 5 - -#- Give bak a later date -touch ${controlDict}_bak - -#- Loop a while to give NFS time to update -if [ ${controlDict} -nt ${controlDict}_bak ] -then - echo "$Script : controlDict newer than controlDict_bak" - echo "$Script : Waiting for file dates to get updated" - - iter=0 - while [ ${controlDict} -nt ${controlDict}_bak ] - do - if [ $iter -ge 120 ] - then - #- 120*5 sec = 10 mins passed. Give up - echo "$Script : File date not yet ok after 10 mins ... giving up" - break - fi - #- Give _bak a later time - touch ${controlDict}_bak - - #- Give NFS a chance to update time on controlDict. - sleep 5 - - iter=`expr $iter + 1` - done -fi - -# -#- Start waiting until: -# - pid finished. Restore controlDict. -# - controlDict modified. No restore. -# - controlDict_bak removed. No restore. - -echo "$Script : Waiting for OpenFOAM job $PID to finish ..." - -while true -do - sleep 5 - - [ -r ${controlDict}_bak ] || { - echo "$Script : ${controlDict}_bak disappeared. Exiting without restore" - exit 1 - } - - if [ ${controlDict} -nt ${controlDict}_bak ] - then - echo "$Script : ${controlDict} modified externally. Exiting without restore" - exit 0 - fi - - processExists $PID - if [ $? -ne 0 ] - then - #- Job finished - break - fi - # echo "OpenFOAM job $PID still running ..." -done - -#- Dictionary restore -restoreDict - -#------------------------------------------------------------------------------ diff --git a/bin/foamPrintJobs b/bin/foamPrintJobs deleted file mode 100755 index 7213e95e1..000000000 --- a/bin/foamPrintJobs +++ /dev/null @@ -1,284 +0,0 @@ -#!/bin/sh -#------------------------------------------------------------------------------ -# ========= | -# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox -# \\ / O peration | -# \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation -# \\/ M anipulation | -#------------------------------------------------------------------------------- -# License -# This file is part of OpenFOAM. -# -# OpenFOAM is free software: you can redistribute it and/or modify it -# under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# OpenFOAM is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -# for more details. -# -# You should have received a copy of the GNU General Public License -# along with OpenFOAM. If not, see . -# -# Script -# foamPrintJobs -# -# Description -# Uses finishedJobs/ and runningJobs/ and stateFile to print job info -# -#------------------------------------------------------------------------------ -Script=${0##*/} - -JOBSTRING='%4s %8s %20s %10s %8s %4s %12s %12s %20s\n' -DEFSTATEFILE=$HOME/.OpenFOAM/foamCheckJobs.out - - -#------------------------------------------------------------------------------- -# -# Functions -# -#------------------------------------------------------------------------------- - -usage() { - cat<. -# -# Script -# foamProcessInfo -# -# Description -# Collects user's process status information into file. File contains one -# line per process: -# -# pid state command -# -# state is one of 'RUNN' 'SUSP' 'OTHR', -# command is the argv[0] -# -# Tested on Linux,IRIX,SunOS -# -#------------------------------------------------------------------------------- - -PROGNAME=`basename $0` -TMPFILE=/tmp/${PROGNAME}$$.tmp -AWKFILE=/tmp/${PROGNAME}$$.awk - -if [ `uname -s` = Linux ] -then - ECHO='echo -e' -else - ECHO='echo' -fi - - -if [ $# -ne 1 ] -then - echo "Error : $PROGNAME : insufficient arguments" 1>&2 - exit 1 -fi - - -outputFile=$1 -rm -f $outputFile - - -ARCH=`uname` - -#-- Force standards behaving ps -# Get info on all $USER processes -case $ARCH in - HP-UX*) - UNIX95=a; export UNIX95 - ;; - IRIX*) - _XPG=1; export _XPG - ;; -esac - -case $ARCH in - SunOS*) - ps -e -o 'pid,f,s,comm' > $TMPFILE - ;; - HP-UX*) - ps -e -o 'pid,flags,state,comm' > $TMPFILE - ;; - *) - ps -e -o 'pid,flag,state,comm' > $TMPFILE -esac - - -rm -f $AWKFILE; touch $AWKFILE -case $ARCH in - IRIX*) - echo '($2 == 40) || ($3 == "T") {print $1 " SUSP // " $4; next}' >> $AWKFILE - echo '($3 == "R") || ($3 == "S") || ($3 == "D") {print $1 " RUNN // " $4; next}' >> $AWKFILE - echo '{print $1 " OTHR // " $4}' >> $AWKFILE - ;; - Linux*) - echo '($3 == "T") {print $1 " SUSP // " $4; next}' >> $AWKFILE - echo '($3 == "R") || ($3 == "S") || ($3 == "D") {print $1 " RUNN // " $4; next}' >> $AWKFILE - echo '{print $1 " OTHR // " $4}' >> $AWKFILE - ;; - SunOS*) - echo '($3 == "T") {print $1 " SUSP // " $4; next}' >> $AWKFILE - echo '($3 == "O") || ($3 == "S") || ($3 == "R") {print $1 " RUNN // " $4; next}' >> $AWKFILE - echo '{print $1 " OTHR // " $4}' >> $AWKFILE - ;; - *) - echo "Error : $PROGNAME : unsupported achitecture $ARCH" - ;; -esac - -$ECHO "(" > $outputFile -tail +2 $TMPFILE | awk -f $AWKFILE >> $outputFile -$ECHO ")" >> $outputFile - -rm -f $TMPFILE $AWKFILE - -#------------------------------------------------------------------------------