[alt.sources] Berkeley lpr daemon diffs to run under A/UX

pst@anise.acc.com (Paul Traina) (08/13/89)

The following is a shar file containing a set of diffs which, when applied
against 4.3-tahoe lpr daemon source code, will create a fully functional
Berkeley style lpr system for A/UX.

You may ask yourself:  Why?  A/UX already has the SystemV lp print spooler
and a group of shell scripts to convert berkeley style lpr commands.
The answer:  Well, every other machine that I use runs a *real* operating
system (or Ultrix :-) ).  I want to use the printers tied onto those machine
(and if I ever put a printer on my machine,  they can use it).  This daemon
is fully compatible with the berkeley remote printing setup.  It also
produces those nice Berkeley style banner pages.

Notes:
	(a) I didn't bother to port the varian/versatec print filters.
	    If there is actually someone out there that has one of those
	    puppies directly connected to his or her Mac,  I'll be very
	    surprised.
	(b) I've changed a couple of flags in /etc/printcap since we use
	    a POSIX compliant tty driver (and so will 4.4bsd).  That means
	    that (a):	I've removed the fs / fc and xs / xc bit controls
	    for the serial line.  I've replaced them with the following
	    commands that control the 3 (necessary) flag fields in the
	    termio structure:
		is / ic	- c_iflags
		os / oc - c_oflags
		cs / cc - c_cflags

	    If you don't understand it, look at the file aux.printcap
	    and compare it to the 4.3bsd etc.printcap file (then pull
	    out the termio(7) man page)

Without further ado:


#! /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 shell archive."
# Contents:  lpr.diff aux.printcap
# Wrapped by pst@anise on Sat Aug 12 11:55:57 1989
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f 'lpr.diff' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'lpr.diff'\"
else
echo shar: Extracting \"'lpr.diff'\" \(28134 characters\)
sed "s/^X//" >'lpr.diff' <<'END_OF_FILE'
X*** lpr/Makefile	Mon Apr 24 20:25:37 1989
X--- newlpr/Makefile	Fri Aug 11 16:31:16 1989
X***************
X*** 21,29
X  # DAEMON	someone special
X  # SPGRP		the group id of the spooling programs
X  #
X! CFLAGS=	-O
X! LIBDIR=	/usr/lib
X! BINDIR=	/usr/ucb
X  SPLDIR=	/usr/spool/lpd
X  ROOT=	root
X  DAEMON=	daemon
X
X--- 21,29 -----
X  # DAEMON	someone special
X  # SPGRP		the group id of the spooling programs
X  #
X! CFLAGS=	-O -DmacII
X! LIBDIR=	/usr/local/lib
X! BINDIR=	/usr/local/bin
X  SPLDIR=	/usr/spool/lpd
X  INS=	bsdinstall
X  ROOT=	root
X***************
X*** 25,30
X  LIBDIR=	/usr/lib
X  BINDIR=	/usr/ucb
X  SPLDIR=	/usr/spool/lpd
X  ROOT=	root
X  DAEMON=	daemon
X  SPGRP=	daemon
X
X--- 25,31 -----
X  LIBDIR=	/usr/local/lib
X  BINDIR=	/usr/local/bin
X  SPLDIR=	/usr/spool/lpd
X+ INS=	bsdinstall
X  ROOT=	root
X  DAEMON=	daemon
X  SPGRP=	daemon
X***************
X*** 91,104
X  	cd vfilters; make ${MFLAGS} depend
X  
X  install: FRC
X! 	install -s -o ${ROOT} -g ${SPGRP} -m 6711 lpd ${DESTDIR}/${LIBDIR}/lpd
X! 	install -s -o ${ROOT} -g ${SPGRP} -m 6711 lpr ${DESTDIR}/${BINDIR}/lpr
X! 	install -s -o ${ROOT} -g ${SPGRP} -m 6711 lpq ${DESTDIR}/${BINDIR}/lpq
X! 	install -s -o ${ROOT} -g ${SPGRP} -m 6711 lprm ${DESTDIR}/${BINDIR}/lprm
X! 	install -s -o bin -g ${SPGRP} -m 2711 lpc ${DESTDIR}/etc/lpc
X! 	install -s -o bin -g bin -m 755 lptest ${DESTDIR}/${BINDIR}/lptest
X! 	install -s -o bin -g bin -m 755 pac ${DESTDIR}/etc/pac
X! 	/etc/chown ${DAEMON} ${DESTDIR}/${SPLDIR}
X  	chgrp ${SPGRP} ${DESTDIR}/${SPLDIR}
X  	chmod 775 ${DESTDIR}/${SPLDIR}
X  	cd filters; make ${MFLAGS} DESTDIR=${DESTDIR} install
X
X--- 92,105 -----
X  	cd vfilters; make ${MFLAGS} depend
X  
X  install: FRC
X! 	$(INS) -s -o ${ROOT} -g ${SPGRP} -m 6711 lpd ${DESTDIR}/${LIBDIR}/lpd
X! 	$(INS) -s -o ${ROOT} -g ${SPGRP} -m 6711 lpr ${DESTDIR}/${BINDIR}/lpr
X! 	$(INS) -s -o ${ROOT} -g ${SPGRP} -m 6711 lpq ${DESTDIR}/${BINDIR}/lpq
X! 	$(INS) -s -o ${ROOT} -g ${SPGRP} -m 6711 lprm ${DESTDIR}/${BINDIR}/lprm
X! 	$(INS) -s -o bin -g ${SPGRP} -m 2711 lpc ${DESTDIR}/etc/lpc
X! 	$(INS) -s -o bin -g bin -m 755 lptest ${DESTDIR}/${BINDIR}/lptest
X! 	$(INS) -s -o bin -g bin -m 755 pac ${DESTDIR}/etc/pac
X! 	chown ${DAEMON} ${DESTDIR}/${SPLDIR}
X  	chgrp ${SPGRP} ${DESTDIR}/${SPLDIR}
X  	chmod 775 ${DESTDIR}/${SPLDIR}
X  	cd filters; make ${MFLAGS} DESTDIR=${DESTDIR} install
X***************
X*** 127,265
X  
X  # DO NOT DELETE THIS LINE -- mkdep uses it.
X  # DO NOT PUT ANYTHING AFTER THIS LINE, IT WILL GO AWAY.
X- 
X- lpd.o: lpd.c lp.h /usr/include/stdio.h /usr/include/sys/param.h
X- lpd.o: /usr/include/sys/types.h /usr/include/signal.h
X- lpd.o: /usr/include/machine/trap.h /usr/include/machine/machparam.h
X- lpd.o: /usr/include/machine/endian.h /usr/include/sys/file.h
X- lpd.o: /usr/include/sys/dir.h /usr/include/sys/stat.h /usr/include/sys/socket.h
X- lpd.o: /usr/include/sys/un.h /usr/include/netinet/in.h /usr/include/netdb.h
X- lpd.o: /usr/include/pwd.h /usr/include/syslog.h /usr/include/signal.h
X- lpd.o: /usr/include/sys/wait.h /usr/include/sgtty.h /usr/include/sys/ioctl.h
X- lpd.o: /usr/include/sys/ttychars.h /usr/include/sys/ttydev.h
X- lpd.o: /usr/include/ctype.h /usr/include/errno.h lp.local.h
X- lpd.o: /usr/include/a.out.h /usr/include/sys/exec.h /usr/include/ar.h
X- lpr.o: lpr.c /usr/include/stdio.h /usr/include/sys/types.h
X- lpr.o: /usr/include/sys/file.h /usr/include/sys/stat.h /usr/include/pwd.h
X- lpr.o: /usr/include/grp.h /usr/include/signal.h /usr/include/machine/trap.h
X- lpr.o: /usr/include/ctype.h /usr/include/syslog.h lp.local.h
X- lpr.o: /usr/include/a.out.h /usr/include/sys/exec.h /usr/include/ar.h
X- lpq.o: lpq.c lp.h /usr/include/stdio.h /usr/include/sys/param.h
X- lpq.o: /usr/include/sys/types.h /usr/include/signal.h
X- lpq.o: /usr/include/machine/trap.h /usr/include/machine/machparam.h
X- lpq.o: /usr/include/machine/endian.h /usr/include/sys/file.h
X- lpq.o: /usr/include/sys/dir.h /usr/include/sys/stat.h /usr/include/sys/socket.h
X- lpq.o: /usr/include/sys/un.h /usr/include/netinet/in.h /usr/include/netdb.h
X- lpq.o: /usr/include/pwd.h /usr/include/syslog.h /usr/include/signal.h
X- lpq.o: /usr/include/sys/wait.h /usr/include/sgtty.h /usr/include/sys/ioctl.h
X- lpq.o: /usr/include/sys/ttychars.h /usr/include/sys/ttydev.h
X- lpq.o: /usr/include/ctype.h /usr/include/errno.h lp.local.h
X- lpq.o: /usr/include/a.out.h /usr/include/sys/exec.h /usr/include/ar.h
X- lprm.o: lprm.c lp.h /usr/include/stdio.h /usr/include/sys/param.h
X- lprm.o: /usr/include/sys/types.h /usr/include/signal.h
X- lprm.o: /usr/include/machine/trap.h /usr/include/machine/machparam.h
X- lprm.o: /usr/include/machine/endian.h /usr/include/sys/file.h
X- lprm.o: /usr/include/sys/dir.h /usr/include/sys/stat.h
X- lprm.o: /usr/include/sys/socket.h /usr/include/sys/un.h
X- lprm.o: /usr/include/netinet/in.h /usr/include/netdb.h /usr/include/pwd.h
X- lprm.o: /usr/include/syslog.h /usr/include/signal.h /usr/include/sys/wait.h
X- lprm.o: /usr/include/sgtty.h /usr/include/sys/ioctl.h
X- lprm.o: /usr/include/sys/ttychars.h /usr/include/sys/ttydev.h
X- lprm.o: /usr/include/ctype.h /usr/include/errno.h lp.local.h
X- lprm.o: /usr/include/a.out.h /usr/include/sys/exec.h /usr/include/ar.h
X- pac.o: pac.c /usr/include/stdio.h lp.local.h /usr/include/a.out.h
X- pac.o: /usr/include/sys/exec.h /usr/include/ar.h
X- lpd.o: lpd.c lp.h /usr/include/stdio.h /usr/include/sys/param.h
X- lpd.o: /usr/include/sys/types.h /usr/include/signal.h
X- lpd.o: /usr/include/machine/trap.h /usr/include/machine/machparam.h
X- lpd.o: /usr/include/machine/endian.h /usr/include/sys/file.h
X- lpd.o: /usr/include/sys/dir.h /usr/include/sys/stat.h /usr/include/sys/socket.h
X- lpd.o: /usr/include/sys/un.h /usr/include/netinet/in.h /usr/include/netdb.h
X- lpd.o: /usr/include/pwd.h /usr/include/syslog.h /usr/include/signal.h
X- lpd.o: /usr/include/sys/wait.h /usr/include/sgtty.h /usr/include/sys/ioctl.h
X- lpd.o: /usr/include/sys/ttychars.h /usr/include/sys/ttydev.h
X- lpd.o: /usr/include/ctype.h /usr/include/errno.h lp.local.h
X- lpd.o: /usr/include/a.out.h /usr/include/sys/exec.h /usr/include/ar.h
X- cmds.o: cmds.c lp.h /usr/include/stdio.h /usr/include/sys/param.h
X- cmds.o: /usr/include/sys/types.h /usr/include/signal.h
X- cmds.o: /usr/include/machine/trap.h /usr/include/machine/machparam.h
X- cmds.o: /usr/include/machine/endian.h /usr/include/sys/file.h
X- cmds.o: /usr/include/sys/dir.h /usr/include/sys/stat.h
X- cmds.o: /usr/include/sys/socket.h /usr/include/sys/un.h
X- cmds.o: /usr/include/netinet/in.h /usr/include/netdb.h /usr/include/pwd.h
X- cmds.o: /usr/include/syslog.h /usr/include/signal.h /usr/include/sys/wait.h
X- cmds.o: /usr/include/sgtty.h /usr/include/sys/ioctl.h
X- cmds.o: /usr/include/sys/ttychars.h /usr/include/sys/ttydev.h
X- cmds.o: /usr/include/ctype.h /usr/include/errno.h lp.local.h
X- cmds.o: /usr/include/a.out.h /usr/include/sys/exec.h /usr/include/ar.h
X- cmds.o: /usr/include/sys/time.h /usr/include/time.h
X- cmdtab.o: cmdtab.c lpc.h
X- printjob.o: printjob.c lp.h /usr/include/stdio.h /usr/include/sys/param.h
X- printjob.o: /usr/include/sys/types.h /usr/include/signal.h
X- printjob.o: /usr/include/machine/trap.h /usr/include/machine/machparam.h
X- printjob.o: /usr/include/machine/endian.h /usr/include/sys/file.h
X- printjob.o: /usr/include/sys/dir.h /usr/include/sys/stat.h
X- printjob.o: /usr/include/sys/socket.h /usr/include/sys/un.h
X- printjob.o: /usr/include/netinet/in.h /usr/include/netdb.h /usr/include/pwd.h
X- printjob.o: /usr/include/syslog.h /usr/include/signal.h /usr/include/sys/wait.h
X- printjob.o: /usr/include/sgtty.h /usr/include/sys/ioctl.h
X- printjob.o: /usr/include/sys/ttychars.h /usr/include/sys/ttydev.h
X- printjob.o: /usr/include/ctype.h /usr/include/errno.h lp.local.h
X- printjob.o: /usr/include/a.out.h /usr/include/sys/exec.h /usr/include/ar.h
X- recvjob.o: recvjob.c lp.h /usr/include/stdio.h /usr/include/sys/param.h
X- recvjob.o: /usr/include/sys/types.h /usr/include/signal.h
X- recvjob.o: /usr/include/machine/trap.h /usr/include/machine/machparam.h
X- recvjob.o: /usr/include/machine/endian.h /usr/include/sys/file.h
X- recvjob.o: /usr/include/sys/dir.h /usr/include/sys/stat.h
X- recvjob.o: /usr/include/sys/socket.h /usr/include/sys/un.h
X- recvjob.o: /usr/include/netinet/in.h /usr/include/netdb.h /usr/include/pwd.h
X- recvjob.o: /usr/include/syslog.h /usr/include/signal.h /usr/include/sys/wait.h
X- recvjob.o: /usr/include/sgtty.h /usr/include/sys/ioctl.h
X- recvjob.o: /usr/include/sys/ttychars.h /usr/include/sys/ttydev.h
X- recvjob.o: /usr/include/ctype.h /usr/include/errno.h lp.local.h
X- recvjob.o: /usr/include/a.out.h /usr/include/sys/exec.h /usr/include/ar.h
X- recvjob.o: /usr/include/sys/fs.h
X- displayq.o: displayq.c lp.h /usr/include/stdio.h /usr/include/sys/param.h
X- displayq.o: /usr/include/sys/types.h /usr/include/signal.h
X- displayq.o: /usr/include/machine/trap.h /usr/include/machine/machparam.h
X- displayq.o: /usr/include/machine/endian.h /usr/include/sys/file.h
X- displayq.o: /usr/include/sys/dir.h /usr/include/sys/stat.h
X- displayq.o: /usr/include/sys/socket.h /usr/include/sys/un.h
X- displayq.o: /usr/include/netinet/in.h /usr/include/netdb.h /usr/include/pwd.h
X- displayq.o: /usr/include/syslog.h /usr/include/signal.h /usr/include/sys/wait.h
X- displayq.o: /usr/include/sgtty.h /usr/include/sys/ioctl.h
X- displayq.o: /usr/include/sys/ttychars.h /usr/include/sys/ttydev.h
X- displayq.o: /usr/include/ctype.h /usr/include/errno.h lp.local.h
X- displayq.o: /usr/include/a.out.h /usr/include/sys/exec.h /usr/include/ar.h
X- rmjob.o: rmjob.c lp.h /usr/include/stdio.h /usr/include/sys/param.h
X- rmjob.o: /usr/include/sys/types.h /usr/include/signal.h
X- rmjob.o: /usr/include/machine/trap.h /usr/include/machine/machparam.h
X- rmjob.o: /usr/include/machine/endian.h /usr/include/sys/file.h
X- rmjob.o: /usr/include/sys/dir.h /usr/include/sys/stat.h
X- rmjob.o: /usr/include/sys/socket.h /usr/include/sys/un.h
X- rmjob.o: /usr/include/netinet/in.h /usr/include/netdb.h /usr/include/pwd.h
X- rmjob.o: /usr/include/syslog.h /usr/include/signal.h /usr/include/sys/wait.h
X- rmjob.o: /usr/include/sgtty.h /usr/include/sys/ioctl.h
X- rmjob.o: /usr/include/sys/ttychars.h /usr/include/sys/ttydev.h
X- rmjob.o: /usr/include/ctype.h /usr/include/errno.h lp.local.h
X- rmjob.o: /usr/include/a.out.h /usr/include/sys/exec.h /usr/include/ar.h
X- startdaemon.o: startdaemon.c /usr/include/stdio.h /usr/include/sys/types.h
X- startdaemon.o: /usr/include/sys/socket.h /usr/include/sys/un.h lp.local.h
X- startdaemon.o: /usr/include/a.out.h /usr/include/sys/exec.h /usr/include/ar.h
X- common.o: common.c lp.h /usr/include/stdio.h /usr/include/sys/param.h
X- common.o: /usr/include/sys/types.h /usr/include/signal.h
X- common.o: /usr/include/machine/trap.h /usr/include/machine/machparam.h
X- common.o: /usr/include/machine/endian.h /usr/include/sys/file.h
X- common.o: /usr/include/sys/dir.h /usr/include/sys/stat.h
X- common.o: /usr/include/sys/socket.h /usr/include/sys/un.h
X- common.o: /usr/include/netinet/in.h /usr/include/netdb.h /usr/include/pwd.h
X- common.o: /usr/include/syslog.h /usr/include/signal.h /usr/include/sys/wait.h
X- common.o: /usr/include/sgtty.h /usr/include/sys/ioctl.h
X- common.o: /usr/include/sys/ttychars.h /usr/include/sys/ttydev.h
X- common.o: /usr/include/ctype.h /usr/include/errno.h lp.local.h
X- common.o: /usr/include/a.out.h /usr/include/sys/exec.h /usr/include/ar.h
X- printcap.o: printcap.c /usr/include/ctype.h /usr/include/stdio.h
X- lpdchar.o: lpdchar.c lp.local.h /usr/include/a.out.h /usr/include/sys/exec.h
X- lpdchar.o: /usr/include/ar.h
X- 
X- # IF YOU PUT ANYTHING HERE IT WILL GO AWAY
X
X--- 128,130 -----
X  
X  # DO NOT DELETE THIS LINE -- mkdep uses it.
X  # DO NOT PUT ANYTHING AFTER THIS LINE, IT WILL GO AWAY.
X*** lpr/common.c	Thu Jun 30 18:00:19 1988
X--- newlpr/common.c	Fri Aug 11 14:15:40 1989
X***************
X*** 59,64
X  short	PX;		/* page width in pixels */
X  short	PY;		/* page length in pixels */
X  short	BR;		/* baud rate if lp is a tty */
X  int	FC;		/* flags to clear if lp is a tty */
X  int	FS;		/* flags to set if lp is a tty */
X  int	XC;		/* flags to clear for local mode */
X
X--- 59,72 -----
X  short	PX;		/* page width in pixels */
X  short	PY;		/* page length in pixels */
X  short	BR;		/* baud rate if lp is a tty */
X+ #ifdef macII
X+ int	IC;		/* input flags to clear if lp is a tty */
X+ int	IS;		/* input flags to set if lp is a tty */
X+ int	OC;		/* output flags to clear if lp is a tty */
X+ int	OS;		/* output flags to set if lp is a tty */
X+ int	CC;		/* control flags to clear if lp is a tty */
X+ int	CS;		/* control flags to set if lp is a tty */
X+ #else
X  int	FC;		/* flags to clear if lp is a tty */
X  int	FS;		/* flags to set if lp is a tty */
X  int	XC;		/* flags to clear for local mode */
X***************
X*** 63,68
X  int	FS;		/* flags to set if lp is a tty */
X  int	XC;		/* flags to clear for local mode */
X  int	XS;		/* flags to set for local mode */
X  short	RS;		/* restricted to those with local accounts */
X  
X  char	line[BUFSIZ];
X
X--- 71,77 -----
X  int	FS;		/* flags to set if lp is a tty */
X  int	XC;		/* flags to clear for local mode */
X  int	XS;		/* flags to set for local mode */
X+ #endif
X  short	RS;		/* restricted to those with local accounts */
X  
X  char	line[BUFSIZ];
X*** lpr/lp.h	Thu Jun 30 18:00:21 1988
X--- newlpr/lp.h	Fri Aug 11 14:05:55 1989
X***************
X*** 34,39
X  #include <syslog.h>
X  #include <signal.h>
X  #include <sys/wait.h>
X  #include <sgtty.h>
X  #include <ctype.h>
X  #include <errno.h>
X
X--- 34,40 -----
X  #include <syslog.h>
X  #include <signal.h>
X  #include <sys/wait.h>
X+ #ifndef macII
X  #include <sgtty.h>
X  #endif
X  #include <ctype.h>
X***************
X*** 35,40
X  #include <signal.h>
X  #include <sys/wait.h>
X  #include <sgtty.h>
X  #include <ctype.h>
X  #include <errno.h>
X  #include "lp.local.h"
X
X--- 36,42 -----
X  #include <sys/wait.h>
X  #ifndef macII
X  #include <sgtty.h>
X+ #endif
X  #include <ctype.h>
X  #include <errno.h>
X  #ifdef macII
X***************
X*** 37,42
X  #include <sgtty.h>
X  #include <ctype.h>
X  #include <errno.h>
X  #include "lp.local.h"
X  
X  extern int	DU;		/* daeomon user-id */
X
X--- 39,50 -----
X  #endif
X  #include <ctype.h>
X  #include <errno.h>
X+ #ifdef macII
X+ #undef FIOCLEX
X+ #undef FIONCLEX
X+ #include <sys/ioctl.h>
X+ #include <termio.h>
X+ #endif
X  #include "lp.local.h"
X  
X  extern int	DU;		/* daeomon user-id */
X***************
X*** 73,78
X  extern short	PY;		/* page length in pixels */
X  extern short	PL;		/* page length */
X  extern short	BR;		/* baud rate if lp is a tty */
X  extern int	FC;		/* flags to clear if lp is a tty */
X  extern int	FS;		/* flags to set if lp is a tty */
X  extern int	XC;		/* flags to clear for local mode */
X
X--- 81,94 -----
X  extern short	PY;		/* page length in pixels */
X  extern short	PL;		/* page length */
X  extern short	BR;		/* baud rate if lp is a tty */
X+ #ifdef macII
X+ extern int	IC;		/* input flags to clear if lp is a tty */
X+ extern int	IS;		/* input flags to set if lp is a tty */
X+ extern int	OC;		/* output flags to clear if lp is a tty */
X+ extern int	OS;		/* output flags to set if lp is a tty */
X+ extern int	CC;		/* control flags to clear if lp is a tty */
X+ extern int	CS;		/* control flags to set if lp is a tty */
X+ #else
X  extern int	FC;		/* flags to clear if lp is a tty */
X  extern int	FS;		/* flags to set if lp is a tty */
X  extern int	XC;		/* flags to clear for local mode */
X***************
X*** 77,82
X  extern int	FS;		/* flags to set if lp is a tty */
X  extern int	XC;		/* flags to clear for local mode */
X  extern int	XS;		/* flags to set for local mode */
X  extern short	RS;		/* restricted to those with local accounts */
X  
X  extern char	line[BUFSIZ];
X
X--- 93,99 -----
X  extern int	FS;		/* flags to set if lp is a tty */
X  extern int	XC;		/* flags to clear for local mode */
X  extern int	XS;		/* flags to set for local mode */
X+ #endif
X  extern short	RS;		/* restricted to those with local accounts */
X  
X  extern char	line[BUFSIZ];
X*** lpr/lp.local.h	Thu Jun 30 18:00:21 1988
X--- newlpr/lp.local.h	Fri Aug 11 15:38:14 1989
X***************
X*** 29,35
X  #include <a.out.h>
X  #include <ar.h>
X  
X! #ifndef A_MAGIC1	/* must be a VM/UNIX system */
X  #	define A_MAGIC1	OMAGIC
X  #	define A_MAGIC2	NMAGIC
X  #	define A_MAGIC3	ZMAGIC
X
X--- 29,45 -----
X  #include <a.out.h>
X  #include <ar.h>
X  
X! #ifdef	macII
X! #    ifndef A_MAGIC1
X! #	define A_MAGIC1	0520		/* COFF object */
X! #	define A_MAGIC2	0407		/* 4.0 executable */
X! #	define A_MAGIC3	0410		/* 4.0 pure executable */
X! #	define A_MAGIC4	0570		/* 5.0 executable */
X! #	undef ARMAG
X! #	define ARMAG	0177545		/* archive magic */
X! #    endif
X! #else
X! #    ifndef A_MAGIC1	/* must be a VM/UNIX system */
X  #	define A_MAGIC1	OMAGIC
X  #	define A_MAGIC2	NMAGIC
X  #	define A_MAGIC3	ZMAGIC
X***************
X*** 35,40
X  #	define A_MAGIC3	ZMAGIC
X  #	undef ARMAG
X  #	define ARMAG	0177545
X  #endif
X  
X  /*
X
X--- 45,51 -----
X  #	define A_MAGIC3	ZMAGIC
X  #	undef ARMAG
X  #	define ARMAG	0177545
X+ #    endif
X  #endif
X  
X  /*
X***************
X*** 44,50
X  #define DEFLOCK		"lock"
X  #define DEFSTAT		"status"
X  #define	DEFSPOOL	"/usr/spool/lpd"
X- #define	DEFDAEMON	"/usr/lib/lpd"
X  #define	DEFLOGF		"/dev/console"
X  #define	DEFDEVLP	"/dev/lp"
X  #define DEFRLPR		"/usr/lib/rlpr"
X
X--- 55,60 -----
X  #define DEFLOCK		"lock"
X  #define DEFSTAT		"status"
X  #define	DEFSPOOL	"/usr/spool/lpd"
X  #define	DEFLOGF		"/dev/console"
X  #define	DEFDEVLP	"/dev/lp"
X  #ifdef	macII
X***************
X*** 47,52
X  #define	DEFDAEMON	"/usr/lib/lpd"
X  #define	DEFLOGF		"/dev/console"
X  #define	DEFDEVLP	"/dev/lp"
X  #define DEFRLPR		"/usr/lib/rlpr"
X  #define DEFBINDIR	"/usr/ucb"
X  #define	DEFMX		1000
X
X--- 57,68 -----
X  #define	DEFSPOOL	"/usr/spool/lpd"
X  #define	DEFLOGF		"/dev/console"
X  #define	DEFDEVLP	"/dev/lp"
X+ #ifdef	macII
X+ #define	DEFDAEMON	"/usr/local/lib/lpd"
X+ #define DEFRLPR		"/usr/local/lib/rlpr"
X+ #define DEFBINDIR	"/usr/local/bin"
X+ #else
X+ #define	DEFDAEMON	"/usr/lib/lpd"
X  #define DEFRLPR		"/usr/lib/rlpr"
X  #define DEFBINDIR	"/usr/ucb"
X  #endif
X***************
X*** 49,54
X  #define	DEFDEVLP	"/dev/lp"
X  #define DEFRLPR		"/usr/lib/rlpr"
X  #define DEFBINDIR	"/usr/ucb"
X  #define	DEFMX		1000
X  #define DEFMAXCOPIES	0
X  #define DEFFF		"\f"
X
X--- 65,71 -----
X  #define	DEFDAEMON	"/usr/lib/lpd"
X  #define DEFRLPR		"/usr/lib/rlpr"
X  #define DEFBINDIR	"/usr/ucb"
X+ #endif
X  #define	DEFMX		1000
X  #define DEFMAXCOPIES	0
X  #define DEFFF		"\f"
X*** lpr/lpr.c	Thu Jun 30 18:00:24 1988
X--- newlpr/lpr.c	Fri Aug 11 15:25:11 1989
X***************
X*** 512,517
X   * Return -1 if it is not, 0 if its printable, and 1 if
X   * we should remove it after printing.
X   */
X  test(file)
X  	char *file;
X  {
X
X--- 512,523 -----
X   * Return -1 if it is not, 0 if its printable, and 1 if
X   * we should remove it after printing.
X   */
X+ #ifdef	macII
X+ #define	exec	filehdr
X+ #define	execb	filehdrb
X+ #define	a_magic	f_magic
X+ #endif
X+ 
X  test(file)
X  	char *file;
X  {
X***************
X*** 575,580
X  	(void) close(fd);
X  	return(-1);
X  }
X  
X  /*
X   * itoa - integer to string conversion
X
X--- 581,592 -----
X  	(void) close(fd);
X  	return(-1);
X  }
X+ 
X+ #ifdef	macII
X+ #undef	exec
X+ #undef	execb
X+ #undef	a_magic
X+ #endif
X  
X  /*
X   * itoa - integer to string conversion
X*** lpr/printjob.c	Thu Jun 30 18:00:26 1988
X--- newlpr/printjob.c	Fri Aug 11 16:22:50 1989
X***************
X*** 65,71
X  char	pxwidth[10] = "-x";	/* page width in pixels */
X  char	pxlength[10] = "-y";	/* page length in pixels */
X  char	indent[10] = "-i0";	/* indentation size in characters */
X! char	tmpfile[] = "errsXXXXXX"; /* file name for filter output */
X  
X  printjob()
X  {
X
X--- 65,71 -----
X  char	pxwidth[10] = "-x";	/* page width in pixels */
X  char	pxlength[10] = "-y";	/* page length in pixels */
X  char	indent[10] = "-i0";	/* indentation size in characters */
X! char	tmpfil[] = "errsXXXXXX"; /* file name for filter output */
X  
X  printjob()
X  {
X***************
X*** 92,98
X  	signal(SIGQUIT, abortpr);
X  	signal(SIGTERM, abortpr);
X  
X! 	(void) mktemp(tmpfile);
X  
X  	/*
X  	 * uses short form file names
X
X--- 92,98 -----
X  	signal(SIGQUIT, abortpr);
X  	signal(SIGTERM, abortpr);
X  
X! 	(void) mktemp(tmpfil);
X  
X  	/*
X  	 * uses short form file names
X***************
X*** 210,216
X  			if (TR != NULL)		/* output trailer */
X  				(void) write(ofd, TR, strlen(TR));
X  		}
X! 		(void) unlink(tmpfile);
X  		exit(0);
X  	}
X  	goto again;
X
X--- 210,216 -----
X  			if (TR != NULL)		/* output trailer */
X  				(void) write(ofd, TR, strlen(TR));
X  		}
X! 		(void) unlink(tmpfil);
X  		exit(0);
X  	}
X  	goto again;
X***************
X*** 580,586
X  	if ((child = dofork(DORETURN)) == 0) {	/* child */
X  		dup2(fi, 0);
X  		dup2(fo, 1);
X! 		n = open(tmpfile, O_WRONLY|O_CREAT|O_TRUNC, 0664);
X  		if (n >= 0)
X  			dup2(n, 2);
X  		for (n = 3; n < NOFILE; n++)
X
X--- 580,586 -----
X  	if ((child = dofork(DORETURN)) == 0) {	/* child */
X  		dup2(fi, 0);
X  		dup2(fo, 1);
X! 		n = open(tmpfil, O_WRONLY|O_CREAT|O_TRUNC, 0664);
X  		if (n >= 0)
X  			dup2(n, 2);
X  		for (n = 3; n < NOFILE; n++)
X***************
X*** 947,954
X  			printf("\ncould not be printed without an account on %s\n", host);
X  			break;
X  		case FILTERERR:
X! 			if (stat(tmpfile, &stb) < 0 || stb.st_size == 0 ||
X! 			    (fp = fopen(tmpfile, "r")) == NULL) {
X  				printf("\nwas printed but had some errors\n");
X  				break;
X  			}
X
X--- 947,954 -----
X  			printf("\ncould not be printed without an account on %s\n", host);
X  			break;
X  		case FILTERERR:
X! 			if (stat(tmpfil, &stb) < 0 || stb.st_size == 0 ||
X! 			    (fp = fopen(tmpfil, "r")) == NULL) {
X  				printf("\nwas printed but had some errors\n");
X  				break;
X  			}
X***************
X*** 1007,1013
X   */
X  abortpr()
X  {
X! 	(void) unlink(tmpfile);
X  	kill(0, SIGINT);
X  	if (ofilter > 0)
X  		kill(ofilter, SIGCONT);
X
X--- 1007,1013 -----
X   */
X  abortpr()
X  {
X! 	(void) unlink(tmpfil);
X  	kill(0, SIGINT);
X  	if (ofilter > 0)
X  		kill(ofilter, SIGCONT);
X***************
X*** 1107,1112
X  	HL = pgetflag("hl");
X  	RW = pgetflag("rw");
X  	BR = pgetnum("br");
X  	if ((FC = pgetnum("fc")) < 0)
X  		FC = 0;
X  	if ((FS = pgetnum("fs")) < 0)
X
X--- 1107,1126 -----
X  	HL = pgetflag("hl");
X  	RW = pgetflag("rw");
X  	BR = pgetnum("br");
X+ #ifdef	macII
X+ 	if ((IC = pgetnum("ic")) < 0)
X+ 		IC = 0;
X+ 	if ((IS = pgetnum("is")) < 0)
X+ 		IS = 0;
X+ 	if ((OC = pgetnum("oc")) < 0)
X+ 		OC = 0;
X+ 	if ((OS = pgetnum("os")) < 0)
X+ 		OS = 0;
X+ 	if ((CC = pgetnum("cc")) < 0)
X+ 		CC = 0;
X+ 	if ((CS = pgetnum("cs")) < 0)
X+ 		CS = 0;
X+ #else
X  	if ((FC = pgetnum("fc")) < 0)
X  		FC = 0;
X  	if ((FS = pgetnum("fs")) < 0)
X***************
X*** 1115,1120
X  		XC = 0;
X  	if ((XS = pgetnum("xs")) < 0)
X  		XS = 0;
X  	tof = !pgetflag("fo");
X  }
X  
X
X--- 1129,1135 -----
X  		XC = 0;
X  	if ((XS = pgetnum("xs")) < 0)
X  		XS = 0;
X+ #endif
X  	tof = !pgetflag("fo");
X  }
X  
X***************
X*** 1227,1233
X   */
X  setty()
X  {
X- 	struct sgttyb ttybuf;
X  	register struct bauds *bp;
X  
X  	if (ioctl(pfd, TIOCEXCL, (char *)0) < 0) {
X
X--- 1242,1247 -----
X   */
X  setty()
X  {
X  	register struct bauds *bp;
X  
X  #ifdef	macII
X***************
X*** 1230,1235
X  	struct sgttyb ttybuf;
X  	register struct bauds *bp;
X  
X  	if (ioctl(pfd, TIOCEXCL, (char *)0) < 0) {
X  		syslog(LOG_ERR, "%s: ioctl(TIOCEXCL): %m", printer);
X  		exit(1);
X
X--- 1244,1285 -----
X  {
X  	register struct bauds *bp;
X  
X+ #ifdef	macII
X+ 	struct termio ttybuf;
X+ 
X+ 	/* can't do exclusive lock on device once its opened, can we? */
X+ 
X+ 	if (ioctl(pfd, TCGETA, (char *)&ttybuf) < 0) {
X+ 		syslog(LOG_ERR, "%s: ioctl(TCGETA): %m", printer);
X+ 		exit(1);
X+ 	}
X+ 
X+ 	if (BR > 0) {
X+ 		for (bp = bauds; bp->baud; bp++)
X+ 			if (BR == bp->baud)
X+ 				break;
X+ 		if (!bp->baud) {
X+ 			syslog(LOG_ERR, "%s: illegal baud rate %d", printer, BR);
X+ 			exit(1);
X+ 		}
X+ 		ttybuf.c_cflag &= ~CC;
X+ 		ttybuf.c_cflag |= CS;
X+ 		ttybuf.c_cflag = (ttybuf.c_cflag & ~CBAUD) | bp->baud;
X+ 	}
X+ 
X+ 	ttybuf.c_iflag &= ~IC;
X+ 	ttybuf.c_iflag |= IS;
X+ 
X+ 	ttybuf.c_oflag &= ~OC;
X+ 	ttybuf.c_oflag |= OS;
X+ 
X+ 	if (ioctl(pfd, TCSETA, (char *)&ttybuf) < 0) {
X+ 		syslog(LOG_ERR, "%s: ioctl(TCSETA): %m", printer);
X+ 		exit(1);
X+ 	}
X+ #else
X+ 	struct sgttyb ttybuf;
X+ 
X  	if (ioctl(pfd, TIOCEXCL, (char *)0) < 0) {
X  		syslog(LOG_ERR, "%s: ioctl(TIOCEXCL): %m", printer);
X  		exit(1);
X***************
X*** 1234,1239
X  		syslog(LOG_ERR, "%s: ioctl(TIOCEXCL): %m", printer);
X  		exit(1);
X  	}
X  	if (ioctl(pfd, TIOCGETP, (char *)&ttybuf) < 0) {
X  		syslog(LOG_ERR, "%s: ioctl(TIOCGETP): %m", printer);
X  		exit(1);
X
X--- 1284,1290 -----
X  		syslog(LOG_ERR, "%s: ioctl(TIOCEXCL): %m", printer);
X  		exit(1);
X  	}
X+ 
X  	if (ioctl(pfd, TIOCGETP, (char *)&ttybuf) < 0) {
X  		syslog(LOG_ERR, "%s: ioctl(TIOCGETP): %m", printer);
X  		exit(1);
X***************
X*** 1238,1243
X  		syslog(LOG_ERR, "%s: ioctl(TIOCGETP): %m", printer);
X  		exit(1);
X  	}
X  	if (BR > 0) {
X  		for (bp = bauds; bp->baud; bp++)
X  			if (BR == bp->baud)
X
X--- 1289,1295 -----
X  		syslog(LOG_ERR, "%s: ioctl(TIOCGETP): %m", printer);
X  		exit(1);
X  	}
X+ 
X  	if (BR > 0) {
X  		for (bp = bauds; bp->baud; bp++)
X  			if (BR == bp->baud)
X***************
X*** 1274,1279
X  			exit(1);
X  		}
X  	}
X  }
X  
X  /*VARARGS1*/
X
X--- 1326,1332 -----
X  			exit(1);
X  		}
X  	}
X+ #endif
X  }
X  
X  /*VARARGS1*/
X*** lpr/recvjob.c	Thu Jun 30 18:00:27 1988
X--- newlpr/recvjob.c	Fri Aug 11 15:19:11 1989
X***************
X*** 25,30
X   */
X  
X  #include "lp.h"
X  #include <sys/fs.h>
X  
X  char	*sp = "";
X
X--- 25,31 -----
X   */
X  
X  #include "lp.h"
X+ #ifndef	macII
X  #include <sys/fs.h>
X  #endif
X  
X***************
X*** 26,31
X  
X  #include "lp.h"
X  #include <sys/fs.h>
X  
X  char	*sp = "";
X  #define ack()	(void) write(1, sp, 1);
X
X--- 27,33 -----
X  #include "lp.h"
X  #ifndef	macII
X  #include <sys/fs.h>
X+ #endif
X  
X  #ifdef	macII
X  #define	major(x) (x >> 8 & 255)
X***************
X*** 27,32
X  #include "lp.h"
X  #include <sys/fs.h>
X  
X  char	*sp = "";
X  #define ack()	(void) write(1, sp, 1);
X  
X
X--- 29,39 -----
X  #include <sys/fs.h>
X  #endif
X  
X+ #ifdef	macII
X+ #define	major(x) (x >> 8 & 255)
X+ #define	minor(x) (x & 255)
X+ #endif
X+ 
X  char	*sp = "";
X  #define ack()	(void) write(1, sp, 1);
X  
X***************
X*** 262,267
X  	struct stat stb;
X  	register char *ddev;
X  	int spacefree;
X  	struct fs fs;
X  
X  	if (dfd < 0 || lseek(dfd, (long)(SBOFF), 0) < 0)
X
X--- 269,275 -----
X  	struct stat stb;
X  	register char *ddev;
X  	int spacefree;
X+ #ifndef	macII
X  	struct fs fs;
X  
X  	if (dfd < 0 || lseek(dfd, (long)(SBOFF), 0) < 0)
X***************
X*** 272,277
X  	size = (size + 1023) / 1024;
X  	if (minfree + size > spacefree)
X  		return(0);
X  	return(1);
X  }
X  
X
X--- 280,286 -----
X  	size = (size + 1023) / 1024;
X  	if (minfree + size > spacefree)
X  		return(0);
X+ #endif
X  	return(1);
X  }
X  
X***************
X*** 317,319
X  	putchar('\1');		/* return error code */
X  	exit(1);
X  }
X
X--- 326,401 -----
X  	putchar('\1');		/* return error code */
X  	exit(1);
X  }
X+ 
X+ #ifdef	macII
X+ 
X+ #define MAXHOSTNAMELEN 128
X+ 
X+ _validuser(hostf, rhost, luser, ruser, baselen)
X+ char *rhost, *luser, *ruser;
X+ FILE *hostf;
X+ int baselen;
X+ {
X+ 	char *user;
X+ 	char ahost[MAXHOSTNAMELEN];
X+ 	register char *p;
X+ 
X+ 	while (fgets(ahost, sizeof (ahost), hostf)) {
X+ 		p = ahost;
X+ 		while (*p != '\n' && *p != ' ' && *p != '\t' && *p != '\0') {
X+ 			*p = isupper(*p) ? tolower(*p) : *p;
X+ 			p++;
X+ 		}
X+ 		if (*p == ' ' || *p == '\t') {
X+ 			*p++ = '\0';
X+ 			while (*p == ' ' || *p == '\t')
X+ 				p++;
X+ 			user = p;
X+ 			while (*p != '\n' && *p != ' ' && *p != '\t' && *p != '\0')
X+ 				p++;
X+ 		} else
X+ 			user = p;
X+ 		*p = '\0';
X+ 		if (_checkhost(rhost, ahost, baselen) &&
X+ 		    !strcmp(ruser, *user ? user : luser)) {
X+ 			return (0);
X+ 		}
X+ 	}
X+ 	return (-1);
X+ }
X+ 
X+ _checkhost(rhost, lhost, len)
X+ char *rhost, *lhost;
X+ int len;
X+ {
X+ 	static char ldomain[MAXHOSTNAMELEN + 1];
X+ 	static char *domainp = NULL;
X+ 	register char *cp;
X+ 
X+ 	if (len == -1)
X+ 		return(!strcmp(rhost, lhost));
X+ 	if (strncmp(rhost, lhost, len))
X+ 		return(0);
X+ 	if (!strcmp(rhost, lhost))
X+ 		return(1);
X+ 	if (*(lhost + len) != '\0')
X+ 		return(0);
X+ 	if (!domainp) {
X+ 		if (gethostname(ldomain, sizeof(ldomain)) == -1) {
X+ 			domainp = (char *)1;
X+ 			return(0);
X+ 		}
X+ 		ldomain[MAXHOSTNAMELEN] = NULL;
X+ 		if ((domainp = index(ldomain, '.') + 1) == (char *)1)
X+ 			return(0);
X+ 		cp = domainp;
X+ 		while (*cp) {
X+ 			*cp = isupper(*cp) ? tolower(*cp) : *cp;
X+ 			cp++;
X+ 		}
X+ 	}
X+ 	if (domainp == (char *)1)
X+ 		return(0);
X+ 	return(!strcmp(domainp, rhost + len +1));
X+ }
X+ #endif macII
END_OF_FILE
if test 28134 -ne `wc -c <'lpr.diff'`; then
    echo shar: \"'lpr.diff'\" unpacked with wrong size!
fi
# end of 'lpr.diff'
fi
if test -f 'aux.printcap' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'aux.printcap'\"
else
echo shar: Extracting \"'aux.printcap'\" \(1353 characters\)
sed "s/^X//" >'aux.printcap' <<'END_OF_FILE'
X#
X# Copyright (c) 1983 Regents of the University of California.
X# All rights reserved.
X#
X# Redistribution and use in source and binary forms are permitted
X# provided that this notice is preserved and that due credit is given
X# to the University of California at Berkeley. The name of the University
X# may not be used to endorse or promote products derived from this
X# software without specific prior written permission. This software
X# is provided ``as is'' without express or implied warranty.
X#
X#	@(#)etc.printcap	5.2 (Berkeley) 5/5/88
X#
X# DecWriter over a tty line.
X#lp|ap|arpa|ucbarpa|LA-180 DecWriter III:\
X#	:br#1200:cs#04260:cc#03500:os#05:oc#0177772:is#012541:ic#0472:
X#	:tr=\f:of=/usr/local/lib/lpf:lf=/usr/adm/lpd-errs:
X# typical remote printer entry
X#ucbvax|vax|vx|ucbvax line printer:\
X#	:lp=:rm=ucbvax:sd=/usr/spool/vaxlpd:lf=/usr/adm/lpd-errs:
X#
Xlp|Printronix P-300 in coffee room:\
X	:lp=:rp=lp:rm=salt:sd=/usr/spool/remote/lp:lf=/usr/adm/lpd-errs:
Xmac2|ps|PostScript|PostScript|LaserWriter in Engineering:\
X	:lp=:rp=mac2:rm=salt:sd=/usr/spool/remote/mac2:lf=/usr/adm/lpd-errs:
Xmac5|ps|PostScript|PostScript|LaserWriter in Personnel:\
X	:lp=:rp=mac5:rm=salt:sd=/usr/spool/remote/mac5:lf=/usr/adm/lpd-errs:
Xmac7|ps|PostScript|PostScript|LaserWriter in Customer Service:\
X	:lp=:rp=mac7:rm=salt:sd=/usr/spool/remote/mac7:lf=/usr/adm/lpd-errs:
END_OF_FILE
if test 1353 -ne `wc -c <'aux.printcap'`; then
    echo shar: \"'aux.printcap'\" unpacked with wrong size!
fi
# end of 'aux.printcap'
fi
echo shar: End of shell archive.
exit 0