[unix-pc.sources] Official patch #14, B News 2.11

arnold@skeeve.UUCP (Arnold D. Robbins) (12/20/87)

Below is patch #14 for B News 2.11. Note that there is a bug introduced
in this patch which I will post a fix for next. It is a simple thing
to fix. See next article for details.

Enjoy,
-------------------
From gt-eedsp!gatech!hao!ames!amdcad!sun!pitstop!sundc!seismo!rick Mon Dec  7 15:41:57 EST 1987
Article 822 of news.software.b:
Path: emory!gt-eedsp!gatech!hao!ames!amdcad!sun!pitstop!sundc!seismo!rick
From: rick@seismo.CSS.GOV (Rick Adams)
Newsgroups: news.software.b
Subject: 2.11 news src patch #14
Keywords: last one for 1987
Message-ID: <44204@beno.seismo.CSS.GOV>
Date: 4 Dec 87 07:50:54 GMT
Organization: Center for Seismic Studies, Arlington, VA
Lines: 1369

Description:
	This is patch #14 for news 2.11 src. It is expected to be stable
	and does not introduce major new features.

	Many minor cleanups.
	Changes to Makefile to make $(DESTDIR) work completely.
	sendbatch now supports MINDISKFREE and will not batch up news
		if there is not a least that much free space on /usr/spool.
	LOCKING is an acceptable define for those with the locking() call.
	recnews now avoids using popen and has its own routine to
	exec the command. This avoids having the shell interpreting
		special characters that we don't want it to.

Fix:
	cd to the src directory and apply the following patch.

Index: Makefile.dst
Prereq: 1.28
*** .d/Makefile.dst	Mon Nov 23 19:13:12 1987
--- Makefile.dst	Tue Dec  1 18:51:32 1987
***************
*** 1,2 ****
! # '@(#)Makefile.dst	1.28	11/19/87'
  # Generic Makefile.
--- 1,2 ----
! # '@(#)Makefile.dst	1.30	12/1/87'
  # Generic Makefile.
***************
*** 31,32 ****
--- 31,34 ----
  MAXPERBATCH = 1000000000
+ MINDISKFREE = 0
+ SPOOL_DISK = /usr/spool
  
***************
*** 49,53 ****
  
! DEFS =	-DRNEWS=\"$(BINDIR)/rnews\" -DSPOOLDIR=\"$(SPOOLDIR)\" \
! 	-DBATCHDIR=\"$(BATCHDIR)\" -DLIBDIR=\"$(LIBDIR)\" \
! 	-DBINDIR=\"$(BINDIR)\" -DNEWSUSR=\"$(NEWSUSR)\" \
  	-DNEWSGRP=\"$(NEWSGRP)\" ${SERVER} ${NFSCLIENT}
--- 51,56 ----
  
! DEFS =	-DRNEWS=\"$(DESTDIR)$(BINDIR)/rnews\" \
! 	-DSPOOLDIR=\"$(DESTDIR)$(SPOOLDIR)\" \
! 	-DBATCHDIR=\"$(DESTDIR)$(BATCHDIR)\" -DLIBDIR=\"$(DESTDIR)$(LIBDIR)\" \
! 	-DBINDIR=\"$(DESTDIR)$(BINDIR)\" -DNEWSUSR=\"$(NEWSUSR)\" \
  	-DNEWSGRP=\"$(NEWSGRP)\" ${SERVER} ${NFSCLIENT}
***************
*** 71,73 ****
  #USG LIBS =
! #USG LINTFLAGS = ${DEFS} ${NETINCLUDE}
  #V7 CFLAGS = ${DEBUG} -DDBM ${DEFS} ${SCCSID} ${VFORK} ${NETINCLUDE}
--- 74,76 ----
  #USG LIBS =
! #USG LINTFLAGS = -DUSG ${DEFS} ${NETINCLUDE}
  #V7 CFLAGS = ${DEBUG} -DDBM ${DEFS} ${SCCSID} ${VFORK} ${NETINCLUDE}
***************
*** 90,92 ****
  #VMS VFORK=
! #VMS FIXACTIVE = /etc/vmstounix $(LIBDIR)/active
  
--- 93,95 ----
  #VMS VFORK=
! #VMS FIXACTIVE = /etc/vmstounix $(DESTDIR)$(LIBDIR)/active
  
***************
*** 191,194 ****
  fullupdate: install.sh makeactive.sh
! 	sh install.sh $(SPOOLDIR) $(LIBDIR) $(BINDIR) $(NEWSUSR) $(NEWSGRP) $(OSTYPE)
! 	chmod 6755 $(LIBDIR)/inews
  
--- 194,197 ----
  fullupdate: install.sh makeactive.sh
! 	sh install.sh $(DESTDIR)$(SPOOLDIR) $(DESTDIR)$(LIBDIR) $(DESTDIR)$(BINDIR) $(DESTDIR)$(NEWSUSR) $(DESTDIR)$(NEWSGRP) $(DESTDIR)$(OSTYPE)
! 	chmod 6755 $(DESTDIR)$(LIBDIR)/inews
  
***************
*** 195,199 ****
  nfsupdate: install.sh
! 	sh install.sh $(SPOOLDIR) $(LIBDIR) $(BINDIR) $(NEWSUSR) $(NEWSGRP) $(OSTYPE) $(NFSSPOOLDIR) $(NFSLIBDIR)
! 	chown root $(LIBDIR)/inews
! 	chmod 6755 $(LIBDIR)/inews
  
--- 198,202 ----
  nfsupdate: install.sh
! 	sh install.sh $(DESTDIR)$(SPOOLDIR) $(DESTDIR)$(LIBDIR) $(DESTDIR)$(BINDIR) $(DESTDIR)$(NEWSUSR) $(DESTDIR)$(NEWSGRP) $(DESTDIR)$(OSTYPE) $(DESTDIR)$(NFSSPOOLDIR) $(DESTDIR)$(NFSLIBDIR)
! 	chown root $(DESTDIR)$(LIBDIR)/inews
! 	chmod 6755 $(DESTDIR)$(LIBDIR)/inews
  
***************
*** 205,215 ****
  lint:  ilint vlint rlint elint plint olint
! ilint: defs.h params.h iparams.h header.h $(ISRCS) pathinit.c
  	lint $(LINTFLAGS) $(ISRCS) -DINEW pathinit.c
! vlint: defs.h params.h rparams.h header.h $(VSRCS) pathinit.c
  	lint $(LINTFLAGS) $(VSRCS) -DREAD pathinit.c
! rlint: defs.h params.h rparams.h header.h $(RSRCS) pathinit.c
  	lint $(LINTFLAGS) $(RSRCS) -DREAD pathinit.c
! elint: defs.h params.h iparams.h header.h $(ESRCS) pathinit.c
  	lint $(LINTFLAGS) $(ESRCS) -DEXP pathinit.c
! plint: defs.h params.h iparams.h header.h $(PSRCS) pathinit.c
  	lint $(LINTFLAGS) $(PSRCS) -DREAD pathinit.c
--- 208,218 ----
  lint:  ilint vlint rlint elint plint olint
! ilint: defs.h params.h iparams.h header.h patchlevel.h $(ISRCS) pathinit.c
  	lint $(LINTFLAGS) $(ISRCS) -DINEW pathinit.c
! vlint: defs.h params.h rparams.h header.h patchlevel.h $(VSRCS) pathinit.c
  	lint $(LINTFLAGS) $(VSRCS) -DREAD pathinit.c
! rlint: defs.h params.h rparams.h header.h patchlevel.h $(RSRCS) pathinit.c
  	lint $(LINTFLAGS) $(RSRCS) -DREAD pathinit.c
! elint: defs.h params.h iparams.h header.h patchlevel.h $(ESRCS) pathinit.c
  	lint $(LINTFLAGS) $(ESRCS) -DEXP pathinit.c
! plint: defs.h params.h iparams.h header.h patchlevel.h $(PSRCS) pathinit.c
  	lint $(LINTFLAGS) $(PSRCS) -DREAD pathinit.c
***************
*** 226,228 ****
  readnews:  $(P) $(ROBJECTS)
! 	$(CC) $(LFLAGS) $(ROBJECTS) -o readnews $(LIBS) $(NETLIB)
  #VMS 	mv readnews.exe readnews
--- 229,231 ----
  readnews:  $(P) $(ROBJECTS)
! 	$(CC) $(LFLAGS) $(ROBJECTS) -o readnews $(NETLIB) $(LIBS)
  #VMS 	mv readnews.exe readnews
***************
*** 258,260 ****
  postnews: $(P) $(POBJECTS)
! 	$(CC) $(CFLAGS) $(LFLAGS) $(POBJECTS) -o postnews $(NETLIB)
  #VMS 	mv postnews.exe postnews
--- 261,263 ----
  postnews: $(P) $(POBJECTS)
! 	$(CC) $(CFLAGS) $(LFLAGS) $(POBJECTS) -o postnews $(NETLIB) $(LIBS)
  #VMS 	mv postnews.exe postnews
***************
*** 283,285 ****
  vnews:	$(P) $(VOBJECTS)
! 	$(CC) $(LFLAGS) $(VOBJECTS)  -o $@  $(TERMLIB) $(LIBS) $(NETLIB)
  #VMS 	mv vnews.exe vnews
--- 286,288 ----
  vnews:	$(P) $(VOBJECTS)
! 	$(CC) $(LFLAGS) $(VOBJECTS)  -o $@  $(TERMLIB) $(NETLIB) $(LIBS)
  #VMS 	mv vnews.exe vnews
***************
*** 302,304 ****
  uurec:  uurec.c defs.h Makefile
! 	$(CC) $(CFLAGS) $(LFLAGS) uurec.c -o uurec
  #VMS 	mv uurec.exe uurec
--- 305,307 ----
  uurec:  uurec.c defs.h Makefile
! 	$(CC) $(CFLAGS) $(LFLAGS) uurec.c -o uurec $(LIBS)
  #VMS 	mv uurec.exe uurec
***************
*** 306,308 ****
  recnews:  recnews.c defs.h header.h params.h Makefile
! 	$(CC) $(CFLAGS) $(LFLAGS) recnews.c -o recnews
  #VMS 	mv recnews.exe recnews
--- 309,311 ----
  recnews:  recnews.c defs.h header.h params.h Makefile
! 	$(CC) $(CFLAGS) $(LFLAGS) recnews.c -o recnews $(LIBS)
  #VMS 	mv recnews.exe recnews
***************
*** 310,312 ****
  sendnews:  sendnews.o defs.h
! 	$(CC) $(LFLAGS) sendnews.o -o sendnews
  #VMS 	mv sendnews.exe sendnews
--- 313,315 ----
  sendnews:  sendnews.o defs.h
! 	$(CC) $(LFLAGS) sendnews.o -o sendnews $(LIBS)
  #VMS 	mv sendnews.exe sendnews
***************
*** 314,316 ****
  batch:  batch.c Makefile defs.h
! 	$(CC) $(CFLAGS) $(LFLAGS) batch.c -o batch
  #VMS 	mv batch.exe batch
--- 317,319 ----
  batch:  batch.c Makefile defs.h
! 	$(CC) $(CFLAGS) $(LFLAGS) batch.c -o batch $(LIBS)
  #VMS 	mv batch.exe batch
***************
*** 318,320 ****
  encode:	encode.c
! 	$(CC) $(CFLAGS) $(LFLAGS) encode.c -o encode
  #VMS 	mv encode.exe encode
--- 321,323 ----
  encode:	encode.c
! 	$(CC) $(CFLAGS) $(LFLAGS) encode.c -o encode $(LIBS)
  #VMS 	mv encode.exe encode
***************
*** 322,324 ****
  decode:	decode.c
! 	$(CC) $(CFLAGS) $(LFLAGS) decode.c -o decode
  #VMS 	mv decode.exe decode
--- 325,327 ----
  decode:	decode.c
! 	$(CC) $(CFLAGS) $(LFLAGS) decode.c -o decode $(LIBS)
  #VMS 	mv decode.exe decode
***************
*** 326,328 ****
  caesar:  caesar.c Makefile
! 	$(CC) $(CFLAGS) $(LFLAGS) caesar.c -o caesar -lm
  #VMS 	mv caesar.exe caesar
--- 329,331 ----
  caesar:  caesar.c Makefile
! 	$(CC) $(CFLAGS) $(LFLAGS) caesar.c -o caesar -lm $(LIBS)
  #VMS 	mv caesar.exe caesar
***************
*** 330,332 ****
  compress: compress.c
! 	$(CC) $(CFLAGS) $(LFLAGS) -o compress compress.c
  #VMS 	mv compress.exe compress
--- 333,335 ----
  compress: compress.c
! 	$(CC) $(CFLAGS) $(LFLAGS) -o compress compress.c $(LIBS)
  #VMS 	mv compress.exe compress
***************
*** 334,336 ****
  recmail:  recmail.c defs.h params.h header.h
! 	$(CC) $(CFLAGS) $(LFLAGS) recmail.c -o recmail
  #VMS 	mv recmail.exe recmail
--- 337,339 ----
  recmail:  recmail.c defs.h params.h header.h
! 	$(CC) $(CFLAGS) $(LFLAGS) recmail.c -o recmail $(LIBS)
  #VMS 	mv recmail.exe recmail
***************
*** 341,343 ****
  checknews:  $(P) checknews.o process.o cpathinit.o rextern.o $(NNTP) $(CLIENTLIB) 
! 	$(CC) $(LFLAGS) checknews.o process.o cpathinit.o rextern.o $(NNTP) $(CLIENTLIB) -o checknews $(NETLIB)
  #VMS 	mv checknews.exe checknews
--- 344,346 ----
  checknews:  $(P) checknews.o process.o cpathinit.o rextern.o $(NNTP) $(CLIENTLIB) 
! 	$(CC) $(LFLAGS) checknews.o process.o cpathinit.o rextern.o $(NNTP) $(CLIENTLIB) -o checknews $(NETLIB) $(LIBS)
  #VMS 	mv checknews.exe checknews
***************
*** 345,347 ****
  sendbatch: sendbatch.sh Makefile
! 	sed -e "s%LIBDIR%$(LIBDIR)%g" \
  	 -e "s%UUXFLAGS%$(UUXFLAGS)%g" \
--- 348,350 ----
  sendbatch: sendbatch.sh Makefile
! 	sed -e "s%LIBDIR%$(DESTDIR)$(LIBDIR)%g" \
  	 -e "s%UUXFLAGS%$(UUXFLAGS)%g" \
***************
*** 348,350 ****
  	 -e "s%MAXPERBATCH%$(MAXPERBATCH)%g" \
! 	 -e "s%BATCHDIR%$(BATCHDIR)%g" sendbatch.sh > sendbatch
  #VMS 	/etc/unixtovms sendbatch
--- 351,355 ----
  	 -e "s%MAXPERBATCH%$(MAXPERBATCH)%g" \
! 	 -e "s%MINDISKFREE%$(MINDISKFREE)%g" \
! 	 -e "s%SPOOL_DISK%$(SPOOL_DISK)%g" \
! 	 -e "s%BATCHDIR%$(DESTDIR)$(BATCHDIR)%g" sendbatch.sh > sendbatch
  #VMS 	/etc/unixtovms sendbatch
***************
*** 352,356 ****
  rmgroup: rmgroup.sh Makefile
! 	sed -e "s%LIBDIR%$(LIBDIR)%g" \
  	 -e "s%FIXACTIVE%$(FIXACTIVE)%g" \
! 	 -e "s%SPOOLDIR%$(SPOOLDIR)%g" rmgroup.sh > rmgroup
  #VMS 	/etc/unixtovms rmgroup
--- 357,361 ----
  rmgroup: rmgroup.sh Makefile
! 	sed -e "s%LIBDIR%$(DESTDIR)$(LIBDIR)%g" \
  	 -e "s%FIXACTIVE%$(FIXACTIVE)%g" \
! 	 -e "s%SPOOLDIR%$(DESTDIR)$(SPOOLDIR)%g" rmgroup.sh > rmgroup
  #VMS 	/etc/unixtovms rmgroup
***************
*** 358,360 ****
  checkgroups: checkgroups.sh Makefile
! 	sed -e "s%LIBDIR%$(LIBDIR)%g" checkgroups.sh > checkgroups
  #VMS 	/etc/unixtovms checkgroups
--- 363,365 ----
  checkgroups: checkgroups.sh Makefile
! 	sed -e "s%LIBDIR%$(DESTDIR)$(LIBDIR)%g" checkgroups.sh > checkgroups
  #VMS 	/etc/unixtovms checkgroups
***************
*** 400,411 ****
  
! $(LIBDIR):
! 	mkdir $(LIBDIR)
! 	chmod 755 $(LIBDIR)
! 	chown $(NEWSUSR) $(LIBDIR)
! 	chgrp $(NEWSGRP) $(LIBDIR)
  
! $(BINDIR):
! 	mkdir $(BINDIR)
! 	chmod 755 $(BINDIR)
! 	chown $(NEWSUSR) $(BINDIR)
! 	chgrp $(NEWSGRP) $(BINDIR)
--- 405,416 ----
  
! $(DESTDIR)$(LIBDIR):
! 	mkdir $(DESTDIR)$(LIBDIR)
! 	chmod 755 $(DESTDIR)$(LIBDIR)
! 	chown $(NEWSUSR) $(DESTDIR)$(LIBDIR)
! 	chgrp $(NEWSGRP) $(DESTDIR)$(LIBDIR)
  
! $(DESTDIR)$(BINDIR):
! 	mkdir $(DESTDIR)$(BINDIR)
! 	chmod 755 $(DESTDIR)$(BINDIR)
! 	chown $(NEWSUSR) $(DESTDIR)$(BINDIR)
! 	chgrp $(NEWSGRP) $(DESTDIR)$(BINDIR)

Index: batch.c
Prereq: 1.19
*** .d/batch.c	Thu Oct  8 00:19:06 1987
--- batch.c	Mon Nov 30 18:47:06 1987
***************
*** 34,36 ****
  #ifdef SCCSID
! static char	*SccsId = "@(#)batch.c	1.19	10/7/87";
  #endif /* SCCSID */
--- 34,36 ----
  #ifdef SCCSID
! static char	*SccsId = "@(#)batch.c	1.20	11/30/87";
  #endif /* SCCSID */
***************
*** 113,116 ****
  			*cp = '\n';
! 		if (sbuf.st_size == 0)
  			continue;
  		nbytes += sbuf.st_size;
--- 113,118 ----
  			*cp = '\n';
! 		if (sbuf.st_size == 0) {
! 			(void) fclose(nfd);
  			continue;
+ 		}
  		nbytes += sbuf.st_size;
***************
*** 213,215 ****
  
! #if !defined(BSD4_2)
  rename(from, to)
--- 215,217 ----
  
! #ifndef RENAMESUB
  rename(from, to)
***************
*** 224,225 ****
  }
! #endif /* !BSD4_2 */
--- 226,227 ----
  }
! #endif /* !RENAMESUB */

Index: checknews.c
Prereq: 2.30
*** .d/checknews.c	Sun Oct 18 18:02:57 1987
--- checknews.c	Mon Nov 30 18:47:07 1987
***************
*** 18,20 ****
  #ifdef SCCSID
! static char	*SccsId = "@(#)checknews.c	2.30	10/15/87";
  #endif /* SCCSID */
--- 18,20 ----
  #ifdef SCCSID
! static char	*SccsId = "@(#)checknews.c	2.31	11/30/87";
  #endif /* SCCSID */
***************
*** 266,275 ****
  			continue;
- 		if (index(rcbuf, ',') != NULL) {
- 			if (verbose > 1)
- 				printf("Comma in %s newsrc line\n", bfr);
- 			else {
- 				isnews++;
- 				continue;
- 			}
- 		}
  		while (*ptr)
--- 266,267 ----
***************
*** 296,298 ****
  		}
! contin:;
  	}
--- 288,297 ----
  		}
! 		if (index(rcbuf, ',') != NULL) {
! 			if (verbose > 1)
! 				printf("Comma in %s newsrc line\n", bfr);
! 			else {
! 				isnews++;
! 				continue;
! 			}
! 		}
  	}

Index: defs.dist
Prereq: 2.60
*** .d/defs.dist	Mon Nov 23 19:13:15 1987
--- defs.dist	Mon Nov 30 18:46:35 1987
***************
*** 16,18 ****
  
! /*	@(#)defs.dist	2.60	11/19/87	*/
  
--- 16,18 ----
  
! /*	@(#)defs.dist	2.61	11/30/87	*/
  
***************
*** 70,71 ****
--- 70,72 ----
  /* #define LOCKF		/* If you have the lockf() sys call */
+ /* #define LOCKING		/* If you have the locking() sys call */
  /* #define DOGETUSER		/* Always do 'getuser' so can't fake name */
***************
*** 74,75 ****
--- 75,77 ----
  /* #define READDIR		/* your system has readdir() in libc */
+ /* #define RENAMESUB		/* your system has rename() in libc */
  /* #define ALWAYSALIAS		/* temporary kludge for conversion */

Index: expire.c
Prereq: 2.56
*** .d/expire.c	Wed Nov  4 14:56:58 1987
--- expire.c	Mon Nov 30 18:47:10 1987
***************
*** 19,21 ****
  #ifdef SCCSID
! static char	*SccsId = "@(#)expire.c	2.56	11/4/87";
  #endif /* SCCSID */
--- 19,21 ----
  #ifdef SCCSID
! static char	*SccsId = "@(#)expire.c	2.57	11/30/87";
  #endif /* SCCSID */
***************
*** 97,99 ****
  struct hbuf h;
! int	rmlock();
  time_t	today;
--- 97,99 ----
  struct hbuf h;
! int	xxit();
  time_t	today;
***************
*** 114,116 ****
  
! 	uid = pw->pw_uid;
  	if ((gp = getgrnam(NEWSGRP)) == NULL)
--- 114,116 ----
  
! 	duid = uid = pw->pw_uid;
  	if ((gp = getgrnam(NEWSGRP)) == NULL)
***************
*** 117,119 ****
  		xerror("Cannot get NEWSGRP gr entry");
! 	gid = gp->gr_gid;
  	(void) setgid(gid);
--- 117,119 ----
  		xerror("Cannot get NEWSGRP gr entry");
! 	dgid = gid = gp->gr_gid;
  	(void) setgid(gid);
***************
*** 122,126 ****
  	if (signal(SIGHUP, SIG_IGN) != SIG_IGN)
! 		signal(SIGHUP, rmlock);
  	if (signal(SIGINT, SIG_IGN) != SIG_IGN)
! 		signal(SIGINT, rmlock);
  	expincr = DFLTEXP;
--- 122,128 ----
  	if (signal(SIGHUP, SIG_IGN) != SIG_IGN)
! 		signal(SIGHUP, xxit);
  	if (signal(SIGINT, SIG_IGN) != SIG_IGN)
! 		signal(SIGINT, xxit);
! 	if (signal(SIGTERM, SIG_IGN) != SIG_IGN)
! 		signal(SIGTERM, xxit);
  	expincr = DFLTEXP;
***************
*** 1205,1206 ****
--- 1207,1220 ----
  {
+ 	if (i) {
+ #ifdef DBM
+ 		char tempname[BUFLEN];
+ 		(void) UNLINK(NARTFILE);
+ 		(void) sprintf(tempname,"%s.pag", NARTFILE);
+ 		(void) UNLINK(tempname);
+ 		(void) sprintf(tempname,"%s.dir", NARTFILE);
+ 		(void) UNLINK(tempname);
+ #else	/* !DBM */
+ 		(void) UNLINK(ARTFILE);
+ #endif	/* !DBM */
+ 	}
  	rmlock();

Index: funcs.c
Prereq: 2.37
*** .d/funcs.c	Mon Nov 23 19:13:17 1987
--- funcs.c	Mon Nov 30 18:46:37 1987
***************
*** 18,20 ****
  #ifdef SCCSID
! static char	*SccsId = "@(#)funcs.c	2.37	11/19/87";
  #endif /* SCCSID */
--- 18,20 ----
  #ifdef SCCSID
! static char	*SccsId = "@(#)funcs.c	2.38	11/30/87";
  #endif /* SCCSID */
***************
*** 25,27 ****
  #include <errno.h>
! #if defined(USG) || defined(BSD4_2) || defined(BSD4_1C)
  #include <fcntl.h>
--- 25,27 ----
  #include <errno.h>
! #if defined(USG) || defined(BSD4_2)
  #include <fcntl.h>
***************
*** 432,434 ****
  		if (access(logfname, 0) == 0 && (logfile = fopen(logfname, "a")) != NULL) {
! #if defined(USG) || defined(BSD4_2) || defined(BSD4_1C)
  			int flags;
--- 432,434 ----
  		if (access(logfname, 0) == 0 && (logfile = fopen(logfname, "a")) != NULL) {
! #if defined(USG) || defined(BSD4_2)
  			int flags;
***************
*** 522,524 ****
  
! #if !defined(BSD4_2) && !defined(BSD4_1C)
  /*
--- 522,524 ----
  
! #ifdef MKDIRSUB
  /*
***************
*** 581,583 ****
  }
! #endif /* !BSD4_2 && ! BSD4_1C */
  #ifndef USG
--- 581,597 ----
  }
! #endif /* !BSD4_2 */
! 
! #ifndef	RENAMESUB
! rename(from,to)
! register char *from, *to;
! {
! 	(void) unlink(to);
! 	if (link(from, to) < 0)
! 		return -1;
! 
! 	(void) unlink(from);
! 	return 0;
! }
! #endif /* !RENAMESUB */
! 
  #ifndef USG

Index: funcs2.c
Prereq: 1.23
*** .d/funcs2.c	Wed Nov  4 14:57:12 1987
--- funcs2.c	Mon Nov 30 18:47:13 1987
***************
*** 19,21 ****
  #ifdef SCCSID
! static char	*SccsId = "@(#)funcs2.c	1.23	11/4/87";
  #endif /* SCCSID */
--- 19,21 ----
  #ifdef SCCSID
! static char	*SccsId = "@(#)funcs2.c	1.24	11/30/87";
  #endif /* SCCSID */
***************
*** 681,695 ****
  #endif
- 
- #if !defined(BSD4_2)
- rename(from,to)
- register char *from, *to;
- {
- 	(void) unlink(to);
- 	if (link(from, to) < 0)
- 		return -1;
- 
- 	(void) unlink(from);
- 	return 0;
- }
- #endif /* !BSD4_2 */
  
--- 681,682 ----

Index: getdate.y
Prereq: 2.16
*** .d/getdate.y	Wed Oct  7 16:51:38 1987
--- getdate.y	Mon Nov 30 18:47:14 1987
***************
*** 5,7 ****
  	/*	University of North Carolina at Chapel Hill	*/
! 	/*	@(#)getdate.y	2.16	9/24/87	*/
  
--- 5,7 ----
  	/*	University of North Carolina at Chapel Hill	*/
! 	/*	@(#)getdate.y	2.17	11/30/87			*/
  
***************
*** 559,561 ****
  
! 	return sdate;
  }
--- 559,565 ----
  
! 	/*
! 	** Have to do *something* with a legitimate -1 so it's distinguishable
! 	** from the error return value.  (Alternately could set errno on error.)
! 	*/
! 	return (sdate == -1) ? 0 : sdate;
  }

Index: ifuncs.c
Prereq: 2.67
*** .d/ifuncs.c	Mon Nov 23 19:13:21 1987
--- ifuncs.c	Tue Dec  1 16:29:57 1987
***************
*** 18,20 ****
  #ifdef SCCSID
! static char	*SccsId = "@(#)ifuncs.c	2.67	11/19/87";
  #endif /* SCCSID */
--- 18,20 ----
  #ifdef SCCSID
! static char	*SccsId = "@(#)ifuncs.c	2.69	12/1/87";
  #endif /* SCCSID */
***************
*** 407,409 ****
  	} else {
! 		ofp = xfopen(mktemp(TRANS), "w");
  		if (afmt) {
--- 407,410 ----
  	} else {
! 		MKTEMP(TRANS);
! 		ofp = xfopen(TRANS, "w");
  		if (afmt) {
***************
*** 726,728 ****
  	(void) strcpy(tempname, "/tmp/LTMP.XXXXXX");
! 	(void) mktemp(tempname);
  	(void) strcpy(lockname, "/tmp/L");
--- 727,729 ----
  	(void) strcpy(tempname, "/tmp/LTMP.XXXXXX");
! 	MKTEMP(tempname);
  	(void) strcpy(lockname, "/tmp/L");
***************
*** 1112,1114 ****
  			free(ngs[i]);
! 		if (ngsbug[i] < tbuf || ngsbug[i] > &tbuf[sizeof tbuf - 1])
  			free(ngsbug[i]);
--- 1113,1116 ----
  			free(ngs[i]);
! 		if (ngsbug[i] != NULL &&
! 		    (ngsbug[i] < tbuf || ngsbug[i] > &tbuf[sizeof tbuf - 1]))
  			free(ngsbug[i]);
***************
*** 1140,1145 ****
  	mfd = fopen(mfn, "r");
! 	if (mfd != NULL) 
! 	   while ((!ret) && fscanf(mfd, "%[^:]:%s\n", mgrp, mlist) != EOF) {
! 		if (feof(mfd)) break;
! 		if (mgrp[0] == '#') continue;
  		if (!STRCMP(ngname, mgrp)) {
--- 1142,1150 ----
  	mfd = fopen(mfn, "r");
! 	if (mfd == NULL)
! 		return FALSE;
! 	while ((!ret) && fscanf(mfd, "%[^:]:%s\n", mgrp, mlist) != EOF) {
! 		if (feof(mfd))
! 			break;
! 		if (mgrp[0] == '#')
! 			continue;
  		if (!STRCMP(ngname, mgrp)) {
***************
*** 1147,1161 ****
  			      && (ret == FALSE)) {
! 				if (*p == ',') {
  					*p = '\0';
- 					p++;
- 				}
- 				if (*p == '\\') {
- 					*p = '\0';
- 					p++;
- 					if (!grplist)
- 						grplist = getgrplist(user);
- 					if (ngmatch(p,grplist)) ret = TRUE;
- 				} else if (!STRCMP(p, user))
- 					ret = TRUE;
- 				*p = '\0';
  			}
--- 1152,1164 ----
  			      && (ret == FALSE)) {
! 					if (*p == ',')
! 						*p++ = '\0';
! 					if (*p == '\\') {
! 						*p++ = '\0';
! 						if (!grplist)
! 							grplist = getgrplist(user);
! 						if (ngmatch(p,grplist))
! 							ret = TRUE;
! 					} else if (!STRCMP(p, user))
! 						ret = TRUE;
  					*p = '\0';
  			}
***************
*** 1303,1306 ****
  							break;	/* fits in buffer */
! 						if (!tfilename)
! 							tfilename = mktemp("/tmp/unbnewsXXXXXX");
  						if ((fd = creat(tfilename, 0666)) < 0) {
--- 1306,1311 ----
  							break;	/* fits in buffer */
! 						if (!tfilename) {
! 							tfilename = "/tmp/unbnewsXXXXXX";
! 							MKTEMP(tfilename);
! 						}
  						if ((fd = creat(tfilename, 0666)) < 0) {
***************
*** 1385,1387 ****
  				while ((wpid = wait(&exstat)) >= 0 && wpid != pid);
! 				(void) unlink(tfilename);
  			} while (fgets(cmd, BUFLEN, infp) != NULL);
--- 1390,1393 ----
  				while ((wpid = wait(&exstat)) >= 0 && wpid != pid);
! 				if (tfilename)
! 					(void) unlink(tfilename);
  			} while (fgets(cmd, BUFLEN, infp) != NULL);

Index: inews.c
Prereq: 2.84
*** .d/inews.c	Mon Nov 23 19:13:24 1987
--- inews.c	Mon Nov 30 18:46:43 1987
***************
*** 19,21 ****
  #ifdef SCCSID
! static char	*SccsId = "@(#)inews.c	2.84	11/19/87";
  #endif /* SCCSID */
--- 19,21 ----
  #ifdef SCCSID
! static char	*SccsId = "@(#)inews.c	2.85	11/30/87";
  #endif /* SCCSID */
***************
*** 100,102 ****
  FILE *mailhdr();
! extern int errno;
  
--- 100,102 ----
  FILE *mailhdr();
! extern int errno, xxit();
  
***************
*** 187,188 ****
--- 187,189 ----
  	}
+ 	(void) signal(SIGTERM, xxit);
  	if (argc > 1 && !STRCMP(*(argv+1), "-U")) {
***************
*** 676,678 ****
  	(void) sprintf(sfile, "%s/.spXXXXXX", SPOOL);
! 	sp = xfopen(mktemp(sfile), "w");
  	if (batchcmd != NULL) {
--- 677,680 ----
  	(void) sprintf(sfile, "%s/.spXXXXXX", SPOOL);
! 	MKTEMP(sfile);
! 	sp = xfopen(sfile, "w");
  	if (batchcmd != NULL) {
***************
*** 933,935 ****
  	/* Write article to temp file. */
! 	tfp = xfopen(mktemp(ARTICLE), "w");
  
--- 935,938 ----
  	/* Write article to temp file. */
! 	MKTEMP(ARTICLE);
! 	tfp = xfopen(ARTICLE, "w");
  
***************
*** 1157,1159 ****
  
! 	tmpfp = xfopen(mktemp(INFILE), "w");
  	for ( ; ; ) {
--- 1160,1163 ----
  
! 	MKTEMP(INFILE);
! 	tmpfp = xfopen(INFILE, "w");
  	for ( ; ; ) {

Index: nntp.c
Prereq: 2.3
*** .d/nntp.c	Wed Nov  4 14:57:39 1987
--- nntp.c	Mon Nov 30 18:47:16 1987
***************
*** 16,18 ****
  #ifdef SCCSID
! static char	*SccsId = "@(#)nntp.c	2.3	11/4/87";
  #endif	/* SCCSID */
--- 16,18 ----
  #ifdef SCCSID
! static char	*SccsId = "@(#)nntp.c	2.4	11/30/87";
  #endif	/* SCCSID */
***************
*** 79,81 ****
  	strcpy(active_file_name, "/tmp/nsact.XXXXXX");
! 	(void) mktemp(active_file_name);	/* make a temporary name */
  	openfp = fopen(active_file_name, "w+");	/* and get ready */
--- 79,81 ----
  	strcpy(active_file_name, "/tmp/nsact.XXXXXX");
! 	MKTEMP(active_file_name);	/* make a temporary name */
  	openfp = fopen(active_file_name, "w+");	/* and get ready */
***************
*** 236,237 ****
--- 236,238 ----
   */
+ void
  sync_server()

Index: params.h
Prereq: 2.27
*** .d/params.h	Mon Nov 23 19:13:28 1987
--- params.h	Mon Nov 30 18:46:45 1987
***************
*** 4,6 ****
  
! /*	@(#)params.h	2.27	11/19/87	*/
  
--- 4,6 ----
  
! /*	@(#)params.h	2.28	11/30/87	*/
  
***************
*** 16,18 ****
  
! #if defined(BSD4_2) || defined(BSD4_1C)
  #include <sys/time.h>
--- 16,18 ----
  
! #ifdef BSD4_2
  #include <sys/time.h>
***************
*** 87,89 ****
  extern	struct	passwd *getpwnam(), *getpwuid(), *getpwent();
! extern	struct	group *getgrnam();
  extern	time_t	time(), getdate(), cgtdate();
--- 87,90 ----
  extern	struct	passwd *getpwnam(), *getpwuid(), *getpwent();
! extern	struct	group *getgrnam(), *getgrent();
! extern	void	setgrent();
  extern	time_t	time(), getdate(), cgtdate();
***************
*** 127,128 ****
--- 128,136 ----
  #ifdef M_XENIX
+ #define LOCKING
+ #endif M_XENIX
+ 
+ #ifdef LOCKING
+ # ifndef LOCKF
+ # define LOCKF
+ # endif  /* LOCKF */
  /* fake SVID adivsory locking with xenix routines */
***************
*** 132,134 ****
  #define F_TLOCK	4
! #endif /* M_XENIX */
  
--- 140,142 ----
  #define F_TLOCK	4
! #endif /* LOCKING */
  
***************
*** 135,137 ****
  #ifdef IHCC
! #define DOGETUSERS
  #define LOGDIR
--- 143,145 ----
  #ifdef IHCC
! #define DOGETUSER
  #define LOGDIR
***************
*** 140,143 ****
  #ifdef BSD4_2
! #define MKDIR_SUB
  #define READDIR
  #endif /* BSD4_2 */
--- 148,152 ----
  #ifdef BSD4_2
! #define MKDIRSUB
  #define READDIR
+ #define RENAMESUB
  #endif /* BSD4_2 */
***************
*** 161,162 ****
--- 170,172 ----
  #define PREFIX(a,b)  ((charmap[*(a)] != charmap[*(b)]) ? FALSE : prefix((a)+1, (b)+1))
+ #define MKTEMP(a)	{if (mktemp(a) == 0) xerror("mktemp(%s): ", a);}
  

Index: postnews.c
Prereq: 1.35
*** .d/postnews.c	Mon Nov 23 19:13:31 1987
--- postnews.c	Mon Nov 30 18:46:47 1987
***************
*** 19,21 ****
  #ifdef SCCSID
! static char	*SccsId = "@(#)postnews.c	1.35	11/19/87";
  #endif /* SCCSID */
--- 19,21 ----
  #ifdef SCCSID
! static char	*SccsId = "@(#)postnews.c	1.36	11/30/87";
  #endif /* SCCSID */
***************
*** 449,451 ****
  	(void) strcpy(tempfname, "/tmp/postXXXXXX");
! 	(void) mktemp(tempfname);
  
--- 449,451 ----
  	(void) strcpy(tempfname, "/tmp/postXXXXXX");
! 	MKTEMP(tempfname);
  
***************
*** 887,889 ****
  
! 	mktemp(temp2fname);
  
--- 887,889 ----
  
! 	MKTEMP(temp2fname);
  
***************
*** 1115,1118 ****
  
! 	(void) mktemp(headerfile);
! 	(void) mktemp(codedfile);
  
--- 1115,1118 ----
  
! 	MKTEMP(headerfile);
! 	MKTEMP(codedfile);
  
***************
*** 1201,1214 ****
  }
- 
- #if !defined(BSD4_2)
- rename(from,to)
- register char *from, *to;
- {
- 	(void) unlink(to);
- 	if (link(from, to) < 0)
- 		return -1;
- 
- 	(void) unlink(from);
- 	return 0;
- }
- #endif /* !BSD4_2 && ! BSD4_1C */
--- 1201 ----

Index: process.c
Prereq: 2.18
*** .d/process.c	Mon Nov 23 19:13:32 1987
--- process.c	Mon Nov 30 18:46:48 1987
***************
*** 18,20 ****
  #ifdef SCCSID
! static char	*SccsId = "@(#)process.c	2.18	11/19/87";
  #endif /* SCCSID */
--- 18,20 ----
  #ifdef SCCSID
! static char	*SccsId = "@(#)process.c	2.19	11/30/87";
  #endif /* SCCSID */
***************
*** 40,42 ****
  'h',	'\0',	FALSE,	OPTION,	ANY,		UNKNOWN,(char *)NULL,
- 'A',	'\0',	FALSE,	OPTION, UNKNOWN,	UNKNOWN,(char *)NULL,
  #ifdef TMAIL
--- 40,41 ----
***************
*** 50,51 ****
--- 49,51 ----
  'K',	'\0',	FALSE,	OPTION,	ANY,		UNKNOWN,(char *)NULL,
+ 'A',	'\0',	FALSE,	OPTION, UNKNOWN,	UNKNOWN,(char *)NULL,
  '\0',	'\0',	0,	0,	0,		0,	(char *)NULL

Index: readr.c
Prereq: 2.65
*** .d/readr.c	Wed Nov  4 14:58:08 1987
--- readr.c	Mon Nov 30 18:47:21 1987
***************
*** 18,20 ****
  #ifdef SCCSID
! static char	*SccsId = "@(#)readr.c	2.65	11/4/87";
  #endif /* SCCSID */
--- 18,20 ----
  #ifdef SCCSID
! static char	*SccsId = "@(#)readr.c	2.66	11/30/87";
  #endif /* SCCSID */
***************
*** 118,120 ****
  		(void) umask(022);
! 		(void) mktemp(outfile);	/* get "unique" file name */
  		(void) close(creat(outfile,0666));
--- 118,120 ----
  		(void) umask(022);
! 		MKTEMP(outfile);	/* get "unique" file name */
  		(void) close(creat(outfile,0666));
***************
*** 776,778 ****
  		(void) strcpy(tf, tft);
! 		(void) mktemp(tf);
  
--- 776,778 ----
  		(void) strcpy(tf, tft);
! 		MKTEMP(tf);
  

Index: recnews.c
Prereq: 2.16
*** .d/recnews.c	Mon Nov 23 19:13:33 1987
--- recnews.c	Fri Dec  4 02:47:46 1987
***************
*** 50,52 ****
  #ifdef SCCSID
! static char	*SccsId = "@(#)recnews.c	2.16	11/19/87";
  #endif /* SCCSID */
--- 50,52 ----
  #ifdef SCCSID
! static char	*SccsId = "@(#)recnews.c	2.18	12/4/87";
  #endif /* SCCSID */
***************
*** 96,98 ****
  int	fromset;		/* from passed on command line */
! char	cmdbuf[BFSZ];		/* command to popen */
  
--- 96,98 ----
  int	fromset;		/* from passed on command line */
! char	cmdbuf[BFSZ];		/* command to pipeopen */
  
***************
*** 99,101 ****
  extern	char	*strcat(), *strcpy(), *index();
! extern	FILE	*popen();
  char	*any();
--- 99,101 ----
  extern	char	*strcat(), *strcpy(), *index();
! FILE	*pipeopen();
  char	*any();
***************
*** 183,186 ****
  		case INCLUSIVE:
! 			sprintf(cmdbuf,"exec %s%s -p", inews, not_this_site);
! 			pipe = popen(cmdbuf,"w");
  			if (pipe == NULL){
--- 183,186 ----
  		case INCLUSIVE:
! 			sprintf(cmdbuf,"%s%s -p", inews, not_this_site);
! 			pipe = pipeopen(cmdbuf);
  			if (pipe == NULL){
***************
*** 203,205 ****
  			sprintf(cmdbuf,
! 				"exec %s -t \"%s\" -n \"%s\" -f \"%s\"%s%s",
  				inews, *subject ? subject : "(none)",
--- 203,205 ----
  			sprintf(cmdbuf,
! 				"%s -t \"%s\" -n \"%s\" -f \"%s\"%s%s",
  				inews, *subject ? subject : "(none)",
***************
*** 210,214 ****
  #else
! 			pipe = popen(cmdbuf, "w");
  			if (pipe == NULL) {
! 				perror("recnews: popen failed");
  				exit(1);
--- 210,214 ----
  #else
! 			pipe = pipeopen(cmdbuf);
  			if (pipe == NULL) {
! 				perror("recnews: pipeopen failed");
  				exit(1);
***************
*** 231,233 ****
  			sprintf(cmdbuf,
! 				"exec \"%s\" -t \"%s\" -n \"%s\" -f \"%s\"%s%s",
  				inews, subject, newsgroup, from, approved,
--- 231,233 ----
  			sprintf(cmdbuf,
! 				"%s -t \"%s\" -n \"%s\" -f \"%s\"%s%s",
  				inews, subject, newsgroup, from, approved,
***************
*** 238,240 ****
  #else
! 			pipe = popen(cmdbuf, "w");
  			if (pipe == NULL) {
--- 238,240 ----
  #else
! 			pipe = pipeopen(cmdbuf);
  			if (pipe == NULL) {
***************
*** 251,252 ****
--- 251,253 ----
  	}
+ 	pipeclose(pipe);
  	exit(0);
***************
*** 340,341 ****
--- 341,436 ----
  	return(NULL);
+ }
+ 
+ /*
+  *	This is similar to open, but made more secure.  Rather than
+  *	forking off a shell, you get a bare process.
+  *	You can use "" to get white space into an argument, but 
+  *	nothing else is recognized
+  */
+ 
+ #define	RDR	0
+ #define	WTR	1
+ #define MAXARGS	20
+ static	int	mopen_pid[20];
+ 
+ FILE *
+ pipeopen(cmd)
+ register char *cmd;
+ {
+ 	int p[2];
+ 	register myside, hisside, pid;
+ 
+ 	if(pipe(p) < 0)
+ 		return NULL;
+ 	myside = p[WTR];
+ 	hisside = p[RDR];
+ 	if ((pid = vfork()) == 0) {
+ 		char *args[MAXARGS];
+ 		register char **ap = args;
+ 
+ 		/* myside and hisside reverse roles in child */
+ 		(void) close(myside);
+ 		(void) close(0);
+ 		(void) dup(hisside);
+ 		(void) close(hisside);
+ 		(void) setgid(getgid());
+ 		(void) setuid(getuid());
+ 
+ 		while (isspace(*cmd))
+ 			cmd++;
+ 
+ 		while (*cmd != '\0') {
+ 			*ap++ = cmd;
+ 			if (ap >= &args[MAXARGS]) {
+ 				fprintf(stderr, "Too many args to %s", args[0]);
+ 				_exit(2);
+ 			}
+ 			while (*cmd && !isspace(*cmd)) {
+ 				if (*cmd++ == '"') {
+ 					register char *bcp = cmd-1;
+ 					while (*cmd && *cmd != '"')
+ 						*bcp++ = *cmd++;
+ 					*bcp = '\0';
+ 					cmd++;
+ 				}
+ 			}
+ 			if (*cmd)
+ 				*cmd++ = '\0';
+ 			while (isspace(*cmd))
+ 				cmd++;
+ 		}
+ 		*ap = (char *)NULL;
+ 
+ 		execv(args[0], args);
+ 		perror("pipeopen exec:");
+ 		_exit(1);
+ 	}
+ 
+ 	if(pid == -1)
+ 		return NULL;
+ 
+ 	mopen_pid[myside] = pid;
+ 	(void) close(hisside);
+ 	return fdopen(myside, "w");
+ }
+ 
+ pipeclose(ptr)
+ FILE *ptr;
+ {
+ 	register f, r, (*hstat)(), (*istat)(), (*qstat)();
+ 	int status;
+ 
+ 	f = fileno(ptr);
+ 	(void) fclose(ptr);
+ 	istat = signal(SIGINT, SIG_IGN);
+ 	qstat = signal(SIGQUIT, SIG_IGN);
+ 	hstat = signal(SIGHUP, SIG_IGN);
+ 	while((r = wait(&status)) != mopen_pid[f] && r != -1)
+ 		;
+ 	if(r == -1)
+ 		status = -1;
+ 	signal(SIGINT, istat);
+ 	signal(SIGQUIT, qstat);
+ 	signal(SIGHUP, hstat);
+ 	return status;
  }

Index: rfuncs.c
Prereq: 2.43
*** .d/rfuncs.c	Wed Nov  4 14:58:24 1987
--- rfuncs.c	Mon Nov 30 18:47:24 1987
***************
*** 18,20 ****
  #ifdef SCCSID
! static char	*SccsId = "@(#)rfuncs.c	2.43	11/4/87";
  #endif /* SCCSID */
--- 18,20 ----
  #ifdef SCCSID
! static char	*SccsId = "@(#)rfuncs.c	2.44	11/30/87";
  #endif /* SCCSID */
***************
*** 253,255 ****
  
! 	ofp = xfopen(mktemp(outfile), "w");
  	if (aflag && *datebuf)
--- 253,256 ----
  
! 	MKTEMP(outfile);
! 	ofp = xfopen(outfile, "w");
  	if (aflag && *datebuf)
***************
*** 332,334 ****
  	(void) signal(SIGTERM, catchterm);
! 	(void) sprintf(bfr, "%s -f %s -T %s", TMAIL, outfile, mktemp(infile));
  	fwait(fsubr(ushell, bfr, (char *)NULL));
--- 333,336 ----
  	(void) signal(SIGTERM, catchterm);
! 	MKTEMP(infile);
! 	(void) sprintf(bfr, "%s -f %s -T %s", TMAIL, outfile, infile);
  	fwait(fsubr(ushell, bfr, (char *)NULL));
***************
*** 632,634 ****
  	/* make a new sorted copy of ACTIVE */
! 	nfp = fopen(mktemp(newactivename), "w");
  	(void) chmod(newactivename, 0600);
--- 634,637 ----
  	/* make a new sorted copy of ACTIVE */
! 	MKTEMP(newactivename);
! 	nfp = fopen(newactivename, "w");
  	(void) chmod(newactivename, 0600);

Index: rfuncs2.c
Prereq: 1.35
*** .d/rfuncs2.c	Tue Mar 24 13:51:56 1987
--- rfuncs2.c	Mon Nov 30 18:47:25 1987
***************
*** 18,20 ****
  #ifdef SCCSID
! static char	*SccsId = "@(#)rfuncs2.c	1.35	3/21/87";
  #endif /* SCCSID */
--- 18,20 ----
  #ifdef SCCSID
! static char	*SccsId = "@(#)rfuncs2.c	1.36	11/30/87";
  #endif /* SCCSID */
***************
*** 365,367 ****
  	strcpy(TRANS, "/tmp/trXXXXXX");
! 	ofp = xfopen(mktemp(TRANS), "w");
  	if (index(sp->s_flags, 'A') == NULL)
--- 365,368 ----
  	strcpy(TRANS, "/tmp/trXXXXXX");
! 	MKTEMP(TRANS);
! 	ofp = xfopen(TRANS, "w");
  	if (index(sp->s_flags, 'A') == NULL)

Index: sendbatch.sh
Prereq: 1.14
*** .d/sendbatch.sh	Wed Nov  4 14:58:27 1987
--- sendbatch.sh	Tue Dec  1 18:51:34 1987
***************
*** 1,2 ****
! : '@(#)sendbatch.sh	1.14	11/4/87'
  
--- 1,2 ----
! : '@(#)sendbatch.sh	1.16	12/1/87'
  
***************
*** 4,6 ****
--- 4,8 ----
  LIM=50000
+ MINDF=MINDISKFREE
  MAXBATCH=MAXPERBATCH
+ SPOOLDISK=SPOOL_DISK
  CMD='LIBDIR/batch BATCHDIR/$rmt $BLIM'
***************
*** 38,40 ****
  
! 	if [ -s /tmp/uuq.output ] ; then
  		q=`echo "$rmt" | sed 's/\(.......\).*/\1/'`
--- 40,51 ----
  
! 	df=`df $SPOOLDISK | awk "\\$6 == \\"$SPOOLDISK\" {print \\$4}
! 		\\$1 == \\"$SPOOLDISK\\" {print \\$3}"`
! 	if test ! -z "$df" -a \( "$df" -lt $MINDF \)
! 	then
! 		echo not enough space on $SPOOLDISK: $df
! 		continue
! 	fi
! 
! 	if test -s /tmp/uuq.output
! 	then
  		q=`echo "$rmt" | sed 's/\(.......\).*/\1/'`
***************
*** 41,43 ****
  		q=`awk "\\$1 == \\"$q:\\" { print \\$4;exit}" </tmp/uuq.output`
! 		if [ ! -z "$q" -a \( "$q" -gt $MAXBATCH \) ] ;
  		then 
--- 52,54 ----
  		q=`awk "\\$1 == \\"$q:\\" { print \\$4;exit}" </tmp/uuq.output`
! 		if test ! -z "$q" -a \( "$q" -gt $MAXBATCH \)
  		then 

Index: visual.c
Prereq: 1.39
*** .d/visual.c	Wed Nov  4 14:58:50 1987
--- visual.c	Mon Nov 30 18:47:31 1987
***************
*** 6,8 ****
  #ifdef SCCSID
! static char	*SccsId = "@(#)visual.c	1.39	11/4/87";
  #endif /* SCCSID */
--- 6,8 ----
  #ifdef SCCSID
! static char	*SccsId = "@(#)visual.c	1.40	11/30/87";
  #endif /* SCCSID */
***************
*** 191,193 ****
  		xxit(1);
! 	(void) mktemp(tfname);
  	(void) close(creat(tfname,0666));
--- 191,193 ----
  		xxit(1);
! 	MKTEMP(tfname);
  	(void) close(creat(tfname,0666));
***************
*** 1005,1007 ****
  	(void) strcpy(tf, tft);
! 	(void) mktemp(tf);
  	(void) close(creat(tf,0600));
--- 1005,1007 ----
  	(void) strcpy(tf, tft);
! 	MKTEMP(tf);
  	(void) close(creat(tf,0600));
***************
*** 2608,2610 ****
  		(void) strcpy(temp, "/tmp/vnXXXXXX");
! 		(void) mktemp(temp);
  		fname = temp;
--- 2608,2610 ----
  		(void) strcpy(temp, "/tmp/vnXXXXXX");
! 		MKTEMP(temp);
  		fname = temp;

Index: patchlevel.h
Prereq: 13
*** .d/patchlevel.h	Mon Nov 23 19:13:35 1987
--- patchlevel.h	Mon Nov 30 18:47:32 1987
***************
*** 1,3 ****
! #define	PATCHLEVEL	13
  
! #define NEWS_VERSION   "B 2.11 11/19/87"
--- 1,3 ----
! #define	PATCHLEVEL	14
  
! #define NEWS_VERSION   "B 2.11 12/1/87"


-- 
Arnold Robbins -- The Basement Computer
UUCP:	{ gatech, emory, gt-eedsp, bakerst, gladys }!skeeve!arnold

/bin/csh: Just Say NO!