[net.micro.pc] PC-Xenix lpr2 for second printer

tsp@wlcrjs.UUCP (Tom Poindexter) (06/21/85)

  I needed a way to use two printers in PC-Xenix, but the "lpr"
command only works with one printer.  Of course I could do something
like "cp file /dev/lp1 &", but I would rather use the spooler (even
if it does have a few quirks).  I created a "lpr2" command by 
hacking a copy of lpr with adb (yuck!, but it works).  A separate
daemon was also needed, and was hacked with the same concept.  The
following shell script should work.
 
  One of the annoying quirks of printing is that /usr/lib/lpd eats
most control and non-ascii characters.  Thus I can't send the 
codes to control an Epson for bold, underscore, etc.  If anyone
has a patch for this, please mail me a copy.  I have asked IBM for
a patch, and they have said "Don't call us, we'll call you".  If they
do come through, or if I find it, I will post it.

Tom Poindexter
	uucp: ihnp4!wlcrjs!tsp
	Compuserve: 70040,1223
	Source: STW526
	Dialcom: 44:SFP008


# - cut here ----- this is a shell script
#
#
# lpr2.sh - makes a "lpr2" command and "lp2" daemon to access a
# second printer.
# also makes a spool directory, /usr/spool/lp2, default commands,
# /etc/default/lp2, and link l2 to the second printer
#
# adb is used to patch the text strings.  if you don't have
# the Software Development package, you can use "debug" under
# DOS to patch:
#	doscp -r /usr/bin/lpr A:lpr2; doscp -r /usr/lib/lpd A:lp2
# (DOS) debug lpr
#	e 29f1 32
#	e 2a6d 32
# 	e 2a7a 32
#	e 2a83 32
#	e 2a8c 32
#	e 2a99 32
#	w
#	q
#	debug lp2
#	e 3a33 32
#	e 3a43 32
#	e 3a61 32
#	e 3ac1 32
#	e 3b47 32
#	e 3b5d 32
#	e 3c06 32
#	w
#	q
#	doscp -r A:lpr2 /usr/bin/lpr2; doscp -r A:lp2 /usr/lib/lp2
#	chmod 711 /usr/bin/lpr2; chmod 4711 /usr/lib/lp2
#	..and make /usr/spool/lp2, /etc/default/lp2, /dev/l2
#	  and chown & chgrp as in this script.
#
# you should be logged-in or su'ed to "root" to run this shell
# execute this script with 'sh lpr2.sh'
#
#
# change all occurances of 'pd' in lpd to 'p2'
# for lpr2 command 
#
cd /usr/bin
cp lpr lpr2
adb -w lpr2 <<\EOF
71:384/w 'p2'
71:508/w 'p2'
71:521/w 'p2'
71:530/w 'p2'
71:539/w 'p2'
71:552/w 'p2'
$q
EOF
chown bin lpr2
chgrp bin lpr2
echo '/usr/bin/lpr2 command made'
#
# change all occurance of {/usr/spool,/etc/default}/lpd to lp2
# and /dev/lp to /dev/l2 (see 71:517), for lp2 daemon
#
cd /usr/lib
cp lpd lp2
adb -w lp2 <<\EOF
71:50/w  'p2'
71:66/w  'p2'
71:96/w  'p2'
71:192/w 'p2'
71:326/w 'p2'
71:348/w 'p2'
71:517/w 'l2'
$q
EOF
chown bin lp2
chgrp bin lp2
echo '/usr/lib/lp2 daemon made'
#
# now make the spool directory
#
cd /usr/spool
mkdir lp2
chmod +w lp2
chown bin lp2
chgrp bin lp2
cd lp2
cp /dev/null LOG
chown bin LOG
chgrp bin LOG
echo '/usr/spool/lp2 directory made'
#
# and the default file
#
cd /etc/default
cp lpd lp2
chown bin lp2
chgrp bin lp2
echo '/etc/default/lp2 file made (a copy of /etc/default/lpd)'
#
# finally,  plug in the correct printer you want for lpr2
#
cd /dev
echo '
Shown below is the printer device to which lp (lpr command) is linked.
     '
find . -name 'lp?' -links 2 -print
echo -n '

  Now enter the printer you want to use for lpr2.
  Your response should be different from the device above. 

    lp0 - the first serial/printer board 
    lp1 - the second serial/printer board
    lp2 - the monochrome/printer board
  
  Your choice: '
read printer2
ln $printer2 l2
echo 'l2 linked'
#
cd
echo 'All done.'
echo 'If you already have a printer attached, send some test
output to lpr2, for example "cal | lpr2".'   
# that's all folks!!