#!/usr/local/plan9/bin/rc
# fn sigexit { rm -f $LPSPOOL/$LPDEST/.$pid.* $LPSPOOL/$LPDEST/$pid.* $LPSPOOL/$LPDEST }
if (! ~ $DEBUG '') flag x +

echo $THIS_HOST $DEST_HOST
if (~ $THIS_HOST $DEST_HOST) {
	if (! test -d $LPSPOOL/$LPDEST) {
		mkdir $LPSPOOL/$LPDEST
		chmod 777 $LPSPOOL/$LPDEST >[2]/dev/null
		chmod +t $LPSPOOL/$LPDEST >[2]/dev/null
	}
}
# Process and enqueue files to be printed
# take arguments as input files
i=0
if (~ $#* 0) *=''
for (j in $*) {
	i= `{echo $i + 1|hoc}

# check access to the file so that you know that a failure in the
# processing is a drastic error which will cause an exit from lp.

	if (~ $j '' || test -f $j) {
		if (~ $THIS_HOST $DEST_HOST) {
			echo $LPMACHID $LPUSERID $pid.$i 0 > $LPSPOOL/$LPDEST/.$pid.$i^id
			lpinput $j lpsub process $LPPROC >$LPSPOOL/$LPDEST/.$pid.$i
			if (~ $status '') {
				mv $LPSPOOL/$LPDEST/.$pid.$i $LPSPOOL/$LPDEST/$pid.$i
				mv $LPSPOOL/$LPDEST/.$pid.$i^id $LPSPOOL/$LPDEST/$pid.$i^id
			}
			if not {
				rval='preprocessing failed'
				rm -f $LPSPOOL/$LPDEST/.$pid.$i $LPSPOOL/queue/$LPDEST/.$pid.$i^id
				exit $rval
			}
		}
		if not {
			{
				echo -d^$LPDEST -pnoproc -M^$LPMACHID -u^$LPUSERID 
				lpinput $j lpsub process $LPPROC
			} | lpsend.rc $DEST_HOST
			rval=$status
		}
	}
	if not {
		echo $j cannot be opened >[1=2]
	}
}
