rsalz@uunet.uu.net (Rich Salz) (09/15/88)
Submitted-by: papowell@julius.cs.umn.edu Posting-number: Volume 16, Issue 14 Archive-name: plp/part01 PLP - The Public Line Printer Spooler A Portable UNIX Line Printer Spooler Release 2.0, 1 June 1988 Prof. Patrick Powell Dept. of Computer Science University of Minnesota, Minneapolis, Minnesota PLP is a public domain version of the Berkeley LPD software. The functional resemblance between PLP and the Berkeley Line Printer Spooler (LPD) is intentional; the source code was written without reference to the original Berkeley LPD software, except for some very small sections concerned with networking and the large characters used for banner printing. The PLP software has the following features: 1).The PLP software is intended to be used in a Networked File System (NFS) environment, in which there is a common set of spool queues, as well as in a loosely coupled environment in which each host transfers print jobs to a host which has the printer. 2).Access and permission to use PLP functions is controlled by entries in a printer permissions file (/usr/spool/lpd/printer_perms.<hostname>) which can restrict use by user name, host, spooler, page useage, and a host of other factors. The printcap file (/usr/spool/lpd/printcap.<hostname>) is used to specify the printer queues and their operation. 3).Jobs can now be prioritized. The maximum priority a user can specify is set in the printer permissions file. 4).In addition to the general printer permissions file, each spool queue can have its own addition printer permissions file. 5).Line printer control functions can be exercised from a remote host. Hosts and users with remote control permission are specified by entries in the printer permissions file. 6).Unspooling of jobs can be performed by a printcap specified program, rather than by the PLP unspooler. This allows PLP to be used as a spooler and to have spool queues used for various purposes. 7).Extremely verbose and chatty error messages have been added. These greatly ease debugging and installation. In addition, the checkpc utility can be used to set file permissions and other items for use by the PLP software. 8).The code is quite portable, with as few system dependencies in it as possible. It has run on a VAX 4.2, 4.3, and ULTRIX, SUN 3.0, and DG-UX. ____________ * UNIX is a trademark of ATT Bell Laboratories. #! /bin/sh # This is a shell archive. Remove anything before this line, then unpack # it by saving it into a file and typing "sh file". To overwrite existing # files, type "sh file -c". You can also feed this as standard input via # unshar, or by typing "sh <file", e.g.. If this archive is complete, you # will see the following message at the end: # "End of archive 1 (of 16)." # Contents: MANIFEST Makefile README backup backup/Makefile # backup/lpr.remove backup/lpr.save backup/restore.lpr # backup/save.lpr doc doc/PLP doc/PLP/08.t doc/PLP/Makefile # doc/PLP/README doc/PLP/dict doc/PLP/macros filters # filters/Makefile man man/Makefile man/README printcap # printcap/Makefile printcap/README printcap/genpc printcap/hosts # printcap/hosts/dg printcap/hosts/julius printcap/hosts/umn-cs # printcap/printcap printcap/printers # printcap/printers/apple_lind26a.local # printcap/printers/apple_lind26a.remote # printcap/printers/dg1_lind1.forward # printcap/printers/dg1_lind1.remote # printcap/printers/dg2_lind25.forward # printcap/printers/dg2_lind25.remote # printcap/printers/dg3_lind25.forward # printcap/printers/dg3_lind25.remote # printcap/printers/dgt_lind27.forward # printcap/printers/dgt_lind27.remote # printcap/printers/diablo_lind136.local # printcap/printers/diablo_lind136.remote # printcap/printers/epson_lind27.remote # printcap/printers/hp2563_lind25.forward # printcap/printers/hp2563_lind25.remote # printcap/printers/hp_lind54.forward # printcap/printers/hp_lind54.remote # printcap/printers/imagen_lind27.local # printcap/printers/imagen_lind27.remote # printcap/printers/laserjetplus_lind25.forward # printcap/printers/laserjetplus_lind25.remote src src/IDENT # src/README src/patchlevel.h src/setstatus.c src/setup_test.c test # test/Makefile test/README test/filter.sh test/linetest.c # test/printcap.proto test/printer_perms.proto test/qh.sh utilities # utilities/IDENT utilities/Makefile utilities/cpr # utilities/cpr/Makefile utilities/print utilities/print/Makefile # utilities/print/print.1 utilities/print/print.sh # Wrapped by papowell@attila on Wed Aug 10 10:44:40 1988 PATH=/bin:/usr/bin:/usr/ucb ; export PATH if test -f 'Makefile' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'Makefile'\" else echo shar: Extracting \"'Makefile'\" \(1091 characters\) sed "s/^X//" >'Makefile' <<'END_OF_FILE' X# *************************************************************************** X# * U. Minnesota LPD Software * Copyright 1987, 1988, Patrick Powell X# *************************************************************************** X# * MODULE: Top level makefile: X# * Make a tar tape for distribution X# *************************************************************************** X# * Revision History: Created Thu Mar 24 12:42:00 CST 1988 X# * $Log$ X# *************************************************************************** X##ifndef lint X#static char id_str1[] = X# "$Header$ PLP Copyright 1988 Patrick Powell"; X#endif lint OUTPUT = /tmp/PLP.tar X all: X @echo 'distr: make distribution' X @echo 'progs: create stuff for installation' X @echo 'see the documentation in doc, and README files' X distr: X tar cf $(OUTPUT) `cat FILES` install: X -mkdir bin X -mkdir lint X cp src/Makefile bin/Makefile X @echo "edit bin/Makefile for your site" clean: X for i in src test backup filters printcap utilities bin; do \ X echo "----- cleaning " $$i "----------" ; \ X (cd $$i; make clean ); \ X done X -rm -f lint/* END_OF_FILE if test 1091 -ne `wc -c <'Makefile'`; then echo shar: \"'Makefile'\" unpacked with wrong size! fi # end of 'Makefile' fi if test -f 'README' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'README'\" else echo shar: Extracting \"'README'\" \(4485 characters\) sed "s/^X//" >'README' <<'END_OF_FILE' X/*************************************************************************** X * U. Minnesota LPD Software * Copyright 1987, 1988, Patrick Powell X *************************************************************************** X * MODULE: README X * Comments about the use of the LPD software X *************************************************************************** X * Revision History: Created Fri Mar 11 14:31:45 CST 1988 Patrick Powell X * $Log$ X ***************************************************************************/ This directory contains the source of the PLP software. This software is functionally compatible with the 1983 Berkeley LPD software, but with enhanced capabilites. See "PLP - Public Line Printer Spooler" in the doc directory. X Directories: RCS bin doc filters man printcap src test X XFiles: README X bin: place to put binaries; cd bin; see Makefile doc: documentation- PLP - Public Line Printer Spooler Manual filters: basic set of filters man: man pages for lpr, etc. printcap: basic set of printcap entries. src: source files for the PLP software test: set of tests RCS: RCS files for src- may not be supplied with distribution. imagen: modified imagen support software- may not be supplied with distribution. Transcript: modified Transcript support software- may not be X supplied with distribution. X Brief Installation Guide. X X1. make a ./bin directory, copy src/Makefile to ./bin. X2. make a ./lint directory; this will be used by lint to put lint output X X3. bin/: Check out the Makefile, and select the system you are compiling for. The "IS_SUN" is for SUNs running UNIX 3.4 and up, the "IS_VAX" is for BSD 4.3, and the "IS_DATAGEN" is for Data Generals. These flags are used mainly to set some of the values of defines for lint and other things; there are some diablical differences in determining what is an executable file. X It is strongly suggested that you make a test version (XPERIMENT option in Makefile). This version uses /tmp/printcap and /tmp/printerperms instead of /etc/printcap and /etc/printerperms. In addition, it does NOT run SUID root. It is a safe, clean, and sane way to debug this stuff. The remainder of this document assumes you try the test version first. X X4. bin/: Pray for world peace and enlightenment. While this probably won't help with the next step, it will give you a perspective on problems. Do: X make clean make test X You now have compiled everything. X X5. Read the test procedures in ./doc/PLP, and try them out. X The test directory has a set of files and printcaps that X can be used for test purposes. X X6. backup/ Still feeling brave? You should save the exisiting version of LPD; the backup directory has a set of programs (shell scripts) to do this. The lpr.save file contains a list of things to save and lpr.delete is a list of Berkelely things to delete. Do: X cd ../backup save.lpr X If you want to restore things quickly, you can do: cd ../backup restore.lpr <date of save file> X and you are back to where you were before. X X7. Working verions: bin/Makefile X comment out XPERIMENT flag, and do: X make clean X make all X X8. Setting up printcap and printer perms X The /etc/printcap and other files have been moved to a new location: X /usr/spool/lpd/printcap.<host> - printcap for <host> X /usr/spool/lpd/printer_perms.<host> - printer perms for <host> X /usr/spool/lpd/lpd.lock.<host> - lock file for <host> X /usr/spool/lpd/log.<host> - log file for <host> X X If you are running an NFS environment, this allows you to share X a common spool directory for all of the lpd daemons. Note that X the use of symbolic links from /usr/spool/lpd/printcap.<host> X to the old /etc/printcap file can be used temporarily to get X you going. X X9. After you have set up the printcap and other files, you can try X and installing the new version. X make install X X10. And what is a system without documentation? install the man pages by hand. X X11. You will probably find that your filters need fumbling with. If you have problems with the Imagen stuff, we have a version that is ALMOST civilized. The standard Imagen installation procedures are TOO clever by half; what we did was to rip out only the imprint, ipr, and the communications stuff. Contact us if you need these. X X12. Similarly we have a somewhat civilized version of the Adobe Transcript software. The existing version is (as far as we can tell) functionally compatible with PLP. END_OF_FILE if test 4485 -ne `wc -c <'README'`; then echo shar: \"'README'\" unpacked with wrong size! fi # end of 'README' fi if test ! -d 'backup' ; then echo shar: Creating directory \"'backup'\" mkdir 'backup' fi if test -f 'backup/Makefile' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'backup/Makefile'\" else echo shar: Extracting \"'backup/Makefile'\" \(262 characters\) sed "s/^X//" >'backup/Makefile' <<'END_OF_FILE' X# X# Save, Delete, and Restore the UCB Printer Spooler X# X# Thu Mar 17 17:11:04 CST 1988 Patrick Powell X save: X save.lpr X restore: X restore.lpr `echo backup.lpr.* | sed -e 's/backup.lpr.//g' ` X remove: X rm -f `cat lpr.remove` X clean: X -rm backup.lpr.* perms.lpr.* END_OF_FILE if test 262 -ne `wc -c <'backup/Makefile'`; then echo shar: \"'backup/Makefile'\" unpacked with wrong size! fi # end of 'backup/Makefile' fi if test -f 'backup/lpr.remove' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'backup/lpr.remove'\" else echo shar: Extracting \"'backup/lpr.remove'\" \(66 characters\) sed "s/^X//" >'backup/lpr.remove' <<'END_OF_FILE' X/usr/ucb/lpr X/usr/ucb/lprm X/usr/ucb/lpq X/usr/lib/lpd X/usr/etc/lpc END_OF_FILE if test 66 -ne `wc -c <'backup/lpr.remove'`; then echo shar: \"'backup/lpr.remove'\" unpacked with wrong size! fi # end of 'backup/lpr.remove' fi if test -f 'backup/lpr.save' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'backup/lpr.save'\" else echo shar: Extracting \"'backup/lpr.save'\" \(80 characters\) sed "s/^X//" >'backup/lpr.save' <<'END_OF_FILE' X/usr/ucb/lpr X/usr/ucb/lprm X/usr/ucb/lpq X/usr/lib/lpd X/usr/etc/lpc X/etc/printcap END_OF_FILE if test 80 -ne `wc -c <'backup/lpr.save'`; then echo shar: \"'backup/lpr.save'\" unpacked with wrong size! fi # end of 'backup/lpr.save' fi if test -f 'backup/restore.lpr' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'backup/restore.lpr'\" else echo shar: Extracting \"'backup/restore.lpr'\" \(408 characters\) sed "s/^X//" >'backup/restore.lpr' <<'END_OF_FILE' X#!/bin/csh -f echo $0 if ( ${?argv} == 0 || ${#argv} != 1 ) then X echo "usage: $0 date (date is in format ddMONyyyy)" X exit 1 endif set suffix=$1 rm -f `cat lpr.save` tar xpvf backup.lpr.${suffix} ls -lg `cat lpr.save` > /tmp/perms$$ diff perms.lpr.${suffix} /tmp/perms$$ set stat=$status rm -f /tmp/perms$$ if ($stat != 0) then X echo WARNING: restored LPR is not the same as it should be endif exit $stat END_OF_FILE if test 408 -ne `wc -c <'backup/restore.lpr'`; then echo shar: \"'backup/restore.lpr'\" unpacked with wrong size! fi chmod +x 'backup/restore.lpr' # end of 'backup/restore.lpr' fi if test -f 'backup/save.lpr' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'backup/save.lpr'\" else echo shar: Extracting \"'backup/save.lpr'\" \(156 characters\) sed "s/^X//" >'backup/save.lpr' <<'END_OF_FILE' X#!/bin/csh -f set df=(`date`) set suffix="${df[3]}${df[2]}${df[6]}" ls -lg `cat lpr.save` > perms.lpr.${suffix} tar cvf backup.lpr.${suffix} `cat lpr.save` END_OF_FILE if test 156 -ne `wc -c <'backup/save.lpr'`; then echo shar: \"'backup/save.lpr'\" unpacked with wrong size! fi chmod +x 'backup/save.lpr' # end of 'backup/save.lpr' fi if test ! -d 'doc' ; then echo shar: Creating directory \"'doc'\" mkdir 'doc' fi if test ! -d 'doc/PLP' ; then echo shar: Creating directory \"'doc/PLP'\" mkdir 'doc/PLP' fi if test -f 'doc/PLP/08.t' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'doc/PLP/08.t'\" else echo shar: Extracting \"'doc/PLP/08.t'\" \(1064 characters\) sed "s/^X//" >'doc/PLP/08.t' <<'END_OF_FILE' X.ig X$Header: 08.t,v 1.1 88/05/21 18:39:46 papowell Locked $ X$log$ X.. X.bp X.NH 1 Shared or NFS File Systems X.PP In an NFS environment, a common or shared spool directory can be used to avoid needless copying or duplicate fules. The X.I lpr program places jobs in the shared spooling directory and then requests the X.I lpd daemon on the appropriate remote machine to start unspooling actions. The X.B nw X(networked file system) flag and X.B rm X(remote machine) are used to indicate this type of file system organization. X.PP In this environment, only machines which have printers attached or are acting as forwarding systems to other machines need to have an X.I lpd daemon running. X.PP One of the problems with the current implementation of the NFS distributed file system support is the current lack of support for X.I "file locking" across file systems. The current implemenation of PLP uses either the X.I lockf or X.I flock facility, selected at compilation time. Work is underway to use a network supported file locking facility to better support shared file systems. END_OF_FILE if test 1064 -ne `wc -c <'doc/PLP/08.t'`; then echo shar: \"'doc/PLP/08.t'\" unpacked with wrong size! fi # end of 'doc/PLP/08.t' fi if test -f 'doc/PLP/Makefile' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'doc/PLP/Makefile'\" else echo shar: Extracting \"'doc/PLP/Makefile'\" \(287 characters\) sed "s/^X//" >'doc/PLP/Makefile' <<'END_OF_FILE' X# X#$Header: Makefile,v 1.1 88/05/21 18:39:56 papowell Locked $ X#$Log: Makefile,v $ X# Revision 1.1 88/05/21 18:39:56 papowell X# Initial revision X# X# Make the manual. X# needs tbl, -ms macros X# tbl *.t | troff -ms X# typeset -t -ms -Tdumb *.t >paper.n all: X typeset -rC1 -t -ms -Ti *.t END_OF_FILE if test 287 -ne `wc -c <'doc/PLP/Makefile'`; then echo shar: \"'doc/PLP/Makefile'\" unpacked with wrong size! fi # end of 'doc/PLP/Makefile' fi if test -f 'doc/PLP/README' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'doc/PLP/README'\" else echo shar: Extracting \"'doc/PLP/README'\" \(186 characters\) sed "s/^X//" >'doc/PLP/README' <<'END_OF_FILE' X# Thu Dec 17 10:07:13 CST 1987 Patrick Powell The PLP manual is an updated version of the PLP documentation. It needs tbl to format properly. X There are many updates, read it carefully. END_OF_FILE if test 186 -ne `wc -c <'doc/PLP/README'`; then echo shar: \"'doc/PLP/README'\" unpacked with wrong size! fi # end of 'doc/PLP/README' fi if test -f 'doc/PLP/dict' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'doc/PLP/dict'\" else echo shar: Extracting \"'doc/PLP/dict'\" \(319 characters\) sed "s/^X//" >'doc/PLP/dict' <<'END_OF_FILE' X(null) X(null) Aprinter Bprinter CS CW Dept Dprinter XEprinter XFC Imagen LPC LPD Ops SUID admin daemon daemons dev formatter gethostent host.equiv hostname inet lib lpc lpd perms printcap printer,tcp printerperms prioritize prioritized queueing rc rc.local rcmd rshd server.adm spoolqueues userid userids wildcard X(null) END_OF_FILE if test 319 -ne `wc -c <'doc/PLP/dict'`; then echo shar: \"'doc/PLP/dict'\" unpacked with wrong size! fi # end of 'doc/PLP/dict' fi if test -f 'doc/PLP/macros' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'doc/PLP/macros'\" else echo shar: Extracting \"'doc/PLP/macros'\" \(129 characters\) sed "s/^X//" >'doc/PLP/macros' <<'END_OF_FILE' X. \" CW - L - Helvetica X.de L X.nr pq \\n(.f X.if t .ft CW X.if n .ft 1 X.if !\e\\$1\e\e \&\\s-\\n(Ls\\$1\|\\s+\\n(Ls\f\\n(pq\\$2 X.. END_OF_FILE if test 129 -ne `wc -c <'doc/PLP/macros'`; then echo shar: \"'doc/PLP/macros'\" unpacked with wrong size! fi # end of 'doc/PLP/macros' fi if test ! -d 'filters' ; then echo shar: Creating directory \"'filters'\" mkdir 'filters' fi if test -f 'filters/Makefile' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'filters/Makefile'\" else echo shar: Extracting \"'filters/Makefile'\" \(848 characters\) sed "s/^X//" >'filters/Makefile' <<'END_OF_FILE' X# Public Domain LPD Copyright 1988 Patrick Powell X# Filters: X# Filters consist of a front end program (main.c), which sets up X# arguments and then calls filter(stopstr). If filter hits the X# "stopstr" in its input, is should suspend itself. On resumption, X# it should take whatever actions are needed (ioctl call, etc.) X# to reset the printer to a known state. X# X CFLAGS= -g LIB= /usr/local/new/lib X PRINTER=lpf X VARIAN= vpf vdmp X X ALL= ${PRINTER} ${VARIAN} X all: ${ALL} X lpf: main.o lpf.c X ${CC} -o lpf -DPRINTRONIX ${CFLAGS} main.o lpf.c X X vpf: main.o lpf.c X ${CC} -o vpf -DVERSATEC ${CFLAGS} main.o lpf.c X vdmp: main.o vdmp.c X ${CC} -o vdmp ${CFLAGS} main.o vdmp.c X install: ${ALL} X -for i in ${ALL}; \ X do \ X install -c $$i ${DESTDIR}${LIB}; \ X done; X clean: X rm -f ${ALL} *.o X print: X @pr Makefile X @${CXREF} *.c | pr -h XREF X @pr *.h *.c END_OF_FILE if test 848 -ne `wc -c <'filters/Makefile'`; then echo shar: \"'filters/Makefile'\" unpacked with wrong size! fi # end of 'filters/Makefile' fi if test ! -d 'man' ; then echo shar: Creating directory \"'man'\" mkdir 'man' fi if test -f 'man/Makefile' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'man/Makefile'\" else echo shar: Extracting \"'man/Makefile'\" \(219 characters\) sed "s/^X//" >'man/Makefile' <<'END_OF_FILE' MAN= /usr/man/ all: clean: install: X for i in *.1; \ X do \ X install -c $i $(MAN)/man1; \ X done; X for i in *.5; \ X do \ X install -c $i $(MAN)/man5; \ X done; X for i in *.8; \ X do \ X install -c $i $(MAN)/man8; \ X done; END_OF_FILE if test 219 -ne `wc -c <'man/Makefile'`; then echo shar: \"'man/Makefile'\" unpacked with wrong size! fi # end of 'man/Makefile' fi if test -f 'man/README' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'man/README'\" else echo shar: Extracting \"'man/README'\" \(110 characters\) sed "s/^X//" >'man/README' <<'END_OF_FILE' Mon Nov 9 08:51:07 CST 1987 Patrick Powell Update printer.1 and printers.1 to reflect your local operations. END_OF_FILE if test 110 -ne `wc -c <'man/README'`; then echo shar: \"'man/README'\" unpacked with wrong size! fi # end of 'man/README' fi if test ! -d 'printcap' ; then echo shar: Creating directory \"'printcap'\" mkdir 'printcap' fi if test -f 'printcap/Makefile' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'printcap/Makefile'\" else echo shar: Extracting \"'printcap/Makefile'\" \(184 characters\) sed "s/^X//" >'printcap/Makefile' <<'END_OF_FILE' X#Wed Nov 25 12:24:47 CST 1987 Patrick Powell X# This is an ugly file that will attempt to make your specified device X SHELL=/bin/sh X all: X genpc hosts/* clean: X -rm printcap/*.printcap END_OF_FILE if test 184 -ne `wc -c <'printcap/Makefile'`; then echo shar: \"'printcap/Makefile'\" unpacked with wrong size! fi # end of 'printcap/Makefile' fi if test -f 'printcap/README' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'printcap/README'\" else echo shar: Extracting \"'printcap/README'\" \(1061 characters\) sed "s/^X//" >'printcap/README' <<'END_OF_FILE' Created Mon Nov 23 14:08:45 CST 1987 Patrick Powell and Scott Fischer X This directory contains two major directories involved in creating a printcap file for the Line Printer Spooler. X The "printers" directory contains printcap entries for each printer, to be used "locally" or "remotely"; if the printer is attached to the host, the "local" entry should be in the /etc/printcap; if it is not on the machine, then the "remote" entry should be present. X The "hosts" directory contains two entries for each host: X1. a host.printcap file, generated by the genpc shell script X2. a host printer description file which contains a list of X printers available to the host X XFor example, the file ./hosts/cs contains a list of printers local to the VAX and remote: X imagen_lind27.local diablo_lind136.local epson_lind27.local X dgt_lind27.remote laserjet_lind25.remote X .... Remote printers have the entry <printername>.remote, local use X<printername>.local X The genpc program will create the printcap file for the specified host and put it in host/<host>.printcap file END_OF_FILE if test 1061 -ne `wc -c <'printcap/README'`; then echo shar: \"'printcap/README'\" unpacked with wrong size! fi # end of 'printcap/README' fi if test -f 'printcap/genpc' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'printcap/genpc'\" else echo shar: Extracting \"'printcap/genpc'\" \(743 characters\) sed "s/^X//" >'printcap/genpc' <<'END_OF_FILE' X#!/bin/csh -f set HOSTDIR = hosts/ set PRINTCAP = printcap/ set PRINTERDIR = printers/ X foreach host ($*) X set host = $host:t X set host = $host:r X if ( ! -e ${HOSTDIR}${host} || ! -f ${HOSTDIR}${host} ) then X echo Host ${host} does not exist X exit 1 X endif X echo Updating printcap for ${host} X echo "# printcap file created " `date` > ${PRINTCAP}${host}.printcap X if( $status ) then X echo "error creating ${HOSTDIR}${host}.printcap" X exit 1 X endif X echo host $host has the following printers: X cat ${HOSTDIR}${host} X foreach printer (`cat ${HOSTDIR}${host}`) X if ( -f ${PRINTERDIR}${printer}) then X cat ${PRINTERDIR}${printer} >> ${PRINTCAP}${host}.printcap X else X echo No printcap for ${printer} X exit 1 X endif X end end exit 0 END_OF_FILE if test 743 -ne `wc -c <'printcap/genpc'`; then echo shar: \"'printcap/genpc'\" unpacked with wrong size! fi chmod +x 'printcap/genpc' # end of 'printcap/genpc' fi if test ! -d 'printcap/hosts' ; then echo shar: Creating directory \"'printcap/hosts'\" mkdir 'printcap/hosts' fi if test -f 'printcap/hosts/dg' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'printcap/hosts/dg'\" else echo shar: Extracting \"'printcap/hosts/dg'\" \(220 characters\) sed "s/^X//" >'printcap/hosts/dg' <<'END_OF_FILE' imagen_lind27.remote diablo_lind136.remote epson_lind27.remote dgt_lind27.remote dg1_lind1.remote dg2_lind25.remote dg3_lind25.remote hp_lind54.remote laserjetplus_lind25.remote hp2563_lind25.remote apple_lind26a.remote END_OF_FILE if test 220 -ne `wc -c <'printcap/hosts/dg'`; then echo shar: \"'printcap/hosts/dg'\" unpacked with wrong size! fi # end of 'printcap/hosts/dg' fi if test -f 'printcap/hosts/julius' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'printcap/hosts/julius'\" else echo shar: Extracting \"'printcap/hosts/julius'\" \(200 characters\) sed "s/^X//" >'printcap/hosts/julius' <<'END_OF_FILE' imagen_lind27.remote diablo_lind136.remote dgt_lind27.remote dg1_lind1.remote dg2_lind25.remote dg3_lind25.remote hp_lind54.remote laserjetplus_lind25.remote hp2563_lind25.remote apple_lind26a.remote END_OF_FILE if test 200 -ne `wc -c <'printcap/hosts/julius'`; then echo shar: \"'printcap/hosts/julius'\" unpacked with wrong size! fi # end of 'printcap/hosts/julius' fi if test -f 'printcap/hosts/umn-cs' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'printcap/hosts/umn-cs'\" else echo shar: Extracting \"'printcap/hosts/umn-cs'\" \(184 characters\) sed "s/^X//" >'printcap/hosts/umn-cs' <<'END_OF_FILE' imagen_lind27.local dgt_lind27.forward dg1_lind1.forward dg2_lind25.forward dg3_lind25.forward hp_lind54.forward laserjetplus_lind25.forward hp2563_lind25.forward diablo_lind136.local END_OF_FILE if test 184 -ne `wc -c <'printcap/hosts/umn-cs'`; then echo shar: \"'printcap/hosts/umn-cs'\" unpacked with wrong size! fi # end of 'printcap/hosts/umn-cs' fi if test ! -d 'printcap/printcap' ; then echo shar: Creating directory \"'printcap/printcap'\" mkdir 'printcap/printcap' fi if test ! -d 'printcap/printers' ; then echo shar: Creating directory \"'printcap/printers'\" mkdir 'printcap/printers' fi if test -f 'printcap/printers/apple_lind26a.local' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'printcap/printers/apple_lind26a.local'\" else echo shar: Extracting \"'printcap/printers/apple_lind26a.local'\" \(530 characters\) sed "s/^X//" >'printcap/printers/apple_lind26a.local' <<'END_OF_FILE' X# Apple laserwriter X# attached to whatever we have X# Thu Dec 10 21:51:54 CST 1987 apple_lind26a|ai-laser|ai|ps|postscript|PostScript:\ X :lp=/dev/ai:sd=/usr/spool/lp-ai:\ X :lf=/usr/adm/ai-log:af=/usr/adm/ai.acct:\ X :br#9600:rw:fc#0000374:fs#0000003:xc#0:xs#0040040:mx#0:sf:sb:\ X :if=/usr/local/lib/ps/psif:\ X :of=/usr/local/lib/ps/psof:gf=/usr/local/lib/ps/psgf:\ X :nf=/usr/local/lib/ps/psnf:tf=/usr/local/lib/ps/pstf:\ X :rf=/usr/local/lib/ps/psrf:vf=/usr/local/lib/ps/psvf:\ X :cf=/usr/local/lib/ps/pscf:df=/usr/local/lib/ps/psdf: END_OF_FILE if test 530 -ne `wc -c <'printcap/printers/apple_lind26a.local'`; then echo shar: \"'printcap/printers/apple_lind26a.local'\" unpacked with wrong size! fi # end of 'printcap/printers/apple_lind26a.local' fi if test -f 'printcap/printers/apple_lind26a.remote' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'printcap/printers/apple_lind26a.remote'\" else echo shar: Extracting \"'printcap/printers/apple_lind26a.remote'\" \(189 characters\) sed "s/^X//" >'printcap/printers/apple_lind26a.remote' <<'END_OF_FILE' X# Apple laserwriter X# attached to whatever we have X# Thu Dec 10 21:51:54 CST 1987 apple_lind26a|ai-laser|ai|ps|postscript|PostScript:\ X :lp=:rm=??:rp=apple_lind26a:\ X :sd=/usr/spool/lp-ai: END_OF_FILE if test 189 -ne `wc -c <'printcap/printers/apple_lind26a.remote'`; then echo shar: \"'printcap/printers/apple_lind26a.remote'\" unpacked with wrong size! fi # end of 'printcap/printers/apple_lind26a.remote' fi if test -f 'printcap/printers/dg1_lind1.forward' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'printcap/printers/dg1_lind1.forward'\" else echo shar: Extracting \"'printcap/printers/dg1_lind1.forward'\" \(295 characters\) sed "s/^X//" >'printcap/printers/dg1_lind1.forward' <<'END_OF_FILE' X# Tue Dec 1 19:38:11 CST 1987 Patrick Powell X# The dglpf filter uses the name printer, must be of form "dgxxx" X# where xxx is destination line printer on dg. dglpr1|dg1_lind1|dg1|dg-lpr1:\ X :lp=/dev/null:sd=/usr/spool/lp-dglpr1:\ X :af=acct:if=/usr/local/new/lib/remotesite -prefix=dg -site=dg: END_OF_FILE if test 295 -ne `wc -c <'printcap/printers/dg1_lind1.forward'`; then echo shar: \"'printcap/printers/dg1_lind1.forward'\" unpacked with wrong size! fi # end of 'printcap/printers/dg1_lind1.forward' fi if test -f 'printcap/printers/dg1_lind1.remote' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'printcap/printers/dg1_lind1.remote'\" else echo shar: Extracting \"'printcap/printers/dg1_lind1.remote'\" \(184 characters\) sed "s/^X//" >'printcap/printers/dg1_lind1.remote' <<'END_OF_FILE' X# Tue Dec 1 19:38:11 CST 1987 Patrick Powell X# send this to the vax, which forwards to the DG X# dglpr1|dg1_lind1|dg1|dg-lpr1:\ X :lp=:rm=umn-cs:rp=dglpr1:\ X :sd=/usr/spool/lp-dglpr1: END_OF_FILE if test 184 -ne `wc -c <'printcap/printers/dg1_lind1.remote'`; then echo shar: \"'printcap/printers/dg1_lind1.remote'\" unpacked with wrong size! fi # end of 'printcap/printers/dg1_lind1.remote' fi if test -f 'printcap/printers/dg2_lind25.forward' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'printcap/printers/dg2_lind25.forward'\" else echo shar: Extracting \"'printcap/printers/dg2_lind25.forward'\" \(296 characters\) sed "s/^X//" >'printcap/printers/dg2_lind25.forward' <<'END_OF_FILE' X# Tue Dec 1 19:38:11 CST 1987 Patrick Powell X# The dglpf filter uses the name printer, must be of form "dgxxx" X# where xxx is destination line printer on dg. dglpr2|dg2_lind25|dg2|dg-lpr2:\ X :lp=/dev/null:sd=/usr/spool/lp-dglpr2:\ X :af=acct:if=/usr/local/new/lib/remotesite -prefix=dg -site=dg: END_OF_FILE if test 296 -ne `wc -c <'printcap/printers/dg2_lind25.forward'`; then echo shar: \"'printcap/printers/dg2_lind25.forward'\" unpacked with wrong size! fi # end of 'printcap/printers/dg2_lind25.forward' fi if test -f 'printcap/printers/dg2_lind25.remote' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'printcap/printers/dg2_lind25.remote'\" else echo shar: Extracting \"'printcap/printers/dg2_lind25.remote'\" \(246 characters\) sed "s/^X//" >'printcap/printers/dg2_lind25.remote' <<'END_OF_FILE' X# Tue Dec 1 19:38:11 CST 1987 Patrick Powell X# The dglpf filter uses the name printer, must be of form "dgxxx" X# where xxx is destination line printer on dg. dglpr2|dg2_lind25|dg2|dg-lpr2:\ X :lp=:rm=umn-cs:rp=dglpr2:\ X :sd=/usr/spool/lp-dglpr2: END_OF_FILE if test 246 -ne `wc -c <'printcap/printers/dg2_lind25.remote'`; then echo shar: \"'printcap/printers/dg2_lind25.remote'\" unpacked with wrong size! fi # end of 'printcap/printers/dg2_lind25.remote' fi if test -f 'printcap/printers/dg3_lind25.forward' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'printcap/printers/dg3_lind25.forward'\" else echo shar: Extracting \"'printcap/printers/dg3_lind25.forward'\" \(296 characters\) sed "s/^X//" >'printcap/printers/dg3_lind25.forward' <<'END_OF_FILE' X# Tue Dec 1 19:38:11 CST 1987 Patrick Powell X# The dglpf filter uses the name printer, must be of form "dgxxx" X# where xxx is destination line printer on dg. dglpr3|dg3_lind25|dg3|dg-lpr3:\ X :lp=/dev/null:sd=/usr/spool/lp-dglpr3:\ X :af=acct:if=/usr/local/new/lib/remotesite -prefix=dg -site=dg: END_OF_FILE if test 296 -ne `wc -c <'printcap/printers/dg3_lind25.forward'`; then echo shar: \"'printcap/printers/dg3_lind25.forward'\" unpacked with wrong size! fi # end of 'printcap/printers/dg3_lind25.forward' fi if test -f 'printcap/printers/dg3_lind25.remote' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'printcap/printers/dg3_lind25.remote'\" else echo shar: Extracting \"'printcap/printers/dg3_lind25.remote'\" \(246 characters\) sed "s/^X//" >'printcap/printers/dg3_lind25.remote' <<'END_OF_FILE' X# Tue Dec 1 19:38:11 CST 1987 Patrick Powell X# The dglpf filter uses the name printer, must be of form "dgxxx" X# where xxx is destination line printer on dg. dglpr3|dg3_lind25|dg3|dg-lpr3:\ X :lp=:rm=umn-cs:rp=dglpr3:\ X :sd=/usr/spool/lp-dglpr3: END_OF_FILE if test 246 -ne `wc -c <'printcap/printers/dg3_lind25.remote'`; then echo shar: \"'printcap/printers/dg3_lind25.remote'\" unpacked with wrong size! fi # end of 'printcap/printers/dg3_lind25.remote' fi if test -f 'printcap/printers/dgt_lind27.forward' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'printcap/printers/dgt_lind27.forward'\" else echo shar: Extracting \"'printcap/printers/dgt_lind27.forward'\" \(317 characters\) sed "s/^X//" >'printcap/printers/dgt_lind27.forward' <<'END_OF_FILE' X# Tue Dec 1 19:38:11 CST 1987 Patrick Powell X# The dglpf filter uses the name printer, must be of form "dgxxx" X# where xxx is destination line printer on dg. dglpt|dgt_lind27|dgt|dg-lprt|dglprt|dg-lpt|lprt|lpt:\ X :lp=/dev/null:sd=/usr/spool/lp-dglpt:\ X :af=acct:if=/usr/local/new/lib/remotesite -prefix=dg -site=dg: END_OF_FILE if test 317 -ne `wc -c <'printcap/printers/dgt_lind27.forward'`; then echo shar: \"'printcap/printers/dgt_lind27.forward'\" unpacked with wrong size! fi # end of 'printcap/printers/dgt_lind27.forward' fi if test -f 'printcap/printers/dgt_lind27.remote' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'printcap/printers/dgt_lind27.remote'\" else echo shar: Extracting \"'printcap/printers/dgt_lind27.remote'\" \(266 characters\) sed "s/^X//" >'printcap/printers/dgt_lind27.remote' <<'END_OF_FILE' X# Tue Dec 1 19:38:11 CST 1987 Patrick Powell X# The dglpf filter uses the name printer, must be of form "dgxxx" X# where xxx is destination line printer on dg. dglpt|dgt_lind27|dgt|dg-lprt|dglprt|dg-lpt|lprt|lpt:\ X :lp=:rm=umn-cs:rp=dglpt:\ X :sd=/usr/spool/lp-dglpt: END_OF_FILE if test 266 -ne `wc -c <'printcap/printers/dgt_lind27.remote'`; then echo shar: \"'printcap/printers/dgt_lind27.remote'\" unpacked with wrong size! fi # end of 'printcap/printers/dgt_lind27.remote' fi if test -f 'printcap/printers/diablo_lind136.local' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'printcap/printers/diablo_lind136.local'\" else echo shar: Extracting \"'printcap/printers/diablo_lind136.local'\" \(217 characters\) sed "s/^X//" >'printcap/printers/diablo_lind136.local' <<'END_OF_FILE' X# Diablo 630 printer X# Wed Dec 9 11:01:09 CST 1987 X# Paper Feed Option diablo_lind136|lp2|lind136|diablo:\ X :sc:sf:\ X :lp=/dev/lp2:br#1200:sd=/usr/spool/lp-lpd2:\ X :if=/usr/local/lib/dpf:fc#00010:fs#00022:xs#040000: END_OF_FILE if test 217 -ne `wc -c <'printcap/printers/diablo_lind136.local'`; then echo shar: \"'printcap/printers/diablo_lind136.local'\" unpacked with wrong size! fi # end of 'printcap/printers/diablo_lind136.local' fi if test -f 'printcap/printers/diablo_lind136.remote' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'printcap/printers/diablo_lind136.remote'\" else echo shar: Extracting \"'printcap/printers/diablo_lind136.remote'\" \(168 characters\) sed "s/^X//" >'printcap/printers/diablo_lind136.remote' <<'END_OF_FILE' X# Diablo 630 X# Wed Dec 9 11:00:22 CST 1987 Patrick Powell X# Remote diablo_lind136|lp2|lind136|diablo:\ X :lp=:rm=umn-cs:rp=lp2:\ X :sd=/usr/spool/lp-lpd2: END_OF_FILE if test 168 -ne `wc -c <'printcap/printers/diablo_lind136.remote'`; then echo shar: \"'printcap/printers/diablo_lind136.remote'\" unpacked with wrong size! fi # end of 'printcap/printers/diablo_lind136.remote' fi if test -f 'printcap/printers/epson_lind27.remote' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'printcap/printers/epson_lind27.remote'\" else echo shar: Extracting \"'printcap/printers/epson_lind27.remote'\" \(128 characters\) sed "s/^X//" >'printcap/printers/epson_lind27.remote' <<'END_OF_FILE' X# X# Entry for the EPSON printer X# - attached to CRUDO X# - serial line, 9600 BPS X# - etc... epson_lind27|epson:\ X :lp=/dev/null: END_OF_FILE if test 128 -ne `wc -c <'printcap/printers/epson_lind27.remote'`; then echo shar: \"'printcap/printers/epson_lind27.remote'\" unpacked with wrong size! fi # end of 'printcap/printers/epson_lind27.remote' fi if test -f 'printcap/printers/hp2563_lind25.forward' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'printcap/printers/hp2563_lind25.forward'\" else echo shar: Extracting \"'printcap/printers/hp2563_lind25.forward'\" \(302 characters\) sed "s/^X//" >'printcap/printers/hp2563_lind25.forward' <<'END_OF_FILE' X# Tue Dec 1 19:38:11 CST 1987 Patrick Powell X# The hp filter uses the name printer, must be of form "dgxxx" X# where xxx is destination line printer on dg. hplp2563|hp2563_lind25|hp3|hpline:\ X :sc:sf:\ X :lp=/dev/null:sd=/usr/spool/lp-hplp3:\ X :if=/usr/local/new/lib/remotesite -prefix=hp -site=donald: END_OF_FILE if test 302 -ne `wc -c <'printcap/printers/hp2563_lind25.forward'`; then echo shar: \"'printcap/printers/hp2563_lind25.forward'\" unpacked with wrong size! fi # end of 'printcap/printers/hp2563_lind25.forward' fi if test -f 'printcap/printers/hp2563_lind25.remote' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'printcap/printers/hp2563_lind25.remote'\" else echo shar: Extracting \"'printcap/printers/hp2563_lind25.remote'\" \(251 characters\) sed "s/^X//" >'printcap/printers/hp2563_lind25.remote' <<'END_OF_FILE' X# Tue Dec 1 19:38:11 CST 1987 Patrick Powell X# The hp filter uses the name printer, must be of form "dgxxx" X# where xxx is destination line printer on dg. hplp2563|hp2563_lind25|hp3|hpline:\ X :lp=:rm=umn-cs:rp=hplp2563:\ X :sd=/usr/spool/lp-hplp2563: END_OF_FILE if test 251 -ne `wc -c <'printcap/printers/hp2563_lind25.remote'`; then echo shar: \"'printcap/printers/hp2563_lind25.remote'\" unpacked with wrong size! fi # end of 'printcap/printers/hp2563_lind25.remote' fi if test -f 'printcap/printers/hp_lind54.forward' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'printcap/printers/hp_lind54.forward'\" else echo shar: Extracting \"'printcap/printers/hp_lind54.forward'\" \(137 characters\) sed "s/^X//" >'printcap/printers/hp_lind54.forward' <<'END_OF_FILE' X# X# Send this using uux hp_lind54|hp1|grad|john|johnpr:\ X :sc:sf:\ X :lp=/dev/null:sd=/usr/spool/lp-johnpr:\ X :if=/usr/local/lib/johnlpf: END_OF_FILE if test 137 -ne `wc -c <'printcap/printers/hp_lind54.forward'`; then echo shar: \"'printcap/printers/hp_lind54.forward'\" unpacked with wrong size! fi # end of 'printcap/printers/hp_lind54.forward' fi if test -f 'printcap/printers/hp_lind54.remote' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'printcap/printers/hp_lind54.remote'\" else echo shar: Extracting \"'printcap/printers/hp_lind54.remote'\" \(118 characters\) sed "s/^X//" >'printcap/printers/hp_lind54.remote' <<'END_OF_FILE' X# X# Send this using uux hp_lind54|hp1|grad|john|johnpr:\ X :lp=:rm=umn-cs:rp=hp_lind54:\ X :sd=/usr/spool/lp-hp_lind54: END_OF_FILE if test 118 -ne `wc -c <'printcap/printers/hp_lind54.remote'`; then echo shar: \"'printcap/printers/hp_lind54.remote'\" unpacked with wrong size! fi # end of 'printcap/printers/hp_lind54.remote' fi if test -f 'printcap/printers/imagen_lind27.local' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'printcap/printers/imagen_lind27.local'\" else echo shar: Extracting \"'printcap/printers/imagen_lind27.local'\" \(1660 characters\) sed "s/^X//" >'printcap/printers/imagen_lind27.local' <<'END_OF_FILE' X# printcap file created Sat Dec 5 07:22:16 CST 1987 X# printcap file created Wed Dec 2 09:02:43 CST 1987 X# X# imagen_* : good for all imagens X# Mon Nov 30 14:34:28 CST 1987 Patrick Powell - Created X# Wed Dec 2 08:58:42 CST 1987 Patrick Powell - fx and -d flags for filters X# Sat Dec 5 20:07:12 CST 1987 Patrick Powell - sc and sf, dimp.old X# Note: uses the UMN imfilter X# NOTE: the imagen software uses the name of the accounting file "af" X# to determine what device it is to use. You MUST have an AF entry X# -- fx sets the allowable formats: just about all right now X# -- sc suppresses copies; sf no form feeds; X# -- lp, af, sd are the device, accounting and spool; defaults for lock and log X# -- br is bitrate, fc/fs are clear/set bits for ioctl. Magic values X# -- af-zf are filters; -v (verbose) option logs a message in log file X# -- note the -Ddimp.old uses old dimp, in /usr/local/new/bin/dimp.old X# -- note the -Ddimp.new uses new dimp; this allows both to be available. X# The typeset command will temporarily use the -Fx format. imagen_lind27|cs-imagen|csimagen|csi|imagen:\ X :fx=cdginfrvt:\ X :sc:sf:\ X :lp=/dev/lp4:\ X :af=cs-imagen:\ X :sd=/usr/spool/lp-cs-imagen:\ X :br#19200:\ X :fc#0177777:\ X :fs#040:\ X :cf=/usr/local/new/lib/icif -v:\ X :df=/usr/local/new/lib/idvi -v:\ X :gf=/usr/local/new/lib/igraph -v:\ X :if=/usr/local/new/lib/ipf -v:\ X :nf=/usr/local/new/lib/idimp -v -Ddimp.old:\ X :rf=/usr/local/new/lib/ifort -v:\ X :tf=/usr/local/new/lib/icat -v:\ X :vf=/usr/local/new/lib/imp -v:\ X :xf=/usr/local/new/lib/idimp -v -Ddimp.new:\ X :mx#10000:\ X :pl#60:\ X :pw#80:\ X :px#2016:\ X :py#2624:\ X :rw:\ X :sb=U of M CSci Department:\ X :S:\ X :sh: END_OF_FILE if test 1660 -ne `wc -c <'printcap/printers/imagen_lind27.local'`; then echo shar: \"'printcap/printers/imagen_lind27.local'\" unpacked with wrong size! fi # end of 'printcap/printers/imagen_lind27.local' fi if test -f 'printcap/printers/imagen_lind27.remote' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'printcap/printers/imagen_lind27.remote'\" else echo shar: Extracting \"'printcap/printers/imagen_lind27.remote'\" \(249 characters\) sed "s/^X//" >'printcap/printers/imagen_lind27.remote' <<'END_OF_FILE' X# Remote connection to imagen_lind27 X# currently on umn-cs X# Tue Dec 1 08:10:28 CST 1987 Patrick Powell - Created X# imagen_lind27|cs-imagen|csimagen|csi|imagen:\ X :fx=cdginfrvt:\ X :sd=/usr/spool/lp-imagen_lind27:\ X :lp=:rm=umn-cs:rp=imagen_lind27: END_OF_FILE if test 249 -ne `wc -c <'printcap/printers/imagen_lind27.remote'`; then echo shar: \"'printcap/printers/imagen_lind27.remote'\" unpacked with wrong size! fi # end of 'printcap/printers/imagen_lind27.remote' fi if test -f 'printcap/printers/laserjetplus_lind25.forward' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'printcap/printers/laserjetplus_lind25.forward'\" else echo shar: Extracting \"'printcap/printers/laserjetplus_lind25.forward'\" \(313 characters\) sed "s/^X//" >'printcap/printers/laserjetplus_lind25.forward' <<'END_OF_FILE' X# Tue Dec 1 19:38:11 CST 1987 Patrick Powell X# The hp filter uses the name printer, must be of form "dgxxx" X# where xxx is destination line printer on dg. hplp|laserjetplus_lind25|laserjet|hp2|hplaser:\ X :sc:sf:\ X :lp=/dev/null:sd=/usr/spool/lp-hplp:\ X :if=/usr/local/new/lib/remotesite -prefix=hp -site=donald: END_OF_FILE if test 313 -ne `wc -c <'printcap/printers/laserjetplus_lind25.forward'`; then echo shar: \"'printcap/printers/laserjetplus_lind25.forward'\" unpacked with wrong size! fi # end of 'printcap/printers/laserjetplus_lind25.forward' fi if test -f 'printcap/printers/laserjetplus_lind25.remote' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'printcap/printers/laserjetplus_lind25.remote'\" else echo shar: Extracting \"'printcap/printers/laserjetplus_lind25.remote'\" \(255 characters\) sed "s/^X//" >'printcap/printers/laserjetplus_lind25.remote' <<'END_OF_FILE' X# Tue Dec 1 19:38:11 CST 1987 Patrick Powell X# The hp filter uses the name printer, must be of form "dgxxx" X# where xxx is destination line printer on dg. hplp|laserjetplus_lind25|laserjet|hp2|hplaser:\ X :lp=:rm=umn-cs:rp=hplp:\ X :sd=/usr/spool/lp-hplp: END_OF_FILE if test 255 -ne `wc -c <'printcap/printers/laserjetplus_lind25.remote'`; then echo shar: \"'printcap/printers/laserjetplus_lind25.remote'\" unpacked with wrong size! fi # end of 'printcap/printers/laserjetplus_lind25.remote' fi if test ! -d 'src' ; then echo shar: Creating directory \"'src'\" mkdir 'src' fi if test -f 'src/IDENT' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'src/IDENT'\" else echo shar: Extracting \"'src/IDENT'\" \(900 characters\) sed "s/^X//" >'src/IDENT' <<'END_OF_FILE' X/*************************************************************************** X * U. Minnesota LPD Software * Copyright 1987, 1988, Patrick Powell X *************************************************************************** X * MODULE: X *************************************************************************** X * Revision History: Created X X * $Log: IDENT,v $ X# Revision 3.1 88/06/18 09:33:47 papowell X# Version 3.0- Distributed Sat Jun 18 1988 X# X# Revision 3.0 88/06/18 09:29:58 papowell X# Version 3.0- Distributed Sat Jun 18 1988 X# X# Revision 2.1 88/05/09 10:07:18 papowell X# PLP: Released Version X# X# Revision 1.1 88/03/25 14:57:20 papowell X# Initial revision X# X ***************************************************************************/ X#ifndef lint static char id_str1[] = X "$Header: IDENT,v 3.1 88/06/18 09:33:47 papowell Exp $ PLP Copyright 1988 Patrick Powell"; X#endif lint END_OF_FILE if test 900 -ne `wc -c <'src/IDENT'`; then echo shar: \"'src/IDENT'\" unpacked with wrong size! fi # end of 'src/IDENT' fi if test -f 'src/README' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'src/README'\" else echo shar: Extracting \"'src/README'\" \(1678 characters\) sed "s/^X//" >'src/README' <<'END_OF_FILE' X/*************************************************************************** X * U. Minnesota LPD Software * Copyright 1987, 1988, Patrick Powell X *************************************************************************** X * MODULE: src/README X * Comments about the use of the LPD software X *************************************************************************** X * Revision History X ***************************************************************************/ This directory contains the source of the LPD software. This software is functionally compatible with the 1983 Berkeley LPD software, but with enhanced capabilites. See "U-MN LPD Installation Guide" in the ../doc directory. X To install the software, you should do the following: X1. make a ../bin directory X2. copy the src/Makefile to ../bin and edit it to reflect your system X3. run the Makefile in ../bin X You will probably want to construct a test version first; this version uses X/tmp/printcap instead of /etc/printcap, and does NOT repeat NOT run as SUID root. You generate this version by setting the XPERIMENT flag in the Makefile. The ../test directory has some test versions of /etc/printcap that it will install; see the Makefile and README in ../test for details. X XExcept for a few specified pieces of code that do banner printing and some network connection code, all of the PLP software was written from a VERY high level description of the Berkeley LPD software. Due to the authors familiarity with the Berkeley LPD software, some names and algorithms are the same (why invent a new square wheel?), but in general there is little commonality between implementations of the two programs. END_OF_FILE if test 1678 -ne `wc -c <'src/README'`; then echo shar: \"'src/README'\" unpacked with wrong size! fi # end of 'src/README' fi if test -f 'src/patchlevel.h' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'src/patchlevel.h'\" else echo shar: Extracting \"'src/patchlevel.h'\" \(4 characters\) sed "s/^X//" >'src/patchlevel.h' <<'END_OF_FILE' X3.2 END_OF_FILE if test 4 -ne `wc -c <'src/patchlevel.h'`; then echo shar: \"'src/patchlevel.h'\" unpacked with wrong size! fi # end of 'src/patchlevel.h' fi if test -f 'src/setstatus.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'src/setstatus.c'\" else echo shar: Extracting \"'src/setstatus.c'\" \(1673 characters\) sed "s/^X//" >'src/setstatus.c' <<'END_OF_FILE' X/*************************************************************************** X * U. Minnesota LPD Software * Copyright 1987, 1988, Patrick Powell X *************************************************************************** X * MODULE: setstatus.c X * Set the lpd status into a status file X *************************************************************************** X * Revision History: Created Sat Jan 9 14:49:44 CST 1988 X * $Log: setstatus.c,v $ X * Revision 3.1 88/06/18 09:35:43 papowell X * Version 3.0- Distributed Sat Jun 18 1988 X * X * Revision 2.1 88/05/09 10:10:21 papowell X * PLP: Released Version X * X * Revision 1.3 88/04/06 12:13:37 papowell X * Minor updates, changes in error message formats. X * Elimination of the AF_UNIX connections, use AF_INET only. X * Better error messages. X * X * Revision 1.2 88/03/12 10:03:36 papowell X * *** empty log message *** X * X * Revision 1.1 88/03/01 11:09:18 papowell X * Initial revision X * X ***************************************************************************/ X#ifndef lint static char id_str1[] = X "$Header: setstatus.c,v 3.1 88/06/18 09:35:43 papowell Exp $ PLP Copyright 1988 Patrick Powell"; X#endif lint X X#include "lp.h" X X/*VARARGS1*/ setstatus(msg, a1, a2, a3, a4, a5) X char *msg; X{ X int fd, i; /* ACME Buggy Whip and Integers, Inc. */ X char buf[BUFSIZ]; X X if( ST && *ST ){ X if( (fd = Exlockcf( ST )) < 0 ){ X logerr(XLOG_INFO, "setstatus: cannot open %s", ST); X } else { X (void)sprintf(buf, msg, a1, a2, a3, a4, a5); X (void)strcat(buf, "\n" ); X i = strlen(buf); X if( write( fd, buf, i ) != i ){ X logerr(XLOG_INFO, "setstatus: write error %s", ST); X } X (void)close(fd); X } X } X} END_OF_FILE if test 1673 -ne `wc -c <'src/setstatus.c'`; then echo shar: \"'src/setstatus.c'\" unpacked with wrong size! fi # end of 'src/setstatus.c' fi if test -f 'src/setup_test.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'src/setup_test.c'\" else echo shar: Extracting \"'src/setup_test.c'\" \(1478 characters\) sed "s/^X//" >'src/setup_test.c' <<'END_OF_FILE' X/*************************************************************************** X * U. Minnesota LPD Software * Copyright 1987, 1988, Patrick Powell X *************************************************************************** X * MODULE: setup_test.c X * sets the test version of things X *************************************************************************** X * Revision History: Created Sun Jan 31 06:09:35 CST 1988 X * $Log: setup_test.c,v $ X * Revision 3.1 88/06/18 09:35:47 papowell X * Version 3.0- Distributed Sat Jun 18 1988 X * X * Revision 2.2 88/05/14 10:21:07 papowell X * Modified -X flag handling X * X * Revision 2.1 88/05/09 10:10:27 papowell X * PLP: Released Version X * X * Revision 1.4 88/04/27 20:27:20 papowell X * Modified to remove unused variables X * X * Revision 1.3 88/04/07 12:31:00 papowell X * X * Revision 1.2 88/03/11 19:29:38 papowell X * Minor Changes, Updates X * X * Revision 1.1 88/03/01 11:09:21 papowell X * Initial revision X * X ***************************************************************************/ X#ifndef lint static char id_str1[] = X "$Header: setup_test.c,v 3.1 88/06/18 09:35:47 papowell Exp $ PLP Copyright 1988 Patrick Powell"; X#endif lint X X#include "lp.h" X Setup_test() X{ X (void)strcpy( Lpdlogf, TDEFLPDLOGF ); X (void)strcpy( Masterlock, TMASTERLOCK ); X Maxportno = TMAXPORTNO; X Minportno = TMINPORTNO; X (void)strcpy( Permfile, TPERMFILE ); X (void)strcpy( Printcap, TPRINTCAP ); X Lpr_port_num = htons( TPORTNUM ); X} END_OF_FILE if test 1478 -ne `wc -c <'src/setup_test.c'`; then echo shar: \"'src/setup_test.c'\" unpacked with wrong size! fi # end of 'src/setup_test.c' fi if test ! -d 'test' ; then echo shar: Creating directory \"'test'\" mkdir 'test' fi if test -f 'test/Makefile' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'test/Makefile'\" else echo shar: Extracting \"'test/Makefile'\" \(1719 characters\) sed "s/^X//" >'test/Makefile' <<'END_OF_FILE' X# Makefile to set up /tmp directories for testing X# Tue Mar 8 11:49:43 CST 1988 Patrick Powell X# This Makefile assumes that ${BIN}/checkpc exists, as it uses it X# $Header: Makefile,v 3.2 88/06/29 09:35:30 papowell Locked $ X# $Log: Makefile,v $ X# Revision 3.2 88/06/29 09:35:30 papowell X# fixed clean entry X# X# Revision 3.1 88/06/18 09:56:25 papowell X# Version 3.0- Distributed Sat Jun 18 1988 X# X# Revision 2.1 88/05/09 10:15:57 papowell X# *** empty log message *** X# X# X# The following entries are available: X# 1. make bin - will make the binaries, install them in temp X# 2. make test1 - creates a printcap, runs ${BIN}/checkpc on it. X# This is the first level test printcap X# 3. make test2 - creates a printcap, runs ${BIN}/checkpc on it. X# This is a second, more complex printcap X# The HOST is the name of the local host, should be full (see printer_perms) X# The USER is the name of the local user X HOST=attila.cs.umn.edu USER=papowell BIN=../bin/ LEVEL=1 TMP=/huge/tmp/ X help: X @echo "uses the HOST and USER environment variables unless overridden" X @echo "make bin, make test1, make test1" X exit 1 pc: X sed -e s/HOST/${HOST}/ -e 's/^#[0-$(LEVEL)]//' -e "s:TMP:${TMP}:g" \ X printcap.proto >${TMP}printcap.${HOST} X ${BIN}/checkpc -X -f -l perms: X sed -e s/HOST/${HOST}/ -e s/USER/${USER}/ printer_perms.proto \ X >${TMP}printer_perms.${HOST} test1: X make LEVEL=1 TMP=${TMP} HOST=${HOST} pc test2: X make LEVEL=2 TMP=${TMP} HOST=${HOST} pc test3: X make LEVEL=3 TMP=${TMP} HOST=${HOST} pc test4: X make LEVEL=4 TMP=${TMP} HOST=${HOST} pc X bin: perms X install -c -m 755 filter.sh ${TMP}filter X install -c -m 755 qh.sh ${TMP}qh X cc -o ${TMP}lpf -DDEBUG ../filters/main.c clean: X -rm -f *.o core lpf END_OF_FILE if test 1719 -ne `wc -c <'test/Makefile'`; then echo shar: \"'test/Makefile'\" unpacked with wrong size! fi # end of 'test/Makefile' fi if test -f 'test/README' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'test/README'\" else echo shar: Extracting \"'test/README'\" \(1163 characters\) sed "s/^X//" >'test/README' <<'END_OF_FILE' Tue Nov 17 21:57:02 CST 1987 Patrick Powell X The files in this directory are intended to be used with the X-DXPERIMENT option of the lpd source. See the "PLP Reference Manual, Section 13" (what else?) for details on how to run the tests. X The files in test/ are sufficient to install a mini-lpd system. It operates out of /tmp, and does not need to be owned by root. X X-- you must change the HOST and USER entries in Makefile so that X the correct ones are installed. X The "make bin" will create and install a couple of nice debugging oriented filters. X The filter shell script is used as a filter, and has a of interesting options; the -delayNNN option delays NNN seconds before terminating; you can specifiy a this in the printcap file, say as: X :of=/tmp/filter -delay30: and the filter will delay 30 seconds after starting. X In order to verify that error handling is being handled correctly, the -errorNNN will terminate (after a -delayNNN) with a error NNN. X I suggest that you also look at the ../filter/lpf.c program for some hints on how to write filters, if you are feeling masochistic. X Patrick ("Document? what is theese batsheet document?") Powell END_OF_FILE if test 1163 -ne `wc -c <'test/README'`; then echo shar: \"'test/README'\" unpacked with wrong size! fi # end of 'test/README' fi if test -f 'test/filter.sh' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'test/filter.sh'\" else echo shar: Extracting \"'test/filter.sh'\" \(755 characters\) sed "s/^X//" >'test/filter.sh' <<'END_OF_FILE' X#!/bin/sh X# Filter Dummy Test X# $Header: filter.sh,v 3.1 88/06/18 09:56:26 papowell Exp $ X# $Log: filter.sh,v $ X# Revision 3.1 88/06/18 09:56:26 papowell X# Version 3.0- Distributed Sat Jun 18 1988 X# PATH=/bin:/usr/bin echo $0 $* 1>&2 echo "pwd " `/bin/pwd` 1>&2 delay=0 for i in $* do X case $i in X -delay*) delay=`echo $i |sed -e 's/-delay//'` ;; X -error*) error=`echo $i |sed -e 's/-error//'` ;; X -*) ;; X *) file=$i ;; X esac done if test -n "$file"; X then echo $0 $* >>$file X else echo "--- NO Accounting File ---" 1>&2 fi X# echo information into output echo $0 $* X# wait a minute to simulate the delay if test $delay -ne 0 ; then sleep $delay; fi; X# exit with error status if test -n "$error"; then X exit $error; fi; X# pump stdin to stdout cat END_OF_FILE if test 755 -ne `wc -c <'test/filter.sh'`; then echo shar: \"'test/filter.sh'\" unpacked with wrong size! fi chmod +x 'test/filter.sh' # end of 'test/filter.sh' fi if test -f 'test/linetest.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'test/linetest.c'\" else echo shar: Extracting \"'test/linetest.c'\" \(879 characters\) sed "s/^X//" >'test/linetest.c' <<'END_OF_FILE' X/* X * linetest: print the rolling banner pattern X * linetest [width] X * Sat Jun 18 09:47:06 CDT 1988 Patrick Powell X * $Log: linetest.c,v $ X * Revision 3.1 88/06/18 09:56:27 papowell X * Version 3.0- Distributed Sat Jun 18 1988 X * X */ X#include <stdio.h> X#include <ctype.h> static char id_str1[] = X "$Header: linetest.c,v 3.1 88/06/18 09:56:27 papowell Exp $ PLP Copyright 1988 Patrick Powell"; char *Name; X main(argc, argv) X int argc; X char **argv; X{ X int width = 132; X int i,j; X X Name = argv[0]; X if( argc > 2 || argc < 1 ){ X usage(); X } X if( argc == 2 ){ X i = atoi( argv[1] ); X if( i != 0 ){ X width = i; X } else { X usage(); X } X } X X i = ' '; X while(1){ X for( j = 0; j < width; ++j ){ X if( !isprint(i) || isspace(i) ){ X i = 'A'; X } X putchar( i ); X i = i + 1; X } X putchar( '\n' ); X } X} X usage() X{ X fprintf( stderr, "%s [width]\n", Name ); X exit( 0 ); X} END_OF_FILE if test 879 -ne `wc -c <'test/linetest.c'`; then echo shar: \"'test/linetest.c'\" unpacked with wrong size! fi # end of 'test/linetest.c' fi if test -f 'test/printcap.proto' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'test/printcap.proto'\" else echo shar: Extracting \"'test/printcap.proto'\" \(1028 characters\) sed "s/^X//" >'test/printcap.proto' <<'END_OF_FILE' X#1# X#1# TEST Printcap Files. X#1# X#1simple:\ X#1 :fx=flp:\ X#1 :pw#75:pl#66:sb:\ X#1 :lp=output:\ X#1 :sd=TMPsimple: X#2# X#2# TEST Printcap Files. X#2# X#2test:\ X#2 :fx=flp:\ X#2 :pw#75:pl#66:rw:\ X#2 :br#9600:fs#040:fc#011:\ X#2 :ty=new 19200 even -tabs tandem:\ X#2 :lp=output:\ X#2 :if=TMPfilter -delay30:\ X#2 :of=TMPlpf -D5:\ X#2 :sd=TMPtest: X#3# X#3# This is for a remote printer. Notice that the filter checking is done X#3# at the local, not remote end (fx: option). The rm=attila entry names the X#3# remote host; in this case it is "attila the sun", our local server. X#3# X#3remote:\ X#3 :fx=flpdnt:\ X#3 :rm=HOST:rp=test:\ X#3 :sd=TMPremote: X#4# X#4## Multiple servers for a single queue X#4#ms1|multi:\ X#4 :fx=flpdnt:\ X#4 :sv=sv1,sv2:\ X#4 :sd=TMPms1: X#4sv1:\ X#4 :ss=ms1:\ X#4 :br#9600:fs#040:fc#011:\ X#4 :lp=outputsv1:\ X#4 :if=TMPfilter -delay10:\ X#4 :of=TMPlpf -D5:\ X#4 :st=stsv1:\ X#4 :ss=ms1: X#4sv2:\ X#4 :ss=ms1:\ X#4 :br#9600:fs#040:fc#011:\ X#4 :lp=outputsv2:\ X#4 :if=TMPfilter -delay10:\ X#4 :of=TMPlpf -D5:\ X#4 :st=stsv2:\ X#4 :ss=ms1: END_OF_FILE if test 1028 -ne `wc -c <'test/printcap.proto'`; then echo shar: \"'test/printcap.proto'\" unpacked with wrong size! fi # end of 'test/printcap.proto' fi if test -f 'test/printer_perms.proto' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'test/printer_perms.proto'\" else echo shar: Extracting \"'test/printer_perms.proto'\" \(699 characters\) sed "s/^X//" >'test/printer_perms.proto' <<'END_OF_FILE' X# Printer permissions data base X# host user printerqueue maxpriority maxpages currentpages X# * is a wildcard X# !<match line> - if a match is made, permission denied X# ~<match line> - a match must be made, otherwise permission denied X#host user printer perms pr maxpages pages HOST USER test C A 100 0 # for testing HOST USER simple C A 100 0 # for testing X* root * * * 0 0 #root on any system X* * simple R * 0 0 #anybody can do test X* * test R * 0 0 #anybody can do test X* * * R X 0 0 #default END_OF_FILE if test 699 -ne `wc -c <'test/printer_perms.proto'`; then echo shar: \"'test/printer_perms.proto'\" unpacked with wrong size! fi # end of 'test/printer_perms.proto' fi if test -f 'test/qh.sh' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'test/qh.sh'\" else echo shar: Extracting \"'test/qh.sh'\" \(36 characters\) sed "s/^X//" >'test/qh.sh' <<'END_OF_FILE' X#!/bin/sh echo $0 $- $* 1>&2 exit 0 END_OF_FILE if test 36 -ne `wc -c <'test/qh.sh'`; then echo shar: \"'test/qh.sh'\" unpacked with wrong size! fi chmod +x 'test/qh.sh' # end of 'test/qh.sh' fi if test ! -d 'utilities' ; then echo shar: Creating directory \"'utilities'\" mkdir 'utilities' fi if test -f 'utilities/IDENT' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'utilities/IDENT'\" else echo shar: Extracting \"'utilities/IDENT'\" \(591 characters\) sed "s/^X//" >'utilities/IDENT' <<'END_OF_FILE' X#ifndef lint X/* X * Updated LPR software; X * Original Version (Copyright) 1983 Regents of the Univeristy of California X * This is a derivative work, X * and the original copyright is still valid. Covered by the X * 4BSD Licensing Agreement; this is NOT public domain software. X * Mon Nov 23 09:23:23 CST 1987 Patrick Powell, U. Minnesota X */ X#ifndef __INDENT_INCL static char id_str1[] = X "Revised LPR, Patrick Powell, U. Waterloo, April 10, 1984"; static char id_str2[] = X "Re-revised LPR, Patrick Powell, U. Minnesota, 23 Nov 1987"; X#define __INDENT_INCL 1 X#endif __INDENT_INCL X#endif lint END_OF_FILE if test 591 -ne `wc -c <'utilities/IDENT'`; then echo shar: \"'utilities/IDENT'\" unpacked with wrong size! fi # end of 'utilities/IDENT' fi if test -f 'utilities/Makefile' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'utilities/Makefile'\" else echo shar: Extracting \"'utilities/Makefile'\" \(1119 characters\) sed "s/^X//" >'utilities/Makefile' <<'END_OF_FILE' X#Mon Nov 9 08:58:06 CST 1987 Patrick Powell X# X# Makefile for the LPR software, top level X# The source is in src, filters, utilities; X# the DEBUG flag will make a debug version; check that you have X# set this flag correctly before you start doing anything. X X X#DEBUG = -DDEBUG THINGS= cpr print X DIRS = include $(THINGS) XFILES = Makefile README BIN = /usr/local/new/bin LIB = /usr/local/new/lib X help: X @echo "all: build everything from source" X @echo "clean: delete all things built from source" X @echo "install: install everything built from source" X @echo " Install man pages by hand, see man/Makefile" X X all: X for thing in $(THINGS); do \ X echo ----- building $$thing -----; \ X (cd $$thing; \ X $(MAKE) BIN=$(BIN) LIB=$(LIB) DEBUG=$(DEBUG) $(MFLAGS) all;) \ X done X X clean: X for thing in $(THINGS); do \ X echo ----- clean $$thing -----; \ X (cd $$thing; \ X $(MAKE) BIN=$(BIN) LIB=$(LIB) DEBUG=$(DEBUG) $(MFLAGS) clean;) \ X done X X install: X for thing in $(THINGS); do \ X echo ----- installing $$thing -----; \ X (cd $$thing; \ X $(MAKE) BIN=$(BIN) LIB=$(LIB) DEBUG=$(DEBUG) $(MFLAGS) install;) \ X done X END_OF_FILE if test 1119 -ne `wc -c <'utilities/Makefile'`; then echo shar: \"'utilities/Makefile'\" unpacked with wrong size! fi # end of 'utilities/Makefile' fi if test ! -d 'utilities/cpr' ; then echo shar: Creating directory \"'utilities/cpr'\" mkdir 'utilities/cpr' fi if test -f 'utilities/cpr/Makefile' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'utilities/cpr/Makefile'\" else echo shar: Extracting \"'utilities/cpr/Makefile'\" \(303 characters\) sed "s/^X//" >'utilities/cpr/Makefile' <<'END_OF_FILE' NAME=cpr X INCLUDES = \ X /usr/include/stdio.h \ X /usr/include/ctype.h \ X /usr/include/signal.h \ X /usr/include/sys/types.h \ X /usr/include/sys/stat.h X BIN= /usr/local/new/bin all: $(NAME) X X$(NAME): $(NAME).c X cc -o $(NAME) $(NAME).c X install: all X install -c $(NAME) $(BIN) X clean: X -rm *.o core $(NAME) END_OF_FILE if test 303 -ne `wc -c <'utilities/cpr/Makefile'`; then echo shar: \"'utilities/cpr/Makefile'\" unpacked with wrong size! fi # end of 'utilities/cpr/Makefile' fi if test ! -d 'utilities/print' ; then echo shar: Creating directory \"'utilities/print'\" mkdir 'utilities/print' fi if test -f 'utilities/print/Makefile' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'utilities/print/Makefile'\" else echo shar: Extracting \"'utilities/print/Makefile'\" \(166 characters\) sed "s/^X//" >'utilities/print/Makefile' <<'END_OF_FILE' NAME = print BIN= /usr/local/new/bin all: $(NAME) X X$(NAME): X cp print.sh print X chmod a+x print install: all X install -c $(NAME) $(BIN) X clean: X -rm *.o core $(NAME) END_OF_FILE if test 166 -ne `wc -c <'utilities/print/Makefile'`; then echo shar: \"'utilities/print/Makefile'\" unpacked with wrong size! fi # end of 'utilities/print/Makefile' fi if test -f 'utilities/print/print.1' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'utilities/print/print.1'\" else echo shar: Extracting \"'utilities/print/print.1'\" \(472 characters\) sed "s/^X//" >'utilities/print/print.1' <<'END_OF_FILE' X.TH PRINT 1 "UW Modified" X.UC X.SH NAME print \- pr to the line printer X.SH SYNOPSIS X.B print file ... X.SH DESCRIPTION X.I Print X.I pr's a copy of each named file on the line printer. It is more-or-less a one-line shell script: X.sp lpr -p $* X.SH SEE\ ALSO lpr(1), pr(1) X.SH NOTES X.I print X*used* to be a one-line shell script, but in order to handle various boundary conditions, it is now a four-line shell script: X.sp X.nf case $# in X0) lpr -p ;; X*) lpr -p "$@" ;; esac END_OF_FILE if test 472 -ne `wc -c <'utilities/print/print.1'`; then echo shar: \"'utilities/print/print.1'\" unpacked with wrong size! fi # end of 'utilities/print/print.1' fi if test -f 'utilities/print/print.sh' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'utilities/print/print.sh'\" else echo shar: Extracting \"'utilities/print/print.sh'\" \(61 characters\) sed "s/^X//" >'utilities/print/print.sh' <<'END_OF_FILE' X#!/bin/sh case $# in X0) lpr -p ;; X*) lpr -p "$@" ;; esac END_OF_FILE if test 61 -ne `wc -c <'utilities/print/print.sh'`; then echo shar: \"'utilities/print/print.sh'\" unpacked with wrong size! fi chmod +x 'utilities/print/print.sh' # end of 'utilities/print/print.sh' fi echo shar: End of archive 1 \(of 16\). cp /dev/null ark1isdone MISSING="" for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ; do if test ! -f ark${I}isdone ; then MISSING="${MISSING} ${I}" fi done if test "${MISSING}" = "" ; then echo You have unpacked all 16 archives. rm -f ark[1-9]isdone ark[1-9][0-9]isdone else echo You still need to unpack the following archives: echo " " ${MISSING} fi ## End of shell archive. exit 0 -- Please send comp.sources.unix-related mail to rsalz@uunet.uu.net.