#! /bin/sh 
#
# This program error-checks and enqueues an archive retrieval request.
#
# usage: AQenqueue < chunkfile

PATH=/adobe/server/bin:/usr/local/bin:/usr/ucb:/usr/bin:/bin:
export PATH
TmpFile=/usr/tmp/AQenqueue.$$
HomeDir=/adobe/server
WorkQueue=/adobe/server/requestqueue
SizeLimit=150000
track="true"		# add a log file entry each time a file is accessed
tracklog=".log"		# written to each sub-directory
trap "rm -f $TmpFile; exit" 0 1 2 3 15

awk 'BEGIN {Dest="x"}
$1 == "PATH" {Path=$2; for(i=3;i<=NF;i++) Path = Path " " $i; next}
$1 == "ARGS" {Args=$2; for(i=3;i<=NF;i++) Args = Args " " $i; next}
$1 == "FROM" {From=$2; for(i=3;i<=NF;i++) From = From " " $i; next}
$1 == "VERB" {Verb=$2; next}
$1 == "DATE" {Date=$2; for(i=3;i<=NF;i++) Date = Date " " $i; next}
$1 == "DEST" {Dest=$2; next}
END {
   printf "Path='\''%s'\''\n",Path;
   printf "Dest=\"%s\"\n",Dest;
   printf "From='\''%s'\''\n",From;
   printf "Verb=\"%s\"\n",Verb;
   printf "Date=\"%s\"\n",Date;
   UUCP=0; if (index(Path,"!") > 0) UUCP=1;
   printf "ViaUUCP=%s\n",UUCP;
   print  "set ",Args
} ' > $TmpFile
cat >> $TmpFile << 'endall'

# Step 1: check for errors and send an acknowledgment

Files=""; Cumsize=1250; Unknown=""; Nfiles=0; NSharfiles=0; TooBig=0;
cd $HomeDir
Dir="TopLevel"
cd $HomeDir
for j in $*
do
    case $j in
	afmfile*) Dir="AFMFiles";;
	supplements*) Dir="Supplements";;
	ppdfile) Dir="PPDFiles";;
	ppdfiles) Dir="PPDFiles";;
	document) Dir="Documents";;
	documents) Dir="Documents";;
	update*) Dir="Updates";;
	program) Dir="Programs";;
	programs) Dir="Programs";;
	*) 
	   case $j in
	       index) j=".index";;
	   esac;
	   cd $HomeDir/$Dir
# this permits the user to ask for the file in upper or lower case letters
	   file=`ls -1 | grep -i \^${j}\$`
	   if [ $? -eq 0  ]
	   then
		file=`ls -1 | grep -i \^${j}\$ | sed 1q`
		Fsize=`wc -c $file | colrm 9 | tr -d ' '`
		Fsize=`expr $Fsize + 125`;
		TrialCumSize=`expr $Cumsize + $Fsize`
		if [ $ViaUUCP -gt 0 -a $TrialCumSize -gt $SizeLimit ]
		then
		    TooBig=1;
		    Unknown="$Unknown $Dir/$file"
		else
		    case $j in
			*.shar) NSharfiles=`expr 1 + $NSharfiles`
				if [ $NSharfiles -le 1 ]
				then
				    Cumsize=$TrialCumSize
				    Files="$Files $Dir/$file"
				    Nfiles=`expr 1 + $Nfiles`;
				else
				    Unknown="$Unknown $Dir/$file"
				fi;;
			*)  Cumsize=$TrialCumSize
			    Files="$Files $Dir/$file"
			    Nfiles=`expr 1 + $Nfiles`;;
		    esac
		    case "$track" in
			"true") echo -n "$file	" >> "$tracklog"
				date >> $tracklog
			;;
		    esac
		fi
	   else
	        Unknown="$Unknown $Dir/$j"
	   fi;;
    esac
    shift
done
cd $HomeDir
if [ $NSharfiles -gt 1 ]
then
    Z="multishar $Cumsize";
else
    case $Unknown in
	 "") case $Files in
	    "") Z="null 0";;
	    *) Z="allgood $Cumsize";;
	    esac;;
	 *) case $Files in
	    "") Z="allbad 0";;
	    *) case $TooBig in
	       0) Z="somegood $Cumsize";;
	       *) Z="toobiguucp $Cumsize";;
	       esac;;
	 esac;;
    esac
fi

if AQack "$Path" "$From" "$Date" $Z "$Unknown" "$Files"
then
     Temp1="000000000$Cumsize"
     Unique=`date+ 0 hours "%S"`
     Filename=`expr $Temp1 : '.*\(.......\)$'`.$Unique
     cd $WorkQueue
     subjectlist="`echo $Files | awk '{print $1,$2}'`"
     case "$subjectlist" in
 	"$Files") dots="" ;;
 	"$Files ") dots="" ;;
	*) dots=" ..." ;;
     esac
     cat > $Filename << something
cat << nothing > /usr/tmp/ZQ.\$\$
From: Adobe PostScript File Server <ps-file-server>
Subject: here is "$subjectlist$dots"
Reply-To: ps-file-person
In-reply-to: Request from $From dated $Date
To: $Path
\`cat /adobe/server/copyright\`
$copr
nothing
something
    if [ $Nfiles -eq 1 ]
    then
	echo 'cat /usr/tmp/ZQ.$$ '$Files' | /usr/lib/sendmail -ba '\'$Path\' >> $Filename
    else
	echo 'rshar '$Files' | cat /usr/tmp/ZQ.$$ - | /usr/lib/sendmail -ba '\'$Path\' >> $Filename
    fi
    cat << logentry >> $Filename
rm -f /usr/tmp/ZQ.\$\$
echo "\`date\`" sent $Cumsize to '$Path' >> /adobe/server/requestqueue/out.log
logentry
fi

endall
    . $TmpFile
