home *** CD-ROM | disk | FTP | other *** search
/ PC World 2001 April / PCWorld_2001-04_cd.bin / Software / Vyzkuste / gs / gs650w32.exe / gs6.50 / lib / lprsetup.sh < prev    next >
Linux/UNIX/POSIX Shell Script  |  2000-12-05  |  5KB  |  190 lines

  1. #!/bin/sh
  2. # $Id: lprsetup.sh,v 1.1 2000/03/09 08:40:40 lpd Exp $
  3. #
  4. # BSD PRINT FILTER SETUP utility for Ghostscript - used and tested on
  5. # SunOS 4.1.3, but I hope it will be useful on other BSD systems
  6. # See documentation for usage
  7. #
  8.  
  9. DEVICES="bjt600.32 bjc600.32 bjc600.24 bjc600.24.3 bjc600.16 bjc600.8 bjc600.8.1 bjc600.1 bjc600.dq"
  10. #FILTERS="if nf tf gf vf df cf rf"
  11. FILTERS="if"
  12.  
  13. # The port your printer is on
  14. PRINTERDEV=/dev/lp1
  15. # The kind of printer (accepted values: 'parallel' and 'serial')
  16. PRINTERTYPE=parallel
  17.  
  18. GSDIR=/usr/local/lib/ghostscript
  19. GSFILTERDIR=$GSDIR/filt
  20. SPOOLDIR=/var/spool
  21. GSIF=unix-lpr.sh
  22. PCAP=printcap.insert
  23.  
  24. PATH=/bin:/usr/bin:/usr/ucb
  25. export PATH
  26.  
  27. if [ ! -w $GSDIR ]; then
  28.   echo "$GSDIR must be writable to create filter directory"
  29.   exit 1
  30. fi
  31.  
  32. echo "
  33. Making links in the filter directory $GSFILTERDIR ...
  34. "
  35.  
  36. #
  37. # Make the directory for holding the filter and links
  38. #
  39. if [ -d $GSFILTERDIR ]; then
  40.   echo "$GSFILTERDIR already exists - not created"
  41. else
  42.   mkdir $GSFILTERDIR
  43. fi
  44. rm -f $GSFILTERDIR/direct
  45. ln -s . $GSFILTERDIR/direct
  46. rm -f $GSFILTERDIR/indirect
  47. ln -s . $GSFILTERDIR/indirect
  48.  
  49. #
  50. # Create a link from each filtertype to the real filter script
  51. #
  52. for filter in $FILTERS
  53. do
  54.   rm -f $GSFILTERDIR/gs$filter
  55.   ln -s  ../$GSIF $GSFILTERDIR/gs$filter
  56. done
  57.  
  58. #
  59. # Create a link from each device to the filter directory
  60. #
  61. for device in $DEVICES
  62. do
  63.   dualqueue=
  64.   case "$device" in
  65.     *.dq) device=`basename $device .dq` ; dualqueue=t ;;
  66.   esac
  67.   rm -f $GSFILTERDIR/$device
  68.   if [ $dualqueue ]; then
  69.     rm -f $GSFILTERDIR/indirect/$device
  70.     ln -s . $GSFILTERDIR/indirect/$device
  71.   else
  72.     rm -f $GSFILTERDIR/direct/$device
  73.     ln -s . $GSFILTERDIR/direct/$device
  74.   fi
  75. done
  76.  
  77. #
  78. # Create a basic printcap insert - this is made in the CURRENT directory
  79. #
  80. rm -f $PCAP
  81. cat > $PCAP << EOF
  82. # This is an example printcap insert for Ghostscript printers
  83. # You will probably want either to change the names for each printer
  84. # below (first line for each device) to something more sensible, or
  85. # to add additional name entries (eg cdjcolor for cdj500.24)
  86. # The example is shown set up for $PRINTERTYPE printers - you will need
  87. # to alter the entries for different or networked remote printer,
  88. # eg. a remote network printer would have a line something like:
  89. #    :lp=:rm=artemis:rp=LPT1:
  90. # for a PC called artemis, replacing the serial port settings
  91. #
  92. # NB/ This is only an example - it is unlikely to be complete or exactly
  93. # correct for your system, but is designed to illustrate filter names 
  94. # corresponding to the accompanying bsd-if print filter
  95. #
  96. EOF
  97.  
  98. (
  99. previous=undefined
  100. for device in $DEVICES
  101. do
  102.   dualqueue=
  103.   case "$device" in
  104.     *.dq) device=`basename $device .dq` ; dualqueue=t ;;
  105.   esac
  106.   base="`echo $device | sed 's/\.[0-9][0-9]*$//'`"
  107.   base="`echo $base | sed 's/\.[0-9][0-9]*$//'`"
  108. #
  109. # If device listed with '.dq' suffix, we set up a separate output queue
  110. #
  111.   if [ $dualqueue ]; then
  112.     if [ $base != $previous ]; then
  113.       previous=$base
  114.       echo "\
  115. # Entry for raw device $base.raw
  116. $base.raw|Raw output device $base:\\
  117.     :lp=$PRINTERDEV:\\"
  118.     if test "$PRINTERTYPE" = serial
  119.     then
  120.     echo "br#19200:xc#0177777:\\"
  121.         echo ":ms=-parity,ixon,-opost:\\"
  122.     fi
  123.     echo ":sd=$SPOOLDIR/$base/raw:\\
  124.     :mx#0:sf:sh:rs:"
  125.     fi
  126.     echo "\
  127. # Entry for device $device (output to $base.raw)
  128. $device|Ghostscript device $device:\\
  129.     :lp=/dev/null:\\"
  130.   else
  131.     echo "\
  132. # Entry for device $device
  133. $device|Ghostscript device $device:\\
  134.     :lp=$PRINTERDEV:\\"
  135.     if test "$PRINTERTYPE" = serial
  136.     then
  137.     echo "br#19200:xc#0177777:\\"
  138.         echo ":ms=-parity,ixon,-opost:\\"
  139.     fi
  140.   fi
  141.   echo "\
  142.     :sd=$SPOOLDIR/$base:\\
  143.     :lf=$SPOOLDIR/$base/logfile:\\
  144.     :af=$SPOOLDIR/$base/acct:\\"
  145.   for filter in $FILTERS
  146.   do
  147.     if [ $dualqueue ]; then
  148.       echo "\
  149.     :$filter=$GSFILTERDIR/indirect/$device/gs$filter:\\"
  150.     else
  151.       echo "\
  152.     :$filter=$GSFILTERDIR/direct/$device/gs$filter:\\"
  153.     fi
  154.   done
  155.   echo "\
  156.     :mx#0:sf:sh:rs:"
  157. done
  158. ) >> $PCAP
  159.  
  160. echo "
  161. Example printcap insert file \"$PCAP\" now created"
  162.  
  163. #
  164. # Remind the user what's still to do
  165. #
  166.  
  167. echo "
  168. NB/ You will need to create the following directories, with
  169. appropriate permissions, and do 'touch logfile' and 'touch acct'
  170. in the top level directories (ie. not the 'raw' ones):
  171. "
  172. (
  173. for device in $DEVICES
  174. do
  175.   dualqueue=
  176.   case "$device" in
  177.     *.dq) device=`basename $device .dq` ; dualqueue=t ;;
  178.   esac
  179.   base="`echo $device | sed 's/\.[0-9][0-9]*$//'`"
  180.   base="`echo $base | sed 's/\.[0-9][0-9]*$//'`"
  181.   echo "  $SPOOLDIR/$base"
  182.   if [ $dualqueue ]; then
  183.     echo "  $SPOOLDIR/$base/raw"
  184.   fi
  185. done
  186. ) | sort -u
  187.  
  188. echo "
  189.         + + + "
  190.