17dd7cddfSDavid du Colombier#!/bin/sh 2*593dc095SDavid du Colombier# $Id: lprsetup.sh,v 1.3 2002/02/21 21:49:28 giles Exp $ 37dd7cddfSDavid du Colombier# 47dd7cddfSDavid du Colombier# BSD PRINT FILTER SETUP utility for Ghostscript - used and tested on 57dd7cddfSDavid du Colombier# SunOS 4.1.3, but I hope it will be useful on other BSD systems 67dd7cddfSDavid du Colombier# See documentation for usage 77dd7cddfSDavid du Colombier# 87dd7cddfSDavid du Colombier 97dd7cddfSDavid du ColombierDEVICES="bjt600.32 bjc600.32 bjc600.24 bjc600.24.3 bjc600.16 bjc600.8 bjc600.8.1 bjc600.1 bjc600.dq" 107dd7cddfSDavid du Colombier#FILTERS="if nf tf gf vf df cf rf" 117dd7cddfSDavid du ColombierFILTERS="if" 127dd7cddfSDavid du Colombier 137dd7cddfSDavid du Colombier# The port your printer is on 147dd7cddfSDavid du ColombierPRINTERDEV=/dev/lp1 157dd7cddfSDavid du Colombier# The kind of printer (accepted values: 'parallel' and 'serial') 167dd7cddfSDavid du ColombierPRINTERTYPE=parallel 177dd7cddfSDavid du Colombier 187dd7cddfSDavid du ColombierGSDIR=/usr/local/lib/ghostscript 197dd7cddfSDavid du ColombierGSFILTERDIR=$GSDIR/filt 207dd7cddfSDavid du ColombierSPOOLDIR=/var/spool 217dd7cddfSDavid du ColombierGSIF=unix-lpr.sh 227dd7cddfSDavid du ColombierPCAP=printcap.insert 237dd7cddfSDavid du Colombier 247dd7cddfSDavid du ColombierPATH=/bin:/usr/bin:/usr/ucb 257dd7cddfSDavid du Colombierexport PATH 267dd7cddfSDavid du Colombier 277dd7cddfSDavid du Colombierif [ ! -w $GSDIR ]; then 287dd7cddfSDavid du Colombier echo "$GSDIR must be writable to create filter directory" 297dd7cddfSDavid du Colombier exit 1 307dd7cddfSDavid du Colombierfi 317dd7cddfSDavid du Colombier 327dd7cddfSDavid du Colombierecho " 337dd7cddfSDavid du ColombierMaking links in the filter directory $GSFILTERDIR ... 347dd7cddfSDavid du Colombier" 357dd7cddfSDavid du Colombier 367dd7cddfSDavid du Colombier# 377dd7cddfSDavid du Colombier# Make the directory for holding the filter and links 387dd7cddfSDavid du Colombier# 397dd7cddfSDavid du Colombierif [ -d $GSFILTERDIR ]; then 407dd7cddfSDavid du Colombier echo "$GSFILTERDIR already exists - not created" 417dd7cddfSDavid du Colombierelse 427dd7cddfSDavid du Colombier mkdir $GSFILTERDIR 437dd7cddfSDavid du Colombierfi 447dd7cddfSDavid du Colombierrm -f $GSFILTERDIR/direct 457dd7cddfSDavid du Colombierln -s . $GSFILTERDIR/direct 467dd7cddfSDavid du Colombierrm -f $GSFILTERDIR/indirect 477dd7cddfSDavid du Colombierln -s . $GSFILTERDIR/indirect 487dd7cddfSDavid du Colombier 497dd7cddfSDavid du Colombier# 507dd7cddfSDavid du Colombier# Create a link from each filtertype to the real filter script 517dd7cddfSDavid du Colombier# 527dd7cddfSDavid du Colombierfor filter in $FILTERS 537dd7cddfSDavid du Colombierdo 547dd7cddfSDavid du Colombier rm -f $GSFILTERDIR/gs$filter 557dd7cddfSDavid du Colombier ln -s ../$GSIF $GSFILTERDIR/gs$filter 567dd7cddfSDavid du Colombierdone 577dd7cddfSDavid du Colombier 587dd7cddfSDavid du Colombier# 597dd7cddfSDavid du Colombier# Create a link from each device to the filter directory 607dd7cddfSDavid du Colombier# 617dd7cddfSDavid du Colombierfor device in $DEVICES 627dd7cddfSDavid du Colombierdo 637dd7cddfSDavid du Colombier dualqueue= 647dd7cddfSDavid du Colombier case "$device" in 657dd7cddfSDavid du Colombier *.dq) device=`basename $device .dq` ; dualqueue=t ;; 667dd7cddfSDavid du Colombier esac 677dd7cddfSDavid du Colombier rm -f $GSFILTERDIR/$device 687dd7cddfSDavid du Colombier if [ $dualqueue ]; then 697dd7cddfSDavid du Colombier rm -f $GSFILTERDIR/indirect/$device 707dd7cddfSDavid du Colombier ln -s . $GSFILTERDIR/indirect/$device 717dd7cddfSDavid du Colombier else 727dd7cddfSDavid du Colombier rm -f $GSFILTERDIR/direct/$device 737dd7cddfSDavid du Colombier ln -s . $GSFILTERDIR/direct/$device 747dd7cddfSDavid du Colombier fi 757dd7cddfSDavid du Colombierdone 767dd7cddfSDavid du Colombier 777dd7cddfSDavid du Colombier# 787dd7cddfSDavid du Colombier# Create a basic printcap insert - this is made in the CURRENT directory 797dd7cddfSDavid du Colombier# 807dd7cddfSDavid du Colombierrm -f $PCAP 817dd7cddfSDavid du Colombiercat > $PCAP << EOF 827dd7cddfSDavid du Colombier# This is an example printcap insert for Ghostscript printers 837dd7cddfSDavid du Colombier# You will probably want either to change the names for each printer 847dd7cddfSDavid du Colombier# below (first line for each device) to something more sensible, or 857dd7cddfSDavid du Colombier# to add additional name entries (eg cdjcolor for cdj500.24) 867dd7cddfSDavid du Colombier# The example is shown set up for $PRINTERTYPE printers - you will need 877dd7cddfSDavid du Colombier# to alter the entries for different or networked remote printer, 887dd7cddfSDavid du Colombier# eg. a remote network printer would have a line something like: 897dd7cddfSDavid du Colombier# :lp=:rm=artemis:rp=LPT1: 907dd7cddfSDavid du Colombier# for a PC called artemis, replacing the serial port settings 917dd7cddfSDavid du Colombier# 927dd7cddfSDavid du Colombier# NB/ This is only an example - it is unlikely to be complete or exactly 937dd7cddfSDavid du Colombier# correct for your system, but is designed to illustrate filter names 947dd7cddfSDavid du Colombier# corresponding to the accompanying bsd-if print filter 957dd7cddfSDavid du Colombier# 967dd7cddfSDavid du ColombierEOF 977dd7cddfSDavid du Colombier 987dd7cddfSDavid du Colombier( 997dd7cddfSDavid du Colombierprevious=undefined 1007dd7cddfSDavid du Colombierfor device in $DEVICES 1017dd7cddfSDavid du Colombierdo 1027dd7cddfSDavid du Colombier dualqueue= 1037dd7cddfSDavid du Colombier case "$device" in 1047dd7cddfSDavid du Colombier *.dq) device=`basename $device .dq` ; dualqueue=t ;; 1057dd7cddfSDavid du Colombier esac 1067dd7cddfSDavid du Colombier base="`echo $device | sed 's/\.[0-9][0-9]*$//'`" 1077dd7cddfSDavid du Colombier base="`echo $base | sed 's/\.[0-9][0-9]*$//'`" 1087dd7cddfSDavid du Colombier# 1097dd7cddfSDavid du Colombier# If device listed with '.dq' suffix, we set up a separate output queue 1107dd7cddfSDavid du Colombier# 1117dd7cddfSDavid du Colombier if [ $dualqueue ]; then 1127dd7cddfSDavid du Colombier if [ $base != $previous ]; then 1137dd7cddfSDavid du Colombier previous=$base 1147dd7cddfSDavid du Colombier echo "\ 1157dd7cddfSDavid du Colombier# Entry for raw device $base.raw 1167dd7cddfSDavid du Colombier$base.raw|Raw output device $base:\\ 1177dd7cddfSDavid du Colombier :lp=$PRINTERDEV:\\" 1187dd7cddfSDavid du Colombier if test "$PRINTERTYPE" = serial 1197dd7cddfSDavid du Colombier then 1207dd7cddfSDavid du Colombier echo "br#19200:xc#0177777:\\" 1217dd7cddfSDavid du Colombier echo ":ms=-parity,ixon,-opost:\\" 1227dd7cddfSDavid du Colombier fi 1237dd7cddfSDavid du Colombier echo ":sd=$SPOOLDIR/$base/raw:\\ 1247dd7cddfSDavid du Colombier :mx#0:sf:sh:rs:" 1257dd7cddfSDavid du Colombier fi 1267dd7cddfSDavid du Colombier echo "\ 1277dd7cddfSDavid du Colombier# Entry for device $device (output to $base.raw) 1287dd7cddfSDavid du Colombier$device|Ghostscript device $device:\\ 1297dd7cddfSDavid du Colombier :lp=/dev/null:\\" 1307dd7cddfSDavid du Colombier else 1317dd7cddfSDavid du Colombier echo "\ 1327dd7cddfSDavid du Colombier# Entry for device $device 1337dd7cddfSDavid du Colombier$device|Ghostscript device $device:\\ 1347dd7cddfSDavid du Colombier :lp=$PRINTERDEV:\\" 1357dd7cddfSDavid du Colombier if test "$PRINTERTYPE" = serial 1367dd7cddfSDavid du Colombier then 1377dd7cddfSDavid du Colombier echo "br#19200:xc#0177777:\\" 1387dd7cddfSDavid du Colombier echo ":ms=-parity,ixon,-opost:\\" 1397dd7cddfSDavid du Colombier fi 1407dd7cddfSDavid du Colombier fi 1417dd7cddfSDavid du Colombier echo "\ 1427dd7cddfSDavid du Colombier :sd=$SPOOLDIR/$base:\\ 1437dd7cddfSDavid du Colombier :lf=$SPOOLDIR/$base/logfile:\\ 1447dd7cddfSDavid du Colombier :af=$SPOOLDIR/$base/acct:\\" 1457dd7cddfSDavid du Colombier for filter in $FILTERS 1467dd7cddfSDavid du Colombier do 1477dd7cddfSDavid du Colombier if [ $dualqueue ]; then 1487dd7cddfSDavid du Colombier echo "\ 1497dd7cddfSDavid du Colombier :$filter=$GSFILTERDIR/indirect/$device/gs$filter:\\" 1507dd7cddfSDavid du Colombier else 1517dd7cddfSDavid du Colombier echo "\ 1527dd7cddfSDavid du Colombier :$filter=$GSFILTERDIR/direct/$device/gs$filter:\\" 1537dd7cddfSDavid du Colombier fi 1547dd7cddfSDavid du Colombier done 1557dd7cddfSDavid du Colombier echo "\ 1567dd7cddfSDavid du Colombier :mx#0:sf:sh:rs:" 1577dd7cddfSDavid du Colombierdone 1587dd7cddfSDavid du Colombier) >> $PCAP 1597dd7cddfSDavid du Colombier 1607dd7cddfSDavid du Colombierecho " 1617dd7cddfSDavid du ColombierExample printcap insert file \"$PCAP\" now created" 1627dd7cddfSDavid du Colombier 1637dd7cddfSDavid du Colombier# 1647dd7cddfSDavid du Colombier# Remind the user what's still to do 1657dd7cddfSDavid du Colombier# 1667dd7cddfSDavid du Colombier 1677dd7cddfSDavid du Colombierecho " 1687dd7cddfSDavid du ColombierNB/ You will need to create the following directories, with 1697dd7cddfSDavid du Colombierappropriate permissions, and do 'touch logfile' and 'touch acct' 1707dd7cddfSDavid du Colombierin the top level directories (ie. not the 'raw' ones): 1717dd7cddfSDavid du Colombier" 1727dd7cddfSDavid du Colombier( 1737dd7cddfSDavid du Colombierfor device in $DEVICES 1747dd7cddfSDavid du Colombierdo 1757dd7cddfSDavid du Colombier dualqueue= 1767dd7cddfSDavid du Colombier case "$device" in 1777dd7cddfSDavid du Colombier *.dq) device=`basename $device .dq` ; dualqueue=t ;; 1787dd7cddfSDavid du Colombier esac 1797dd7cddfSDavid du Colombier base="`echo $device | sed 's/\.[0-9][0-9]*$//'`" 1807dd7cddfSDavid du Colombier base="`echo $base | sed 's/\.[0-9][0-9]*$//'`" 1817dd7cddfSDavid du Colombier echo " $SPOOLDIR/$base" 1827dd7cddfSDavid du Colombier if [ $dualqueue ]; then 1837dd7cddfSDavid du Colombier echo " $SPOOLDIR/$base/raw" 1847dd7cddfSDavid du Colombier fi 1857dd7cddfSDavid du Colombierdone 1867dd7cddfSDavid du Colombier) | sort -u 1877dd7cddfSDavid du Colombier 1887dd7cddfSDavid du Colombierecho " 1897dd7cddfSDavid du Colombier + + + " 190