diff options
Diffstat (limited to 'lp/spooler/generic')
-rwxr-xr-x | lp/spooler/generic | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/lp/spooler/generic b/lp/spooler/generic new file mode 100755 index 00000000..83ee13ff --- /dev/null +++ b/lp/spooler/generic @@ -0,0 +1,48 @@ +#!/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] + } +} |