"Fossies" - the Fresh Open Source Software Archive

Member "gs8.54/lib/lprsetup.sh" (29 Dec 2005, 4661 Bytes) of package /linux/misc/old/ghost/AFPL/gs854/gs854os2.zip:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) Bash source code syntax highlighting (style: standard) with prefixed line numbers. Alternatively you can here view or download the uninterpreted source code file.

    1 #!/bin/sh
    2 # $Id: lprsetup.sh 6300 2005-12-28 19:56:24Z giles $
    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         + + + "