xref: /plan9/sys/lib/lp/spooler/generic (revision 7dd7cddf99dd7472612f1413b4da293630e6b1bc)
13e12c5d1SDavid du Colombier#!/bin/rc
23e12c5d1SDavid du Colombier# fn sigexit { rm -f $LPSPOOL/$LPDEST/.$pid.* $LPSPOOL/$LPDEST/$pid.* $LPSPOOL/$LPDEST }
3219b2ee8SDavid du Colombierif (! ~ $DEBUG '') flag x +
4219b2ee8SDavid du Colombier
5219b2ee8SDavid du Colombierif (~ $THIS_HOST $DEST_HOST) {
6219b2ee8SDavid du Colombier	if (! test -d $LPSPOOL/$LPDEST) {
7219b2ee8SDavid du Colombier		mkdir $LPSPOOL/$LPDEST
8*7dd7cddfSDavid du Colombier		chmod 777 $LPSPOOL/$LPDEST >[2]/dev/null
9219b2ee8SDavid du Colombier	}
10219b2ee8SDavid du Colombier}
113e12c5d1SDavid du Colombier# Process and enqueue files to be printed
123e12c5d1SDavid du Colombier# take arguments as input files
133e12c5d1SDavid du Colombieri=0
143e12c5d1SDavid du Colombierif (~ $#* 0) *=''
153e12c5d1SDavid du Colombierfor (j in $*) {
163e12c5d1SDavid du Colombier	i= `{echo $i + 1|hoc}
173e12c5d1SDavid du Colombier
183e12c5d1SDavid du Colombier# check access to the file so that you know that a failure in the
193e12c5d1SDavid du Colombier# processing is a drastic error which will cause an exit from lp.
203e12c5d1SDavid du Colombier
213e12c5d1SDavid du Colombier	if (~ $j '' || test -f $j) {
22219b2ee8SDavid du Colombier		if (~ $THIS_HOST $DEST_HOST) {
23219b2ee8SDavid du Colombier			echo $LPMACHID $LPUSERID $pid.$i 0 > $LPSPOOL/$LPDEST/.$pid.$i^id
24219b2ee8SDavid du Colombier			if (~ $j '') @{bind -b $LPLIB/process /bin; $LPPROC} >$LPSPOOL/$LPDEST/.$pid.$i
25219b2ee8SDavid du Colombier			if not @{bind -b $LPLIB/process /bin; $LPPROC} <$j >$LPSPOOL/$LPDEST/.$pid.$i
26219b2ee8SDavid du Colombier			if (~ $status '') {
27219b2ee8SDavid du Colombier				mv $LPSPOOL/$LPDEST/.$pid.$i $LPSPOOL/$LPDEST/$pid.$i
28219b2ee8SDavid du Colombier				mv $LPSPOOL/$LPDEST/.$pid.$i^id $LPSPOOL/$LPDEST/$pid.$i^id
29219b2ee8SDavid du Colombier			}
30219b2ee8SDavid du Colombier			if not {
31219b2ee8SDavid du Colombier				rval='preprocessing failed'
32219b2ee8SDavid du Colombier				rm -f $LPSPOOL/$LPDEST/.$pid.$i $LPSPOOL/queue/$LPDEST/.$pid.$i^id
33219b2ee8SDavid du Colombier				exit $rval
34219b2ee8SDavid du Colombier			}
35219b2ee8SDavid du Colombier		}
36219b2ee8SDavid du Colombier		if not {
373e12c5d1SDavid du Colombier			switch ($j) {
38219b2ee8SDavid du Colombier			case ''; @{ {echo -d^$LPDEST -pnoproc -M^$LPMACHID -u^$LPUSERID; bind -b $LPLIB/process /bin; $LPPROC} | lpsend.rc $DEST_HOST}
39219b2ee8SDavid du Colombier			case *;	@{ {echo -d^$LPDEST -pnoproc -M^$LPMACHID -u^$LPUSERID; bind -b $LPLIB/process /bin; $LPPROC} < $j | lpsend.rc $DEST_HOST}
403e12c5d1SDavid du Colombier			}
413e12c5d1SDavid du Colombier			rval=$status
42219b2ee8SDavid du Colombier		}
433e12c5d1SDavid du Colombier	}
443e12c5d1SDavid du Colombier	if not {
453e12c5d1SDavid du Colombier		echo $j cannot be opened >[1=2]
463e12c5d1SDavid du Colombier	}
473e12c5d1SDavid du Colombier}
48