budd@bu-cs.BU.EDU (Philip Budne) (08/02/89)
Here are diffs to the 4.3-Tahoe lpr/lpd available from UUNET to allow it to be used on an SGI machine. Here are the particulars of the system on which I ported it; grizzly% uname -a grizzly grizzly 4D1-3.1F 04141631 IP5 It has NOT been used to drive local printers at all, but only to provide access to printers on BSD hosts. Some assembly required -- and remember, you get what you pay for! I don't read this group, but would be happy to hear about real fixes or improvements via mail. Phil Budne, Boston University budd@bu-it.bu.edu {mit-eddie,harvard}!buita!budd ================ snip here (actually I just use "unshar") #! /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: Makefile.diff README.BU cmds.c.diff cmdtab.c.diff # displayq.c.diff lp.h.diff lp.local.h.diff lpc.c.diff lpd.c.diff # lpr.c.diff printjob.c.diff recvjob.c.diff startdaemon.c.diff # Wrapped by budd@bu-pub on Tue Aug 1 16:12:44 1989 PATH=/bin:/usr/bin:/usr/ucb ; export PATH if test -f Makefile.diff -a "${1}" != "-c" ; then echo shar: Will not over-write existing file \"Makefile.diff\" else echo shar: Extracting \"Makefile.diff\" \(7606 characters\) sed "s/^X//" >Makefile.diff <<'END_OF_Makefile.diff' X*** Makefile.orig Thu Sep 29 12:29:09 1988 X--- Makefile Mon Jul 17 15:49:53 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 DAEMON= daemon X SPGRP= daemon X X--- 21,30 ----- X # DAEMON someone special X # SPGRP the group id of the spooling programs X # X! CFLAGS= -g -I/usr/include/bsd X! LIBDIR= /usr/local/lib X! BINDIR= /usr/local/bin X! ETCDIR= /usr/local/etc X SPLDIR= /usr/spool/lpd X DAEMON= daemon X SPGRP= daemon X*************** X*** 27,33 X SPLDIR= /usr/spool/lpd X DAEMON= daemon X SPGRP= daemon X! LIBC= /lib/libc.a X L1SRCS= lpd.c printjob.c recvjob.c displayq.c rmjob.c startdaemon.c \ X lpdchar.c common.c printcap.c X L1OBJS= lpd.o printjob.o recvjob.o displayq.o rmjob.o startdaemon.o \ X X--- 28,34 ----- X SPLDIR= /usr/spool/lpd X DAEMON= daemon X SPGRP= daemon X! #LIBC= /lib/libc.a X L1SRCS= lpd.c printjob.c recvjob.c displayq.c rmjob.c startdaemon.c \ X lpdchar.c common.c printcap.c X L1OBJS= lpd.o printjob.o recvjob.o displayq.o rmjob.o startdaemon.o \ X*************** X*** 32,39 X lpdchar.c common.c printcap.c X L1OBJS= lpd.o printjob.o recvjob.o displayq.o rmjob.o startdaemon.o \ X lpdchar.o common.o printcap.o X! L2SRCS= lpr.c startdaemon.c printcap.c X! L2OBJS= lpr.o startdaemon.o printcap.o X L3SRCS= lpq.c displayq.c common.c printcap.c X L3OBJS= lpq.o displayq.o common.o printcap.o X L4SRCS= lprm.c rmjob.c startdaemon.c common.c printcap.c X X--- 33,40 ----- X lpdchar.c common.c printcap.c X L1OBJS= lpd.o printjob.o recvjob.o displayq.o rmjob.o startdaemon.o \ X lpdchar.o common.o printcap.o X! L2SRCS= lpr.c startdaemon.c printcap.c common.c X! L2OBJS= lpr.o startdaemon.o printcap.o common.o X L3SRCS= lpq.c displayq.c common.c printcap.c X L3OBJS= lpq.o displayq.o common.o printcap.o X L4SRCS= lprm.c rmjob.c startdaemon.c common.c printcap.c X*************** X*** 53,59 X MAN= ${MAN1} ${MAN8} X ALL= lpd lpr lpq lprm lpc lptest pac X X! all: ${ALL} FILTERS VFILTERS X X lpd: ${L1OBJS} ${LIBC} X ${CC} -o $@ ${L1OBJS} X X--- 54,61 ----- X MAN= ${MAN1} ${MAN8} X ALL= lpd lpr lpq lprm lpc lptest pac X X! #all: ${ALL} FILTERS VFILTERS X! all: ${ALL} X X lpd: ${L1OBJS} ${LIBC} X ${CC} -o $@ ${L1OBJS} -lbsd X*************** X*** 56,62 X all: ${ALL} FILTERS VFILTERS X X lpd: ${L1OBJS} ${LIBC} X! ${CC} -o $@ ${L1OBJS} X X lpr: ${L2OBJS} ${LIBC} X ${CC} -o $@ ${L2OBJS} X X--- 58,64 ----- X all: ${ALL} X X lpd: ${L1OBJS} ${LIBC} X! ${CC} -o $@ ${L1OBJS} -lbsd X X lpr: ${L2OBJS} ${LIBC} X ${CC} -o $@ ${L2OBJS} -lbsd X*************** X*** 59,65 X ${CC} -o $@ ${L1OBJS} X X lpr: ${L2OBJS} ${LIBC} X! ${CC} -o $@ ${L2OBJS} X X lpq: ${L3OBJS} ${LIBC} X ${CC} -o $@ ${L3OBJS} X X--- 61,67 ----- X ${CC} -o $@ ${L1OBJS} -lbsd X X lpr: ${L2OBJS} ${LIBC} X! ${CC} -o $@ ${L2OBJS} -lbsd X X lpq: ${L3OBJS} ${LIBC} X ${CC} -o $@ ${L3OBJS} -lbsd X*************** X*** 62,68 X ${CC} -o $@ ${L2OBJS} X X lpq: ${L3OBJS} ${LIBC} X! ${CC} -o $@ ${L3OBJS} X X lprm: ${L4OBJS} ${LIBC} X ${CC} -o $@ ${L4OBJS} X X--- 64,70 ----- X ${CC} -o $@ ${L2OBJS} -lbsd X X lpq: ${L3OBJS} ${LIBC} X! ${CC} -o $@ ${L3OBJS} -lbsd X X lprm: ${L4OBJS} ${LIBC} X ${CC} -o $@ ${L4OBJS} -lbsd X*************** X*** 65,71 X ${CC} -o $@ ${L3OBJS} X X lprm: ${L4OBJS} ${LIBC} X! ${CC} -o $@ ${L4OBJS} X X lpc: ${L5OBJS} ${LIBC} X ${CC} -o $@ ${L5OBJS} X X--- 67,73 ----- X ${CC} -o $@ ${L3OBJS} -lbsd X X lprm: ${L4OBJS} ${LIBC} X! ${CC} -o $@ ${L4OBJS} -lbsd X X lpc: ${L5OBJS} ${LIBC} X ${CC} -o $@ ${L5OBJS} -lbsd X*************** X*** 68,74 X ${CC} -o $@ ${L4OBJS} X X lpc: ${L5OBJS} ${LIBC} X! ${CC} -o $@ ${L5OBJS} X X lptest: ${L6OBJS} ${LIBC} X ${CC} ${CFLAGS} -o $@ ${L6OBJS} X X--- 70,76 ----- X ${CC} -o $@ ${L4OBJS} -lbsd X X lpc: ${L5OBJS} ${LIBC} X! ${CC} -o $@ ${L5OBJS} -lbsd X X lptest: ${L6OBJS} ${LIBC} X ${CC} ${CFLAGS} -o $@ ${L6OBJS} -lbsd X*************** X*** 71,77 X ${CC} -o $@ ${L5OBJS} X X lptest: ${L6OBJS} ${LIBC} X! ${CC} ${CFLAGS} -o $@ ${L6OBJS} X X pac: ${L7OBJS} ${LIBC} X ${CC} -o $@ ${L7OBJS} X X--- 73,79 ----- X ${CC} -o $@ ${L5OBJS} -lbsd X X lptest: ${L6OBJS} ${LIBC} X! ${CC} ${CFLAGS} -o $@ ${L6OBJS} -lbsd X X pac: ${L7OBJS} ${LIBC} X ${CC} -o $@ ${L7OBJS} -lbsd X*************** X*** 74,80 X ${CC} ${CFLAGS} -o $@ ${L6OBJS} X X pac: ${L7OBJS} ${LIBC} X! ${CC} -o $@ ${L7OBJS} X X FILTERS: X cd filters; make ${MFLAGS} X X--- 76,82 ----- X ${CC} ${CFLAGS} -o $@ ${L6OBJS} -lbsd X X pac: ${L7OBJS} ${LIBC} X! ${CC} -o $@ ${L7OBJS} -lbsd X X FILTERS: X cd filters; make ${MFLAGS} X*************** X*** 97,103 X cd filters; make ${MFLAGS} depend X cd vfilters; make ${MFLAGS} depend X X! install: ${MAN} 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 X--- 99,106 ----- X cd filters; make ${MFLAGS} depend X cd vfilters; make ${MFLAGS} depend X X! #install: ${MAN} X! install: 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*************** X*** 102,108 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 X--- 105,111 ----- 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}/${ETCDIR}/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}/${ETCDIR}/pac X X*************** X*** 104,117 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! install -c -o bin -g bin -m 444 ${MAN1} ${DESTDIR}/usr/man/cat1 X! install -c -o bin -g bin -m 444 ${MAN8} ${DESTDIR}/usr/man/cat8 X! cd filters; make ${MFLAGS} DESTDIR=${DESTDIR} install X! cd vfilters; make ${MFLAGS} DESTDIR=${DESTDIR} install X X lint: ${SRCS} X lint ${CFLAGS} ${L1SRCS} X X--- 107,121 ----- X install -s -o root -g ${SPGRP} -m 6711 lprm ${DESTDIR}/${BINDIR}/lprm X install -s -o bin -g ${SPGRP} -m 2711 lpc ${DESTDIR}/${ETCDIR}/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}/${ETCDIR}/pac X! X! # /etc/chown ${DAEMON} ${DESTDIR}/${SPLDIR} X! # chgrp ${SPGRP} ${DESTDIR}/${SPLDIR} X! # chmod 775 ${DESTDIR}/${SPLDIR} X! # install -c -o bin -g bin -m 444 ${MAN1} ${DESTDIR}/usr/man/cat1 X! # install -c -o bin -g bin -m 444 ${MAN8} ${DESTDIR}/usr/man/cat8 X! # cd filters; make ${MFLAGS} DESTDIR=${DESTDIR} install X! # cd vfilters; make ${MFLAGS} DESTDIR=${DESTDIR} install X X lint: ${SRCS} X lint ${CFLAGS} ${L1SRCS} END_OF_Makefile.diff if test 7606 -ne `wc -c <Makefile.diff`; then echo shar: \"Makefile.diff\" unpacked with wrong size! fi # end of overwriting check fi if test -f README.BU -a "${1}" != "-c" ; then echo shar: Will not over-write existing file \"README.BU\" else echo shar: Extracting \"README.BU\" \(509 characters\) sed "s/^X//" >README.BU <<'END_OF_README.BU' X4.3 Tahoe lpr/lpd (from uunet) hacked for SGI/Irix X Xprintcap capabilities for terminal mode bits (fc, fs, xc, xs) have not Xbeen implemented! We do not use local printers on our SGIs. (Why not Xuse the native lp?) X XSimulation of BSD fc/fs/xc/xs would allow quicker porting of BSD Xfilters and printcap files, but not the full latitude of termio modes. X XAllowing full access to termio would require; X {set,clear} x {cflags,iflags,oflags,lflags} X VMIN X VTIME X Xie; 10 capabilities. X X Phil Budne X Boston University END_OF_README.BU if test 509 -ne `wc -c <README.BU`; then echo shar: \"README.BU\" unpacked with wrong size! fi # end of overwriting check fi if test -f cmds.c.diff -a "${1}" != "-c" ; then echo shar: Will not over-write existing file \"cmds.c.diff\" else echo shar: Extracting \"cmds.c.diff\" \(631 characters\) sed "s/^X//" >cmds.c.diff <<'END_OF_cmds.c.diff' X*** cmds.c.orig Thu Jun 30 21:00:19 1988 X--- cmds.c Mon Jul 17 14:58:31 1989 X*************** X*** 160,166 X } X } X X! select(d) X struct direct *d; X { X int c = d->d_name[0]; X X--- 160,166 ----- X } X } X X! Select(d) X struct direct *d; X { X int c = d->d_name[0]; X*************** X*** 211,217 X ; X lp[-1] = '/'; X X! nitems = scandir(SD, &queue, select, sortq); X if (nitems < 0) { X printf("\tcannot examine spool directory\n"); X return; X X--- 211,217 ----- X ; X lp[-1] = '/'; X X! nitems = scandir(SD, &queue, Select, sortq); X if (nitems < 0) { X printf("\tcannot examine spool directory\n"); X return; END_OF_cmds.c.diff if test 631 -ne `wc -c <cmds.c.diff`; then echo shar: \"cmds.c.diff\" unpacked with wrong size! fi # end of overwriting check fi if test -f cmdtab.c.diff -a "${1}" != "-c" ; then echo shar: Will not over-write existing file \"cmdtab.c.diff\" else echo shar: Extracting \"cmdtab.c.diff\" \(279 characters\) sed "s/^X//" >cmdtab.c.diff <<'END_OF_cmdtab.c.diff' X*** cmdtab.c.orig Thu Jun 30 21:00:19 1988 X--- cmdtab.c Mon Jul 17 15:00:52 1989 X*************** X*** 61,64 X { 0 }, X }; X X! int NCMDS = sizeof (cmdtab) / sizeof (cmdtab[0]); X X--- 61,64 ----- X { 0 }, X }; X X! int NCMDS = sizeof (cmdtab) / sizeof (cmdtab[0]) - 1; /* budd */ END_OF_cmdtab.c.diff if test 279 -ne `wc -c <cmdtab.c.diff`; then echo shar: \"cmdtab.c.diff\" unpacked with wrong size! fi # end of overwriting check fi if test -f displayq.c.diff -a "${1}" != "-c" ; then echo shar: Will not over-write existing file \"displayq.c.diff\" else echo shar: Extracting \"displayq.c.diff\" \(1197 characters\) sed "s/^X//" >displayq.c.diff <<'END_OF_displayq.c.diff' X*** displayq.c.orig Thu Jun 30 21:00:20 1988 X--- displayq.c Mon Jul 17 16:07:38 1989 X*************** X*** 154,159 X warn(); X else { X register char *cp; X X /* get daemon pid */ X cp = current; X X--- 154,160 ----- X warn(); X else { X register char *cp; X+ register c; X X /* get daemon pid */ X cp = current; X*************** X*** 157,164 X X /* get daemon pid */ X cp = current; X! while ((*cp = getc(fp)) != EOF && *cp != '\n') X! cp++; X *cp = '\0'; X i = atoi(current); X if (i <= 0 || kill(i, 0) < 0) X X--- 158,165 ----- X X /* get daemon pid */ X cp = current; X! while ((c = getc(fp)) != EOF && c != '\n') X! *cp++ = c; X *cp = '\0'; X i = atoi(current); X if (i <= 0 || kill(i, 0) < 0) X*************** X*** 166,173 X else { X /* read current file name */ X cp = current; X! while ((*cp = getc(fp)) != EOF && *cp != '\n') X! cp++; X *cp = '\0'; X /* X * Print the status file. X X--- 167,174 ----- X else { X /* read current file name */ X cp = current; X! while ((c = getc(fp)) != EOF && c != '\n') X! *cp++ = c; X *cp = '\0'; X /* X * Print the status file. END_OF_displayq.c.diff if test 1197 -ne `wc -c <displayq.c.diff`; then echo shar: \"displayq.c.diff\" unpacked with wrong size! fi # end of overwriting check fi if test -f lp.h.diff -a "${1}" != "-c" ; then echo shar: Will not over-write existing file \"lp.h.diff\" else echo shar: Extracting \"lp.h.diff\" \(778 characters\) sed "s/^X//" >lp.h.diff <<'END_OF_lp.h.diff' X*** lp.h.orig Thu Jun 30 21:00:21 1988 X--- lp.h Sun Jul 16 01:07:57 1989 X*************** X*** 27,32 X #include <sys/dir.h> X #include <sys/stat.h> X #include <sys/socket.h> X #include <sys/un.h> X #include <netinet/in.h> X #include <netdb.h> X X--- 27,33 ----- X #include <sys/dir.h> X #include <sys/stat.h> X #include <sys/socket.h> X+ #ifndef sgi /* budd */ X #include <sys/un.h> X #endif /* budd */ X #include <netinet/in.h> X*************** X*** 28,33 X #include <sys/stat.h> X #include <sys/socket.h> X #include <sys/un.h> X #include <netinet/in.h> X #include <netdb.h> X #include <pwd.h> X X--- 29,35 ----- X #include <sys/socket.h> X #ifndef sgi /* budd */ X #include <sys/un.h> X+ #endif /* budd */ X #include <netinet/in.h> X #include <netdb.h> X #include <pwd.h> END_OF_lp.h.diff if test 778 -ne `wc -c <lp.h.diff`; then echo shar: \"lp.h.diff\" unpacked with wrong size! fi # end of overwriting check fi if test -f lp.local.h.diff -a "${1}" != "-c" ; then echo shar: Will not over-write existing file \"lp.local.h.diff\" else echo shar: Extracting \"lp.local.h.diff\" \(2417 characters\) sed "s/^X//" >lp.local.h.diff <<'END_OF_lp.local.h.diff' X*** lp.local.h.orig Thu Jun 30 21:00:21 1988 X--- lp.local.h Mon Jul 17 15:57:25 1989 X*************** X*** 29,34 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 X--- 29,35 ----- X #include <a.out.h> X #include <ar.h> X X+ #ifndef sgi X #ifndef A_MAGIC1 /* must be a VM/UNIX system */ X # define A_MAGIC1 OMAGIC X # define A_MAGIC2 NMAGIC X*************** X*** 36,41 X # undef ARMAG X # define ARMAG 0177545 X #endif X X /* X * Defaults for line printer capabilities data base X X--- 37,43 ----- X # undef ARMAG X # define ARMAG 0177545 X #endif X+ #endif X X /* X * Defaults for line printer capabilities data base 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--- 46,52 ----- X #define DEFLOCK "lock" X #define DEFSTAT "status" X #define DEFSPOOL "/usr/spool/lpd" X! #define DEFDAEMON "/usr/lib/lpd" /* budd: never used? */ X #define DEFLOGF "/dev/console" X #define DEFDEVLP "/dev/lp" X #define DEFRLPR "/usr/lib/rlpr" X*************** X*** 48,54 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 #define DEFMAXCOPIES 0 X #define DEFFF "\f" X X--- 50,56 ----- X #define DEFLOGF "/dev/console" X #define DEFDEVLP "/dev/lp" X #define DEFRLPR "/usr/lib/rlpr" X! #define DEFBINDIR "/usr/ucb" /* budd: never used? */ X #define DEFMX 1000 X #define DEFMAXCOPIES 0 X #define DEFFF "\f" X*************** X*** 77,82 X /* X * path name of files created by lpd. X */ X #define MASTERLOCK "/usr/spool/lpd.lock" X #define SOCKETNAME "/dev/printer" X X X--- 79,88 ----- X /* X * path name of files created by lpd. X */ X+ #ifdef sgi X+ /* budd: keep everything under /usr/spool/lpd */ X+ #define MASTERLOCK "/usr/spool/lpd/lpd.lock" X+ #else X #define MASTERLOCK "/usr/spool/lpd.lock" X #endif X X*************** X*** 78,83 X * path name of files created by lpd. X */ X #define MASTERLOCK "/usr/spool/lpd.lock" X #define SOCKETNAME "/dev/printer" X X /* X X--- 84,91 ----- X #define MASTERLOCK "/usr/spool/lpd/lpd.lock" X #else X #define MASTERLOCK "/usr/spool/lpd.lock" X+ #endif X+ X #define SOCKETNAME "/dev/printer" X X /* END_OF_lp.local.h.diff if test 2417 -ne `wc -c <lp.local.h.diff`; then echo shar: \"lp.local.h.diff\" unpacked with wrong size! fi # end of overwriting check fi if test -f lpc.c.diff -a "${1}" != "-c" ; then echo shar: Will not over-write existing file \"lpc.c.diff\" else echo shar: Extracting \"lpc.c.diff\" \(437 characters\) sed "s/^X//" >lpc.c.diff <<'END_OF_lpc.c.diff' X*** lpc.c.orig Sun Nov 20 22:11:03 1988 X--- lpc.c Mon Jul 17 14:55:45 1989 X*************** X*** 109,114 X quit(); X if (cmdline[0] == 0) X break; X makeargv(); X c = getcmd(margv[0]); X if (c == (struct cmd *)-1) { X X--- 109,116 ----- X quit(); X if (cmdline[0] == 0) X break; X+ if (cmdline[0] == '\n') /* budd */ X+ continue; /* budd */ X makeargv(); X c = getcmd(margv[0]); X if (c == (struct cmd *)-1) { END_OF_lpc.c.diff if test 437 -ne `wc -c <lpc.c.diff`; then echo shar: \"lpc.c.diff\" unpacked with wrong size! fi # end of overwriting check fi if test -f lpd.c.diff -a "${1}" != "-c" ; then echo shar: Will not over-write existing file \"lpd.c.diff\" else echo shar: Extracting \"lpd.c.diff\" \(4953 characters\) sed "s/^X//" >lpd.c.diff <<'END_OF_lpd.c.diff' X*** lpd.c.orig Thu Jun 30 21:00:22 1988 X--- lpd.c Sun Jul 16 01:13:37 1989 X*************** X*** 65,71 X int argc; X char **argv; X { X! int f, funix, finet, options, defreadfds, fromlen; X struct sockaddr_un sun, fromunix; X struct sockaddr_in sin, frominet; X int omask, lfd; X X--- 65,73 ----- X int argc; X char **argv; X { X! int f, finet, options, defreadfds, fromlen; X! # ifndef sgi X! int funix; X struct sockaddr_un sun, fromunix; X # endif X struct sockaddr_in sin, frominet; X*************** X*** 67,72 X { X int f, funix, finet, options, defreadfds, fromlen; X struct sockaddr_un sun, fromunix; X struct sockaddr_in sin, frominet; X int omask, lfd; X X X--- 69,75 ----- X # ifndef sgi X int funix; X struct sockaddr_un sun, fromunix; X+ # endif X struct sockaddr_in sin, frominet; X int omask, lfd; X X*************** X*** 127,132 X syslog(LOG_ERR, "%s: %m", MASTERLOCK); X exit(1); X } X signal(SIGCHLD, reapchild); X /* X * Restart all the printers. X X--- 130,139 ----- X syslog(LOG_ERR, "%s: %m", MASTERLOCK); X exit(1); X } X+ # ifdef Xsgi X+ signal(SIGCLD, SIG_IGN); /* never make zombies */ X+ /* doesn't seem to work */ X+ # else X signal(SIGCHLD, reapchild); X # endif X /* X*************** X*** 128,133 X exit(1); X } X signal(SIGCHLD, reapchild); X /* X * Restart all the printers. X */ X X--- 135,141 ----- X /* doesn't seem to work */ X # else X signal(SIGCHLD, reapchild); X+ # endif X /* X * Restart all the printers. X */ X*************** X*** 132,137 X * Restart all the printers. X */ X startup(); X (void) unlink(SOCKETNAME); X funix = socket(AF_UNIX, SOCK_STREAM, 0); X if (funix < 0) { X X--- 140,146 ----- X * Restart all the printers. X */ X startup(); X+ # ifndef sgi X (void) unlink(SOCKETNAME); X funix = socket(AF_UNIX, SOCK_STREAM, 0); X if (funix < 0) { X*************** X*** 153,158 X sigsetmask(omask); X defreadfds = 1 << funix; X listen(funix, 5); X finet = socket(AF_INET, SOCK_STREAM, 0); X if (finet >= 0) { X struct servent *sp; X X--- 162,168 ----- X sigsetmask(omask); X defreadfds = 1 << funix; X listen(funix, 5); X+ # endif X finet = socket(AF_INET, SOCK_STREAM, 0); X if (finet >= 0) { X struct servent *sp; X*************** X*** 188,193 X syslog(LOG_WARNING, "select: %m"); X continue; X } X if (readfds & (1 << funix)) { X domain = AF_UNIX, fromlen = sizeof(fromunix); X s = accept(funix, &fromunix, &fromlen); X X--- 198,204 ----- X syslog(LOG_WARNING, "select: %m"); X continue; X } X+ # ifndef sgi X if (readfds & (1 << funix)) { X domain = AF_UNIX, fromlen = sizeof(fromunix); X s = accept(funix, &fromunix, &fromlen); X*************** X*** 191,197 X if (readfds & (1 << funix)) { X domain = AF_UNIX, fromlen = sizeof(fromunix); X s = accept(funix, &fromunix, &fromlen); X! } else if (readfds & (1 << finet)) { X domain = AF_INET, fromlen = sizeof(frominet); X s = accept(finet, &frominet, &fromlen); X } X X--- 202,210 ----- X if (readfds & (1 << funix)) { X domain = AF_UNIX, fromlen = sizeof(fromunix); X s = accept(funix, &fromunix, &fromlen); X! } else X! # endif X! if (readfds & (1 << finet)) { X domain = AF_INET, fromlen = sizeof(frominet); X s = accept(finet, &frominet, &fromlen); X } X*************** X*** 206,211 X signal(SIGINT, SIG_IGN); X signal(SIGQUIT, SIG_IGN); X signal(SIGTERM, SIG_IGN); X (void) close(funix); X (void) close(finet); X dup2(s, 1); X X--- 219,225 ----- X signal(SIGINT, SIG_IGN); X signal(SIGQUIT, SIG_IGN); X signal(SIGTERM, SIG_IGN); X+ # ifndef sgi X (void) close(funix); X # endif X (void) close(finet); X*************** X*** 207,212 X signal(SIGQUIT, SIG_IGN); X signal(SIGTERM, SIG_IGN); X (void) close(funix); X (void) close(finet); X dup2(s, 1); X (void) close(s); X X--- 221,227 ----- X signal(SIGTERM, SIG_IGN); X # ifndef sgi X (void) close(funix); X+ # endif X (void) close(finet); X dup2(s, 1); X (void) close(s); X*************** X*** 222,228 X reapchild() X { X union wait status; X- X while (wait3(&status, WNOHANG, 0) > 0) X ; X } X X--- 237,242 ----- X reapchild() X { X union wait status; X while (wait3(&status, WNOHANG, 0) > 0) X ; X } X*************** X*** 401,406 X f->sin_port = ntohs(f->sin_port); X if (f->sin_family != AF_INET || f->sin_port >= IPPORT_RESERVED) X fatal("Malformed from address"); X hp = gethostbyaddr(&f->sin_addr, sizeof(struct in_addr), f->sin_family); X if (hp == 0) X fatal("Host name for your address (%s) unknown", X X--- 415,424 ----- X f->sin_port = ntohs(f->sin_port); X if (f->sin_family != AF_INET || f->sin_port >= IPPORT_RESERVED) X fatal("Malformed from address"); X+ # ifdef sgi X+ if( inet_netof( f->sin_addr ) == 127 ) /* loopback? */ X+ return; X+ # endif X hp = gethostbyaddr(&f->sin_addr, sizeof(struct in_addr), f->sin_family); X if (hp == 0) X fatal("Host name for your address (%s) unknown", END_OF_lpd.c.diff if test 4953 -ne `wc -c <lpd.c.diff`; then echo shar: \"lpd.c.diff\" unpacked with wrong size! fi # end of overwriting check fi if test -f lpr.c.diff -a "${1}" != "-c" ; then echo shar: Will not over-write existing file \"lpr.c.diff\" else echo shar: Extracting \"lpr.c.diff\" \(4879 characters\) sed "s/^X//" >lpr.c.diff <<'END_OF_lpr.c.diff' X*** lpr.c.orig Thu Jun 30 21:00:24 1988 X--- lpr.c Mon Jul 17 15:46:58 1989 X*************** X*** 90,95 X char *argv[]; X { X extern struct passwd *getpwuid(); X struct passwd *pw; X struct group *gptr; X extern char *itoa(); X X--- 90,98 ----- X char *argv[]; X { X extern struct passwd *getpwuid(); X+ # ifdef sgi X+ extern struct group *getgrnam(); X+ # endif X struct passwd *pw; X struct group *gptr; X extern char *itoa(); X*************** X*** 258,263 X */ X mktemps(); X tfd = nfile(tfname); X (void) fchown(tfd, DU, -1); /* owned by daemon for protection */ X card('H', host); X card('P', person); X X--- 261,269 ----- X */ X mktemps(); X tfd = nfile(tfname); X+ # ifdef sgi X+ (void) chown(tfname, DU, -1); /* owned by daemon for protection */ X+ # else X (void) fchown(tfd, DU, -1); /* owned by daemon for protection */ X # endif X card('H', host); X*************** X*** 259,264 X mktemps(); X tfd = nfile(tfname); X (void) fchown(tfd, DU, -1); /* owned by daemon for protection */ X card('H', host); X card('P', person); X if (hdr) { X X--- 265,271 ----- X (void) chown(tfname, DU, -1); /* owned by daemon for protection */ X # else X (void) fchown(tfd, DU, -1); /* owned by daemon for protection */ X+ # endif X card('H', host); X card('P', person); X if (hdr) { X*************** X*** 462,467 X printf("%s: cannot create %s\n", name, n); X cleanup(); X } X if (fchown(f, userid, -1) < 0) { X printf("%s: cannot chown %s\n", name, n); X cleanup(); X X--- 469,480 ----- X printf("%s: cannot create %s\n", name, n); X cleanup(); X } X+ # ifdef sgi X+ if (chown(n, userid, -1) < 0) { X+ printf("%s: cannot chown %s\n", name, n); X+ cleanup(); X+ } X+ # else X if (fchown(f, userid, -1) < 0) { X printf("%s: cannot chown %s\n", name, n); X cleanup(); X*************** X*** 466,471 X printf("%s: cannot chown %s\n", name, n); X cleanup(); X } X if (++n[inchar] > 'z') { X if (++n[inchar-2] == 't') { X printf("too many files - break up the job\n"); X X--- 479,485 ----- X printf("%s: cannot chown %s\n", name, n); X cleanup(); X } X+ # endif X if (++n[inchar] > 'z') { X if (++n[inchar-2] == 't') { X printf("too many files - break up the job\n"); X*************** X*** 515,520 X test(file) X char *file; X { X struct exec execb; X register int fd; X register char *cp; X X--- 529,543 ----- X test(file) X char *file; X { X+ # ifdef sgi X+ union { X+ unsigned short ma_short; X+ struct filehdr ma_f; X+ # ifdef SARMAG X+ char ma_str[ SARMAG ]; X+ # endif X+ } magic; X+ # else /* BSD, COFF pdp-11/ibm370 */ X struct exec execb; X # endif X register int fd; X*************** X*** 516,521 X char *file; X { X struct exec execb; X register int fd; X register char *cp; X X X--- 539,545 ----- X } magic; X # else /* BSD, COFF pdp-11/ibm370 */ X struct exec execb; X+ # endif X register int fd; X register char *cp; X X*************** X*** 539,544 X printf("%s: cannot open %s\n", name, file); X return(-1); X } X if (read(fd, &execb, sizeof(execb)) == sizeof(execb)) X switch(execb.a_magic) { X case A_MAGIC1: X X--- 563,590 ----- X printf("%s: cannot open %s\n", name, file); X return(-1); X } X+ X+ # ifdef sgi X+ /* if COFF file is shorter than SARMAG this can fail X+ * seems a BIT unlikely! X+ */ X+ if( read(fd, &magic, sizeof(magic)) == sizeof(magic) ) { X+ if( ISCOFF(magic.ma_f.f_magic) ) { X+ printf("%s: %s is an executable program", name, file); X+ goto error1; X+ } X+ if( X+ # ifdef SARMAG X+ strncmp(magic.ma_str,ARMAG,SARMAG) == 0 X+ # else X+ magic.ma_short == ARMAG X+ # endif X+ ) { X+ printf("%s: %s is an archive file", name, file); X+ goto error1; X+ } X+ } /* read ok */ X+ # else X if (read(fd, &execb, sizeof(execb)) == sizeof(execb)) X switch(execb.a_magic) { X case A_MAGIC1: X*************** X*** 554,559 X printf("%s: %s is an archive file", name, file); X goto error1; X } X (void) close(fd); X if (rflag) { X if ((cp = rindex(file, '/')) == NULL) { X X--- 600,606 ----- X printf("%s: %s is an archive file", name, file); X goto error1; X } X+ # endif /* not sgi */ X (void) close(fd); X X if (rflag) { X*************** X*** 555,560 X goto error1; X } X (void) close(fd); X if (rflag) { X if ((cp = rindex(file, '/')) == NULL) { X if (access(".", 2) == 0) X X--- 602,608 ----- X } X # endif /* not sgi */ X (void) close(fd); X+ X if (rflag) { X if ((cp = rindex(file, '/')) == NULL) { X if (access(".", 2) == 0) X*************** X*** 679,684 X return(s); X } X X /*VARARGS1*/ X fatal(msg, a1, a2, a3) X char *msg; X X--- 727,733 ----- X return(s); X } X X+ # ifndef sgi /* sgi uses copy from common.c */ X /*VARARGS1*/ X fatal(msg, a1, a2, a3) X char *msg; X*************** X*** 688,690 X putchar('\n'); X exit(1); X } X X--- 737,740 ----- X putchar('\n'); X exit(1); X } X+ # endif END_OF_lpr.c.diff if test 4879 -ne `wc -c <lpr.c.diff`; then echo shar: \"lpr.c.diff\" unpacked with wrong size! fi # end of overwriting check fi if test -f printjob.c.diff -a "${1}" != "-c" ; then echo shar: Will not over-write existing file \"printjob.c.diff\" else echo shar: Extracting \"printjob.c.diff\" \(6929 characters\) sed "s/^X//" >printjob.c.diff <<'END_OF_printjob.c.diff' X*** printjob.c.orig Thu Jun 30 21:00:26 1988 X--- printjob.c Sun Jul 16 02:47:40 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 TmpFile[] = "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(TmpFile); X X /* X * uses short form file names X*************** X*** 134,139 X if (nitems == 0) /* no work to do */ X exit(0); X if (stb.st_mode & 01) { /* reset queue flag */ X if (fchmod(lfd, stb.st_mode & 0776) < 0) X syslog(LOG_ERR, "%s: %s: %m", printer, LO); X } X X--- 134,142 ----- X if (nitems == 0) /* no work to do */ X exit(0); X if (stb.st_mode & 01) { /* reset queue flag */ X+ # ifdef sgi X+ if (chmod(LO, stb.st_mode & 0776) < 0) X+ # else X if (fchmod(lfd, stb.st_mode & 0776) < 0) X # endif X syslog(LOG_ERR, "%s: %s: %m", printer, LO); X*************** X*** 135,140 X exit(0); X if (stb.st_mode & 01) { /* reset queue flag */ X if (fchmod(lfd, stb.st_mode & 0776) < 0) X syslog(LOG_ERR, "%s: %s: %m", printer, LO); X } X openpr(); /* open printer or remote */ X X--- 138,144 ----- X if (chmod(LO, stb.st_mode & 0776) < 0) X # else X if (fchmod(lfd, stb.st_mode & 0776) < 0) X+ # endif X syslog(LOG_ERR, "%s: %s: %m", printer, LO); X } X openpr(); /* open printer or remote */ X*************** X*** 170,175 X if (stb.st_mode & 01) { X for (free((char *) q); nitems--; free((char *) q)) X q = *qp++; X if (fchmod(lfd, stb.st_mode & 0776) < 0) X syslog(LOG_WARNING, "%s: %s: %m", X printer, LO); X X--- 174,182 ----- X if (stb.st_mode & 01) { X for (free((char *) q); nitems--; free((char *) q)) X q = *qp++; X+ # ifdef sgi X+ if (chmod(LO, stb.st_mode & 0776) < 0) X+ # else X if (fchmod(lfd, stb.st_mode & 0776) < 0) X # endif X syslog(LOG_WARNING, "%s: %s: %m", X*************** X*** 171,176 X for (free((char *) q); nitems--; free((char *) q)) X q = *qp++; X if (fchmod(lfd, stb.st_mode & 0776) < 0) X syslog(LOG_WARNING, "%s: %s: %m", X printer, LO); X break; X X--- 178,184 ----- X if (chmod(LO, stb.st_mode & 0776) < 0) X # else X if (fchmod(lfd, stb.st_mode & 0776) < 0) X+ # endif X syslog(LOG_WARNING, "%s: %s: %m", X printer, LO); X break; 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--- 218,224 ----- 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*** 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--- 588,594 ----- 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*** 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--- 955,962 ----- 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*** 1007,1013 X */ X abortpr() X { X! (void) unlink(tmpfile); X kill(0, SIGINT); X if (ofilter > 0) X kill(ofilter, SIGCONT); X X--- 1015,1021 ----- X */ X abortpr() X { X! (void) unlink(TmpFile); X kill(0, SIGINT); X if (ofilter > 0) X kill(ofilter, SIGCONT); 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--- 1235,1240 ----- X */ X setty() X { X register struct bauds *bp; X # ifdef sgi X struct termio tt; X*************** X*** 1229,1234 X { 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 X--- 1236,1243 ----- X setty() X { X register struct bauds *bp; X+ # ifdef sgi X+ struct termio tt; X X /* X * set terminal modes; (THIS HAS NOT BEEN TESTED) 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--- 1239,1290 ----- X # ifdef sgi X struct termio tt; X X+ /* X+ * set terminal modes; (THIS HAS NOT BEEN TESTED) X+ * X+ * should simulate BSD sgtty and local flags (32 in all), to X+ * facilitate use of BSD printcap files. But as we don't use X+ * locally attatched printers on any of our SGI boxes, I just X+ * stuck in the modes set by transcript -- your mileage may X+ * vary. X+ */ X+ X+ if (ioctl(pfd, TCGETA, (char *)&tt) < 0) { X+ syslog(LOG_ERR, "%s: ioctl(TCGETA): %m", printer); X+ exit(1); X+ } X+ X+ tt.c_iflag &= ~(IGNBRK|PARMRK|ISTRIP|INLCR|IGNCR|ICRNL|IUCLC|IXANY); X+ tt.c_iflag |= BRKINT|INPCK|IXON; X+ X+ tt.c_oflag |= OPOST; X+ X+ tt.c_lflag &= ~(ISIG|ICANON|XCASE); X+ X+ tt.c_cflag &= ~(CSIZE|CLOCAL); X+ tt.c_cflag |= CS8|CREAD; X+ X+ tt.c_cc[VMIN] = 1; X+ tt.c_cc[VTIME] = 4; 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+ tt.c_cflag &= ~CBAUD; X+ tt.c_cflag |= bp->speed; X+ } X+ if (ioctl(pfd, TCSETA, (char *)&tt) < 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*** 1274,1279 X exit(1); X } X } X } X X /*VARARGS1*/ X X--- 1329,1335 ----- X exit(1); X } X } X+ # endif X } X X /*VARARGS1*/ END_OF_printjob.c.diff if test 6929 -ne `wc -c <printjob.c.diff`; then echo shar: \"printjob.c.diff\" unpacked with wrong size! fi # end of overwriting check fi if test -f recvjob.c.diff -a "${1}" != "-c" ; then echo shar: Will not over-write existing file \"recvjob.c.diff\" else echo shar: Extracting \"recvjob.c.diff\" \(4122 characters\) sed "s/^X//" >recvjob.c.diff <<'END_OF_recvjob.c.diff' X*** recvjob.c.orig Thu Jun 30 21:00:27 1988 X--- recvjob.c Sun Jul 16 01:42:29 1989 X*************** X*** 25,30 X */ X X #include "lp.h" X #include <sys/fs.h> X X char *sp = ""; X X--- 25,33 ----- X */ X X #include "lp.h" X+ #ifdef sgi X+ #include <ustat.h> X+ #else 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--- 29,35 ----- X #include <ustat.h> X #else X #include <sys/fs.h> X+ #endif X X char *sp = ""; X #define ack() (void) write(1, sp, 1); X*************** X*** 33,38 X char tfname[40]; /* tmp copy of cf before linking */ X char dfname[40]; /* data files */ X int minfree; /* keep at least minfree blocks available */ X char *ddev; /* disk device (for checking free space) */ X int dfd; /* file system device descriptor */ X X X--- 37,45 ----- X char tfname[40]; /* tmp copy of cf before linking */ X char dfname[40]; /* data files */ X int minfree; /* keep at least minfree blocks available */ X+ # ifdef sgi X+ dev_t ddev; /* device to check */ X+ # else X char *ddev; /* disk device (for checking free space) */ X int dfd; /* file system device descriptor */ X X*************** X*** 37,42 X int dfd; /* file system device descriptor */ X X char *find_dev(); X X recvjob() X { X X--- 44,50 ----- X int dfd; /* file system device descriptor */ X X char *find_dev(); X+ # endif X X recvjob() X { X*************** X*** 74,79 X } X } else if (stat(SD, &stb) < 0) X frecverr("%s: %s: %m", printer, SD); X minfree = read_number("minfree"); X ddev = find_dev(stb.st_dev, S_IFBLK); X if ((dfd = open(ddev, O_RDONLY)) < 0) X X--- 82,88 ----- X } X } else if (stat(SD, &stb) < 0) X frecverr("%s: %s: %m", printer, SD); X+ X minfree = read_number("minfree"); X # ifdef sgi X ddev = stb.st_dev; X*************** X*** 75,80 X } else if (stat(SD, &stb) < 0) X frecverr("%s: %s: %m", printer, SD); X minfree = read_number("minfree"); X ddev = find_dev(stb.st_dev, S_IFBLK); X if ((dfd = open(ddev, O_RDONLY)) < 0) X syslog(LOG_WARNING, "%s: %s: %m", printer, ddev); X X--- 84,92 ----- X frecverr("%s: %s: %m", printer, SD); X X minfree = read_number("minfree"); X+ # ifdef sgi X+ ddev = stb.st_dev; X+ # else X ddev = find_dev(stb.st_dev, S_IFBLK); X if ((dfd = open(ddev, O_RDONLY)) < 0) X syslog(LOG_WARNING, "%s: %s: %m", printer, ddev); X*************** X*** 78,83 X ddev = find_dev(stb.st_dev, S_IFBLK); X if ((dfd = open(ddev, O_RDONLY)) < 0) X syslog(LOG_WARNING, "%s: %s: %m", printer, ddev); X signal(SIGTERM, rcleanup); X signal(SIGPIPE, rcleanup); X X X--- 90,96 ----- X ddev = find_dev(stb.st_dev, S_IFBLK); X if ((dfd = open(ddev, O_RDONLY)) < 0) X syslog(LOG_WARNING, "%s: %s: %m", printer, ddev); X+ # endif X signal(SIGTERM, rcleanup); X signal(SIGPIPE, rcleanup); X X*************** X*** 85,90 X printjob(); X } X X char * X find_dev(dev, type) X register dev_t dev; X X--- 98,104 ----- X printjob(); X } X X+ # ifndef sgi X char * X find_dev(dev, type) X register dev_t dev; X*************** X*** 114,119 X frecverr("cannot find device %d, %d", major(dev), minor(dev)); X /*NOTREACHED*/ X } X X /* X * Read printer jobs sent by lpd and copy them to the spooling directory. X X--- 128,134 ----- X frecverr("cannot find device %d, %d", major(dev), minor(dev)); X /*NOTREACHED*/ X } X+ # endif X X /* X * Read printer jobs sent by lpd and copy them to the spooling directory. X*************** X*** 259,264 X chksize(size) X int size; X { X struct stat stb; X register char *ddev; X int spacefree; X X--- 274,284 ----- X chksize(size) X int size; X { X+ # ifdef sgi X+ struct ustat us; /* use SVR2 ustat() -- its soo simple! */ X+ if( ustat( ddev, &us ) == 0 && us.f_tfree < minfree ) X+ return(0); X+ # else X struct stat stb; X register char *ddev; X int spacefree; X*************** X*** 272,277 X size = (size + 1023) / 1024; X if (minfree + size > spacefree) X return(0); X return(1); X } X X X--- 292,298 ----- X size = (size + 1023) / 1024; X if (minfree + size > spacefree) X return(0); X+ # endif X return(1); X } X END_OF_recvjob.c.diff if test 4122 -ne `wc -c <recvjob.c.diff`; then echo shar: \"recvjob.c.diff\" unpacked with wrong size! fi # end of overwriting check fi if test -f startdaemon.c.diff -a "${1}" != "-c" ; then echo shar: Will not over-write existing file \"startdaemon.c.diff\" else echo shar: Extracting \"startdaemon.c.diff\" \(1653 characters\) sed "s/^X//" >startdaemon.c.diff <<'END_OF_startdaemon.c.diff' X*** startdaemon.c.orig Thu Jun 30 21:00:28 1988 X--- startdaemon.c Fri Jun 30 15:54:19 1989 X*************** X*** 26,31 X #include <stdio.h> X #include <sys/types.h> X #include <sys/socket.h> X #include <sys/un.h> X #include "lp.local.h" X X X--- 26,32 ----- X #include <stdio.h> X #include <sys/types.h> X #include <sys/socket.h> X+ #ifndef sgi X #include <sys/un.h> X #endif X #include "lp.local.h" X*************** X*** 27,32 X #include <sys/types.h> X #include <sys/socket.h> X #include <sys/un.h> X #include "lp.local.h" X X startdaemon(printer) X X--- 28,34 ----- X #include <sys/socket.h> X #ifndef sgi X #include <sys/un.h> X+ #endif X #include "lp.local.h" X X startdaemon(printer) X*************** X*** 32,38 X startdaemon(printer) X char *printer; X { X! struct sockaddr_un sun; X register int s, n; X char buf[BUFSIZ]; X X X--- 34,42 ----- X startdaemon(printer) X char *printer; X { X! # ifndef sgi X! struct sockaddr_in sin; X! # endif X register int s, n; X char buf[BUFSIZ]; X X*************** X*** 36,41 X register int s, n; X char buf[BUFSIZ]; X X s = socket(AF_UNIX, SOCK_STREAM, 0); X if (s < 0) { X perr("socket"); X X--- 40,48 ----- X register int s, n; X char buf[BUFSIZ]; X X+ # ifdef sgi X+ s = getport( "localhost" ); X+ # else X s = socket(AF_UNIX, SOCK_STREAM, 0); X if (s < 0) { X perr("socket"); X*************** X*** 48,53 X (void) close(s); X return(0); X } X (void) sprintf(buf, "\1%s\n", printer); X n = strlen(buf); X if (write(s, buf, n) != n) { X X--- 55,61 ----- X (void) close(s); X return(0); X } X+ # endif X (void) sprintf(buf, "\1%s\n", printer); X n = strlen(buf); X if (write(s, buf, n) != n) { END_OF_startdaemon.c.diff if test 1653 -ne `wc -c <startdaemon.c.diff`; then echo shar: \"startdaemon.c.diff\" unpacked with wrong size! fi # end of overwriting check fi echo shar: End of shell archive. exit 0