titroff/ditroff (1.0) enhancements and fixes: part five

req at warwick.UUCP req at warwick.UUCP
Fri Nov 21 08:05:58 AEST 1986


#! /bin/sh
# This is a shell archive, meaning:
# 1. Remove everything above the #! /bin/sh line.
# 2. Save the resulting text in a file.
# 3. Execute the file with /bin/sh (not csh) to create the files:
#	diffd
# This archive created: Thu Nov 20 21:50:10 1986
export PATH; PATH=/bin:$PATH
echo shar: extracting "'diffd'" '(59948 characters)'
if test -f 'diffd'
then
	echo shar: will not over-write existing file "'diffd'"
else
sed 's/^X//' << \SHAR_EOF > 'diffd'
Xdiff -rbc titroff/nii.c /distribution/dwb/text/troff.d/nii.c
X*** titroff/nii.c	Mon Oct 13 15:30:32 1986
X--- /distribution/dwb/text/troff.d/nii.c	Fri Sep  9 18:46:14 1983
X***************
X*** 1,3
X  #include "tdef.h"
X  #ifdef NROFF
X  #include "tw.h"
X
X--- 1,4 -----
X+ /*      @(#)nii.c	1.1     */
X  #include "tdef.h"
X  #ifdef NROFF
X  #include "tw.h"
X***************
X*** 129,147
X  int	dotT;
X  char	*unlkp;
X  int	no_out;
X- #ifdef LOCALWARN
X- #include "local.h"
X- #ifdef WARNLEVELREG
X- int	warninglevel = WARN_ONCE;
X- #else !WARNLEVELREG
X- /* use v.nl instead, with the same values */
X- #endif WARNLEVELREG
X-        /* warninglevel is:
X- 	* 0 -- no warnings
X- 	* 1 -- 1 warning the 1st time a non-standard feature is used
X- 	* 2 -- warn about every non-standard feature
X- 	*
X- 	* these are defined in local.h
X- 	* REQ
X- 	*/
X- #endif LOCALWARN
X
X--- 130,132 -----
X  int	dotT;
X  char	*unlkp;
X  int	no_out;
Xdiff -rbc titroff/s.h /distribution/dwb/text/troff.d/s.h
X*** titroff/s.h	Sun Feb 21 15:07:45 1982
X--- /distribution/dwb/text/troff.d/s.h	Fri Sep  9 18:46:16 1983
X***************
X*** 1,3
X  struct s {
X  	int nargs;
X  	struct s *pframe;
X
X--- 1,4 -----
X+ /*      @(#)s.h	1.1     */
X  struct s {
X  	int nargs;
X  	struct s *pframe;
Xdiff -rbc titroff/suftab.c /distribution/dwb/text/troff.d/suftab.c
X*** titroff/suftab.c	Wed Jan 11 10:26:33 1984
X--- /distribution/dwb/text/troff.d/suftab.c	Fri Sep  9 18:46:26 1983
X***************
X*** 1,3
X  /*
X   * Suffix table
X   */
X
X--- 1,4 -----
X+ /*      @(#)suftab.c	1.1     */
X  /*
X   * Suffix table
X   */
Xdiff -rbc titroff/t10.c /distribution/dwb/text/troff.d/t10.c
X*** titroff/t10.c	Thu Oct 23 18:29:01 1986
X--- /distribution/dwb/text/troff.d/t10.c	Fri Sep  9 18:46:35 1983
X***************
X*** 1,3
X  #include "tdef.h"
X  extern
X  #include "d.h"
X
X--- 1,4 -----
X+ /*      @(#)t10.c	1.1     */
X  #include "tdef.h"
X  extern
X  #include "d.h"
X***************
X*** 13,22
X  #include "ext.h"
X  int	vpos	 = 0;	/* absolute vertical position on page */
X  int	hpos	 = 0;	/* ditto horizontal */
X- #ifdef PAPERSIZEREG
X- int	paperlength = 0;	/* from DESC */
X- int	paperwidth = 0;		/* ditto */
X- #endif PAPERSIZEREG
X  
X  #define	T_IESC	16
X  
X
X--- 14,19 -----
X  #include "ext.h"
X  int	vpos	 = 0;	/* absolute vertical position on page */
X  int	hpos	 = 0;	/* ditto horizontal */
X  
X  #define	T_IESC	16
X  
X***************
X*** 71,101
X  	/* read in resolution, size info, font info, etc.
X  	/* and set params
X  	*/
X- #ifdef USEFONTPATH
X- 	extern char *fontpath;	/* from t6.c */
X- 	extern char *followpath();	/* in local.c */
X- 	extern char *strcpy();
X- 
X- 	if (fontpath && *fontpath) {
X- 		p = followpath(fontpath, "DESC.out", 0);
X- 		if (!p || !*p) {
X- #ifdef REPORTERRS
X- 			errmsg(done3, 1,
X- 				"Can't find DESC.out in path %s", fontpath);
X- #else !REPORTERRS
X- 			fprintf(stderr,
X- 				"troff: can't find DESC.out in path %s",
X- 								fontpath);
X- 			done3(1);
X- #endif REPORTERRS
X- 		} else {
X- 			(void) strcpy(termtab, p);
X- 			/* fits because both termtab and
X- 			 * local.c:followpath().result are NS chars long,
X- 			 * and followpath checks
X- 			 */
X- 		}
X- 	} else {
X  		strcat(termtab, "/dev");
X  		strcat(termtab, devname);
X  		strcat(termtab, "/DESC.out");
X
X--- 68,73 -----
X  	/* read in resolution, size info, font info, etc.
X  	/* and set params
X  	*/
X  	strcat(termtab, "/dev");
X  	strcat(termtab, devname);
X  	strcat(termtab, "/DESC.out");	/* makes "..../devXXX/DESC.out" */
X***************
X*** 98,108
X  	} else {
X  		strcat(termtab, "/dev");
X  		strcat(termtab, devname);
X- 		strcat(termtab, "/DESC.out");
X- 	}
X- #else !USEFONTPATH
X- 	strcat(termtab, "/dev");
X- 	strcat(termtab, devname);
X  	strcat(termtab, "/DESC.out");	/* makes "..../devXXX/DESC.out" */
X  #endif USEFONTPATH
X  	if ((fin = open(termtab, 0)) < 0) {
X
X--- 70,75 -----
X  	*/
X  	strcat(termtab, "/dev");
X  	strcat(termtab, devname);
X  	strcat(termtab, "/DESC.out");	/* makes "..../devXXX/DESC.out" */
X  	if ((fin = open(termtab, 0)) < 0) {
X  		fprintf(stderr, "troff: can't open tables for %s\n", termtab);
X***************
X*** 104,110
X  	strcat(termtab, "/dev");
X  	strcat(termtab, devname);
X  	strcat(termtab, "/DESC.out");	/* makes "..../devXXX/DESC.out" */
X- #endif USEFONTPATH
X  	if ((fin = open(termtab, 0)) < 0) {
X  #ifdef REPORTERRS
X  		errmsg(done3, 1, "can't open %s (table for device %s)", termtab, devname);
X
X--- 71,76 -----
X  	strcat(termtab, "/dev");
X  	strcat(termtab, devname);
X  	strcat(termtab, "/DESC.out");	/* makes "..../devXXX/DESC.out" */
X  	if ((fin = open(termtab, 0)) < 0) {
X  		fprintf(stderr, "troff: can't open tables for %s\n", termtab);
X  		done3(1);
X***************
X*** 106,114
X  	strcat(termtab, "/DESC.out");	/* makes "..../devXXX/DESC.out" */
X  #endif USEFONTPATH
X  	if ((fin = open(termtab, 0)) < 0) {
X- #ifdef REPORTERRS
X- 		errmsg(done3, 1, "can't open %s (table for device %s)", termtab, devname);
X- #else !REPORTERRS
X  		fprintf(stderr, "troff: can't open tables for %s\n", termtab);
X  		done3(1);
X  #endif REPORTERRS
X
X--- 72,77 -----
X  	strcat(termtab, devname);
X  	strcat(termtab, "/DESC.out");	/* makes "..../devXXX/DESC.out" */
X  	if ((fin = open(termtab, 0)) < 0) {
X  		fprintf(stderr, "troff: can't open tables for %s\n", termtab);
X  		done3(1);
X  	}
X***************
X*** 111,117
X  #else !REPORTERRS
X  		fprintf(stderr, "troff: can't open tables for %s\n", termtab);
X  		done3(1);
X- #endif REPORTERRS
X  	}
X  #ifndef DMBTEST
X  	if (read(fin, &dev, sizeof(struct dev )) != sizeof (struct dev)) {
X
X--- 74,79 -----
X  	if ((fin = open(termtab, 0)) < 0) {
X  		fprintf(stderr, "troff: can't open tables for %s\n", termtab);
X  		done3(1);
X  	}
X  	read(fin, &dev, sizeof(struct dev ));
X  	Inch = dev.res;
X***************
X*** 113,128
X  		done3(1);
X  #endif REPORTERRS
X  	}
X- #ifndef DMBTEST
X- 	if (read(fin, &dev, sizeof(struct dev )) != sizeof (struct dev)) {
X- #ifdef REPORTERRS
X- 		errmsg(done3, 1, "can't read in device structure (%d bytes)", sizeof (struct dev));
X- #else !REPORTERRS
X- 		fprintf(stderr, "troff: can't read in device structure\n");
X- 		done3(1);
X- #endif REPORTERRS
X- 	}
X- #else DMBTEST
X  	read(fin, &dev, sizeof(struct dev ));
X  #endif DMBTEST
X  	Inch = dev.res;
X
X--- 75,80 -----
X  		fprintf(stderr, "troff: can't open tables for %s\n", termtab);
X  		done3(1);
X  	}
X  	read(fin, &dev, sizeof(struct dev ));
X  	Inch = dev.res;
X  	Hor = dev.hor;
X***************
X*** 124,130
X  	}
X  #else DMBTEST
X  	read(fin, &dev, sizeof(struct dev ));
X- #endif DMBTEST
X  	Inch = dev.res;
X  	Hor = dev.hor;
X  	Vert = dev.vert;
X
X--- 76,81 -----
X  		done3(1);
X  	}
X  	read(fin, &dev, sizeof(struct dev ));
X  	Inch = dev.res;
X  	Hor = dev.hor;
X  	Vert = dev.vert;
X***************
X*** 130,150
X  	Vert = dev.vert;
X  	Unitwidth = dev.unitwidth;
X  	nfonts = dev.nfonts;
X- #ifdef CHECKNFONTS
X- 	if (nfonts > NFONT) {
X- #ifdef REPORTERRS
X- 		errmsg(done3, 2, "too many pre-loaded fonts (%d, max %d); check DESC & makedev.c", nfonts, NFONT);
X- 		/* should be done3 rather than edone, as we don't want to
X- 		 * continue.  I was wrong when I put the CHECKNFONTS in, by
X- 		 * virtue of cribbing from bwk...
X- 		 * - req
X- 		 */
X- #else !REPORTERRS
X- 		fprintf(stderr, "troff: too many pre-loaded fonts (%d, max %d); check DESC & makedev.c\n", nfonts, NFONT);
X- 		edone(04);  /* is this right ?? */
X- #endif REPORTERRS
X- 	}
X- #endif CHECKNFONTS
X  	nsizes = dev.nsizes;
X  	nchtab = dev.nchtab;
X  #ifdef PAPERSIZEREG
X
X--- 81,86 -----
X  	Vert = dev.vert;
X  	Unitwidth = dev.unitwidth;
X  	nfonts = dev.nfonts;
X  	nsizes = dev.nsizes;
X  	nchtab = dev.nchtab;
X  	filebase = setbrk(dev.filesize + 2*EXTRAFONT);	/* enough room for whole file */
X***************
X*** 147,159
X  #endif CHECKNFONTS
X  	nsizes = dev.nsizes;
X  	nchtab = dev.nchtab;
X- #ifdef PAPERSIZEREG
X- 	paperlength = dev.paperlength;
X- 	paperwidth = dev.paperwidth;
X- #endif PAPERSIZEREG
X- #ifdef DESCHASNAME
X- 	(void) strncpy(devname, dev.dname, sizeof(dev.dname) - 1);
X- #endif DESCHASNAME
X  	filebase = setbrk(dev.filesize + 2*EXTRAFONT);	/* enough room for whole file */
X  #ifdef REPORTERRS
X  	/* Read in pre-loaded fonts and gunk all at once */
X
X--- 83,88 -----
X  	nfonts = dev.nfonts;
X  	nsizes = dev.nsizes;
X  	nchtab = dev.nchtab;
X  	filebase = setbrk(dev.filesize + 2*EXTRAFONT);	/* enough room for whole file */
X  	read(fin, filebase, dev.filesize);	/* all at once */
X  	pstab = (short *) filebase;
X***************
X*** 155,166
X  	(void) strncpy(devname, dev.dname, sizeof(dev.dname) - 1);
X  #endif DESCHASNAME
X  	filebase = setbrk(dev.filesize + 2*EXTRAFONT);	/* enough room for whole file */
X- #ifdef REPORTERRS
X- 	/* Read in pre-loaded fonts and gunk all at once */
X- 	if (read(fin, filebase, dev.filesize) != dev.filesize) {
X- 		errmsg(done3, 3, "Internal error: Failed to read %d bytes from %s at __FILE__:__LINE__", termtab, dev.filesize);
X- 	}
X- #else !REPORTERRS
X  	read(fin, filebase, dev.filesize);	/* all at once */
X  #endif REPORTERRS
X  	pstab = (short *) filebase;
X
X--- 84,89 -----
X  	nsizes = dev.nsizes;
X  	nchtab = dev.nchtab;
X  	filebase = setbrk(dev.filesize + 2*EXTRAFONT);	/* enough room for whole file */
X  	read(fin, filebase, dev.filesize);	/* all at once */
X  	pstab = (short *) filebase;
X  	chtab = pstab + nsizes + 1;
X***************
X*** 162,168
X  	}
X  #else !REPORTERRS
X  	read(fin, filebase, dev.filesize);	/* all at once */
X- #endif REPORTERRS
X  	pstab = (short *) filebase;
X  	chtab = pstab + nsizes + 1;
X  	chname = (char *) (chtab + dev.nchtab);
X
X--- 85,90 -----
X  	nchtab = dev.nchtab;
X  	filebase = setbrk(dev.filesize + 2*EXTRAFONT);	/* enough room for whole file */
X  	read(fin, filebase, dev.filesize);	/* all at once */
X  	pstab = (short *) filebase;
X  	chtab = pstab + nsizes + 1;
X  	chname = (char *) (chtab + dev.nchtab);
X***************
X*** 218,230
X    */
X  }
X  
X- #ifdef COMMENT
X- /* Really, all of this DESC.out stuff isn't done properly at all. 
X-  * The link between special names in troff & the post-processors is an
X-  * almighty hack.  But at least it works.
X-  * -req
X-  */
X- #endif COMMENT
X  specnames()
X  {
X  	static struct {
X
X--- 140,145 -----
X    */
X  }
X  
X  specnames()
X  {
X  	static struct {
X***************
X*** 252,263
X  	};
X  	int	i;
X  
X- #ifdef COMMENT
X- 	/* could moan about not having important characters here, perhaps.
X- 	 * but that's better left to makedev (which doesn't do it either)
X- 	 *- req
X- 	 */
X- #endif COMMENT
X  	for (i = 0; spnames[i].n; i++)
X  		*spnames[i].n = findch(spnames[i].v);
X  }
X
X--- 167,172 -----
X  	};
X  	int	i;
X  
X  	for (i = 0; spnames[i].n; i++)
X  		*spnames[i].n = findch(spnames[i].v);
X  }
X***************
X*** 445,454
X  			vpos += dy + dy2;
X  			break;
X  		case DRAWWIG:	/* wiggly line */
X- #ifdef GREMLIN
X- 		case DRAWGREM:	/* gremlin - do both in one switch... */
X- 			fprintf(ptid, "D%c %d %d", cbits(pi[1]), dx, dy);
X- #else !GREMLIN
X  			fprintf(ptid, "D%c %d %d", DRAWWIG, dx, dy);
X  #endif GREMLIN
X  			w = 0;
X
X--- 354,359 -----
X  			vpos += dy + dy2;
X  			break;
X  		case DRAWWIG:	/* wiggly line */
X  			fprintf(ptid, "D%c %d %d", DRAWWIG, dx, dy);
X  			w = 0;
X  			hpos += dx;
X***************
X*** 450,456
X  			fprintf(ptid, "D%c %d %d", cbits(pi[1]), dx, dy);
X  #else !GREMLIN
X  			fprintf(ptid, "D%c %d %d", DRAWWIG, dx, dy);
X- #endif GREMLIN
X  			w = 0;
X  			hpos += dx;
X  			vpos += dy;
X
X--- 355,360 -----
X  			break;
X  		case DRAWWIG:	/* wiggly line */
X  			fprintf(ptid, "D%c %d %d", DRAWWIG, dx, dy);
X  			w = 0;
X  			hpos += dx;
X  			vpos += dy;
X***************
X*** 454,465
X  			w = 0;
X  			hpos += dx;
X  			vpos += dy;
X- #ifdef COMMENT
X- 			/* no check for overflow here, but probably
X- 			 * OK because setdraw() checks.
X- 			 * - req
X- 			 */
X- #endif COMMENT
X  			for (n = 5; cbits(pi[n]) != '.'; n += 2) {
X  				dx = absmot(pi[n]);
X  				if (isnmot(pi[n]))
X
X--- 358,363 -----
X  			w = 0;
X  			hpos += dx;
X  			vpos += dy;
X  			for (n = 5; cbits(pi[n]) != '.'; n += 2) {
X  				dx = absmot(pi[n]);
X  				if (isnmot(pi[n]))
X***************
X*** 473,490
X  			}
X  			fprintf(ptid, "\n");
X  			break;
X- #ifdef GREMLIN
X- 		case DRAWTHICK:		/* line thickness */
X- 		case DRAWLSTYLE:	/* line style mask */
X- 			fprintf(ptid, "D%c %d\n", dx);
X- 			break;
X- #endif GREMLIN
X- #ifdef REPORTERRS
X- 		/* a warning is printed by setdraw, so we don't need one
X- 		 * here.
X- 		 * - req
X- 		 */
X- #endif REPORTERRS
X  		}
X  #ifdef MOVEAFTERDRAW
X  		/* tell the post-processor where we are... */
X
X--- 371,376 -----
X  			}
X  			fprintf(ptid, "\n");
X  			break;
X  		}
X  		for (n = 3; cbits(pi[n]) != '.'; n++)
X  			;
X***************
X*** 486,495
X  		 */
X  #endif REPORTERRS
X  		}
X- #ifdef MOVEAFTERDRAW
X- 		/* tell the post-processor where we are... */
X- 		fprintf(ptid, "H%d\nV%d\n", hpos, vpos);
X- #endif MOVEAFTERDRAW
X  		for (n = 3; cbits(pi[n]) != '.'; n++)
X  			;
X  		outsize = n + 1;
X
X--- 372,377 -----
X  			fprintf(ptid, "\n");
X  			break;
X  		}
X  		for (n = 3; cbits(pi[n]) != '.'; n++)
X  			;
X  		outsize = n + 1;
X***************
X*** 584,592
X  		return;
X  	flusho();
X  	fprintf(ptid, "p%d\n", n);	/* new page */
X- #ifdef ROTATEPAGE
X- 	ptpangle();	/* rotated page angle, local .c --- req */
X- #endif ROTATEPAGE
X  	ptps();
X  	ptfont();
X  }
X
X--- 466,471 -----
X  		return;
X  	flusho();
X  	fprintf(ptid, "p%d\n", n);	/* new page */
X  	ptps();
X  	ptfont();
X  }
Xdiff -rbc titroff/t6.c /distribution/dwb/text/troff.d/t6.c
X*** titroff/t6.c	Wed Nov 19 21:31:41 1986
X--- /distribution/dwb/text/troff.d/t6.c	Fri Sep  9 18:46:43 1983
X***************
X*** 1,3
X  #include "tdef.h"
X  extern
X  #include "d.h"
X
X--- 1,4 -----
X+ /*      @(#)t6.c	1.2     */
X  #include "tdef.h"
X  extern
X  #include "d.h"
X***************
X*** 23,33
X  int	bdtab[NFONT+1];
X  int	sbold = 0;
X  
X- #ifdef COMMENT
X- /* width() gets the width of drawing functions wrong.
X-  * - req
X-  */
X- #endif COMMENT
X  width(j)
X  tchar j;
X  {
X
X--- 24,29 -----
X  int	bdtab[NFONT+1];
X  int	sbold = 0;
X  
X  width(j)
X  tchar j;
X  {
X***************
X*** 47,62
X  		k = -widthp;
X  		goto rtn;
X  	}
X- #ifdef WIDTHOFDRAWFIX
X- 	if (i == DRAW) {
X- 		/* work out the width of the drawing function...
X- 		 * - req
X- 		 */
X- 		 /* unfortunately, we can't do this, as we don't have
X- 		  * enough information...
X- 		  */
X- 	}
X- #endif WIDTHOFDRAWFIX
X  	if (i == PRESC)
X  		i = eschar;
X  	else if (i == ohc || iscontrol(i))
X
X--- 43,48 -----
X  		k = -widthp;
X  		goto rtn;
X  	}
X  	if (i == PRESC)
X  		i = eschar;
X  	else if (i == ohc || iscontrol(i))
X***************
X*** 190,198
X  	extern int	nchtab;
X  
X  	s = temp;
X- #ifdef COMMENT
X- 	/* should use getrq() here, but that returns a tchar */
X- #endif COMMENT
X  	if ((*s++ = getach()) == 0 || (*s++ = getach()) == 0)
X  #ifdef REPORTERRS
X  	{
X
X--- 176,181 -----
X  	extern int	nchtab;
X  
X  	s = temp;
X  	if ((*s++ = getach()) == 0 || (*s++ = getach()) == 0)
X  		return(0);
X  	*s = '\0';
X***************
X*** 194,203
X  	/* should use getrq() here, but that returns a tchar */
X  #endif COMMENT
X  	if ((*s++ = getach()) == 0 || (*s++ = getach()) == 0)
X- #ifdef REPORTERRS
X- 	{
X- 		errmsg(EWARN, "\\(xx -- need 2 characters after (, only got %d",
X- 					s - temp);
X  		return(0);
X  	}
X  #else !REPORTERRS
X
X--- 177,182 -----
X  
X  	s = temp;
X  	if ((*s++ = getach()) == 0 || (*s++ = getach()) == 0)
X  		return(0);
X  	*s = '\0';
X  	for (j = 0; j < nchtab; j++)
X***************
X*** 199,208
X  		errmsg(EWARN, "\\(xx -- need 2 characters after (, only got %d",
X  					s - temp);
X  		return(0);
X- 	}
X- #else !REPORTERRS
X- 		return(0);
X- #endif REPORTERRS
X  	*s = '\0';
X  	for (j = 0; j < nchtab; j++)
X  		if (strcmp(&chname[chtab[j]], temp) == 0)
X
X--- 178,183 -----
X  	s = temp;
X  	if ((*s++ = getach()) == 0 || (*s++ = getach()) == 0)
X  		return(0);
X  	*s = '\0';
X  	for (j = 0; j < nchtab; j++)
X  		if (strcmp(&chname[chtab[j]], temp) == 0)
X***************
X*** 207,215
X  	for (j = 0; j < nchtab; j++)
X  		if (strcmp(&chname[chtab[j]], temp) == 0)
X  			return(j + 128 | chbits);
X- #ifdef REPORTERRS
X- 	errmsg(EWARN, "Special character \\(%s doesn't exist", s);
X- #endif REPORTERRS
X  	return(0);
X  }
X  
X
X--- 182,187 -----
X  	for (j = 0; j < nchtab; j++)
X  		if (strcmp(&chname[chtab[j]], temp) == 0)
X  			return(j + 128 | chbits);
X  	return(0);
X  }
X  
X***************
X*** 226,235
X  {
X  	register k;
X  
X- #ifdef RIBSFIX
X- 	/* if S has been unmounted (overwritten), smnt set to zero... */
X- 	if ((k = i - '0') >= 0 && k <= nfonts && (smnt && k != smnt))
X- #else !RIBSFIX
X  	if ((k = i - '0') >= 0 && k <= nfonts && k < smnt)
X  #endif RIBSFIX
X  		return(k);
X
X--- 198,203 -----
X  {
X  	register k;
X  
X  	if ((k = i - '0') >= 0 && k <= nfonts && k < smnt)
X  		return(k);
X  	for (k = 0; fontlab[k] != i; k++)
X***************
X*** 231,237
X  	if ((k = i - '0') >= 0 && k <= nfonts && (smnt && k != smnt))
X  #else !RIBSFIX
X  	if ((k = i - '0') >= 0 && k <= nfonts && k < smnt)
X- #endif RIBSFIX
X  		return(k);
X  	for (k = 0; fontlab[k] != i; k++)
X  		if (k > nfonts)
X
X--- 199,204 -----
X  	register k;
X  
X  	if ((k = i - '0') >= 0 && k <= nfonts && k < smnt)
X  		return(k);
X  	for (k = 0; fontlab[k] != i; k++)
X  		if (k > nfonts)
X***************
X*** 251,265
X  		i = inumb(&apts);	/* this is a disaster for fractional point sizes */
X  		noscale = 0;
X  		if (nonumb)
X- #ifdef REPORTERRS
X- 		{
X- 			tchar nextc = getch();
X- 
X- 			if (cbits(nextc) == '\n') {
X- 				errmsg(".ps: newline unexpected");
X- 			} else {
X- 				errmsg(EWARN, ".ps: bad expression from \"%s\" ignored", tchartos(nextc));
X- 			}
X  			return;
X  		}
X  #else !REPORTERRS
X
X--- 218,223 -----
X  		i = inumb(&apts);	/* this is a disaster for fractional point sizes */
X  		noscale = 0;
X  		if (nonumb)
X  			return;
X  	}
X  	casps1(i);
X***************
X*** 262,271
X  			}
X  			return;
X  		}
X- #else !REPORTERRS
X- 			return;
X- #endif REPORTERRS
X- 	}
X  	casps1(i);
X  }
X  
X
X--- 220,225 -----
X  		if (nonumb)
X  			return;
X  	}
X  	casps1(i);
X  }
X  
X***************
X*** 283,294
X  }
X  
X  
X- #ifdef COMMENT
X- /* Should we moan about unfound sizes?  Plethora of moans from eqn, I expect!
X-  * As the effect is already documented, let's not.
X-  * - req
X-  */
X- #endif COMMENT
X  findps(i)
X  register int	i;
X  {
X
X--- 237,242 -----
X  }
X  
X  
X  findps(i)
X  register int	i;
X  {
X***************
X*** 294,305
X  {
X  	register j, k;
X  
X! 	for (j = 0; i > (k = pstab[j]); j++)
X! 		if (!k) {
X! 			k = pstab[--j];
X! 			break;
X! 		}
X! 	return(k);
X  }
X  
X  
X
X--- 242,254 -----
X  {
X  	register j, k;
X  
X! 	for (j=k=0 ; pstab[j]!=0 ; j++)
X! 		if ( abs(pstab[j]-i) < abs(pstab[k]-i) )
X! 			k = j ;
X! 
X! 	if ( pstab[k] != i )
X! 		fprintf(stderr,"troff: asked for size %d, got %d\n",i,pstab[k]) ;
X! 	return(pstab[k]);
X  }
X  
X  
X***************
X*** 320,332
X  }
X  
X  
X- #ifdef COMMENT
X- /* should really check here more carefully.  It would be nice to warn the
X-  * user that \s106 is a ten-point "6", or that \s47 is a four-point 7.
X-  * I will if I get a few more minutes tonight.
X-  * - req
X-  */
X- #endif COMMENT
X  setps()
X  {
X  	register i, j;
X
X--- 269,274 -----
X  }
X  
X  
X  setps()
X  {
X  	register i, j;
X***************
X*** 349,366
X  			i = 10 * i + j;
X  			ch = 0;
X  		}
X- #ifdef REPORTERRS
X- 		/* warn if the next input char is a digit... */
X- 		if (i >= 3 || (j >= 0 && j <= 9)) { /* where's isdigit() !? */
X- 			j = cbits(ch = getch()) - '0';
X- 		}
X- 		if ((reporterrs & LERR_PSNUMWARN) && j >= 0 && j <= 9) {
X- 			/* next char is a digit.  Probably an error! */
X- 			/* we know it's a digit, so no tchartos() needed */
X- 			errmsg(EWARN, "\\s%d%c is a %d-point %c",
X- 			i, j + '0', i, j + '0');
X- 		}
X- #endif REPORTERRS
X  		casps1(i);
X  	}
X  #ifdef REPORTERRS
X
X--- 291,296 -----
X  			i = 10 * i + j;
X  			ch = 0;
X  		}
X  		casps1(i);
X  	}
X  }
X***************
X*** 363,376
X  #endif REPORTERRS
X  		casps1(i);
X  	}
X- #ifdef REPORTERRS
X- 	else
X- 	{
X- 		/* error -- ignored */
X- 		i += '0';
X- 		errmsg(EWARN, "\\s%s ignored%s", tchartos(i), (cbits(i) == 'P') ? " (use \\s0 for previous size)" : " ");
X- 	}
X- #endif REPORTERRS
X  }
X  
X  
X
X--- 293,298 -----
X  		}
X  		casps1(i);
X  	}
X  }
X  
X  
X***************
X*** 379,396
X  	int n;
X  	tchar c;
X  
X- #ifdef REPORTERRS
X- 	tchar delim1, delim2;
X- 
X- 	if (cbits((delim1 = getch())) == '\n') {
X- 		errmsg(EWARN, "\\H: newline unexpected");
X- 		return;
X- 	} else if (ismot(delim1)) {
X- 		errmsg(EWARN, "\\H: Unsuitable delimiter \"%s\"",
X- 							tchartos(delim1));
X- 		return;
X- 	}
X- #else !REPORTERRS
X  	getch();
X  #endif REPORTERRS
X  	n = inumb(&apts);
X
X--- 301,306 -----
X  	int n;
X  	tchar c;
X  
X  	getch();
X  	n = inumb(&apts);
X  	getch();
X***************
X*** 392,398
X  	}
X  #else !REPORTERRS
X  	getch();
X- #endif REPORTERRS
X  	n = inumb(&apts);
X  #ifdef REPORTERRS
X  	if (cbits(delim2 = getch()) != cbits(delim1)) {
X
X--- 302,307 -----
X  	tchar c;
X  
X  	getch();
X  	n = inumb(&apts);
X  	getch();
X  	if (n == 0 || nonumb)
X***************
X*** 394,408
X  	getch();
X  #endif REPORTERRS
X  	n = inumb(&apts);
X- #ifdef REPORTERRS
X- 	if (cbits(delim2 = getch()) != cbits(delim1)) {
X- 		if (cbits(delim2) == '\n') {
X- 			errmsg(EWARN, "\\H: expected trailing delim \"%s\", found newline", tchartos(delim1));
X- 		} else {
X- 			errmsg(EWARN, "\\H: expected close delim \"%s\", found \"%s\"", tchartos(delim1), tchartos(delim2));
X- 		}
X- 	}
X- #else !REPORTERRS
X  	getch();
X  #endif REPORTERRS
X  	if (n == 0 || nonumb)
X
X--- 303,308 -----
X  
X  	getch();
X  	n = inumb(&apts);
X  	getch();
X  	if (n == 0 || nonumb)
X  		n = apts;	/* does this work? */
X***************
X*** 404,410
X  	}
X  #else !REPORTERRS
X  	getch();
X- #endif REPORTERRS
X  	if (n == 0 || nonumb)
X  		n = apts;	/* does this work? */
X  	c = CHARHT;
X
X--- 304,309 -----
X  	getch();
X  	n = inumb(&apts);
X  	getch();
X  	if (n == 0 || nonumb)
X  		n = apts;	/* does this work? */
X  	c = CHARHT;
X***************
X*** 418,431
X  	int n;
X  	tchar c;
X  
X- #ifdef REPORTERRS
X- 	tchar delim1, delim2;
X- 
X- 	if (cbits(delim1 = getch()) == '\n') {
X- 		errmsg(EWARN, "\\S: newline unexpected");
X- 		return;
X- 	}
X- #else !REPORTERRS
X  	getch();
X  #endif REPORTERRS
X  	n = 0;
X
X--- 317,322 -----
X  	int n;
X  	tchar c;
X  
X  	getch();
X  	n = 0;
X  	n = inumb(&n);
X***************
X*** 427,433
X  	}
X  #else !REPORTERRS
X  	getch();
X- #endif REPORTERRS
X  	n = 0;
X  	n = inumb(&n);
X  #ifdef REPORTERRS
X
X--- 318,323 -----
X  	tchar c;
X  
X  	getch();
X  	n = 0;
X  	n = inumb(&n);
X  	getch();
X***************
X*** 430,444
X  #endif REPORTERRS
X  	n = 0;
X  	n = inumb(&n);
X- #ifdef REPORTERRS
X- 	if (cbits(delim2 = getch()) != cbits(delim1)) {
X- 		if (cbits(delim2) == '\n') {
X- 			errmsg(EWARN, "\\S: expected trailing delim \"%s\", found newline", tchartos(delim1));
X- 		} else {
X- 			errmsg(EWARN, "\\S: expected close delim \"%s\", found \"%s\"", tchartos(delim1), tchartos(delim2));
X- 		}
X- 	}
X- #else !REPORTERRS
X  	getch();
X  #endif REPORTERRS
X  	if (nonumb)
X
X--- 320,325 -----
X  	getch();
X  	n = 0;
X  	n = inumb(&n);
X  	getch();
X  	if (nonumb)
X  		n = 0;
X***************
X*** 440,446
X  	}
X  #else !REPORTERRS
X  	getch();
X- #endif REPORTERRS
X  	if (nonumb)
X  		n = 0;
X  	c = SLANT;
X
X--- 321,326 -----
X  	n = 0;
X  	n = inumb(&n);
X  	getch();
X  	if (nonumb)
X  		n = 0;
X  	c = SLANT;
X***************
X*** 470,501
X  		j = font1;
X  		goto s0;
X  	}
X- #ifdef RIBSFIX
X- 	/* R I B & S are no longer names of specific fonts;
X- 	 * they're synonyms for given font positions.  This was always how most
X- 	 * people thought of them in any case, so it's easier to change it than
X- 	 * to tell them the (old) truth...
X- 	 * REQ
X- 	 */
X- 	switch (i) {
X- 		case 'R':	/* Relative Roman */
X- 			i = '1';
X- 			break;
X- 		case 'I':	/* Relative Italic */
X- 			i = '2';
X- 			break;
X- 		case 'B':	/* Relative Bold */
X- 			i = '3';
X- 			break;
X- 		case 'X':	/* Bold Italic (ugh, 2-char names...) */
X- 			i = '4';
X- 			break;
X- 		case 'S':	/* Special (meaningless) */
X- 			if (smnt)
X- 				return;	/* can't change to Special font */
X- 		/* default: fall through... */
X- 	}
X- #else !RIBSFIX
X  	if (i == 'S' || i == '0')
X  		return;
X  #endif RIBSFIX
X
X--- 350,355 -----
X  		j = font1;
X  		goto s0;
X  	}
X  	if (i == 'S' || i == '0')
X  		return;
X  	if ((j = findft(i)) == -1)
X***************
X*** 498,504
X  #else !RIBSFIX
X  	if (i == 'S' || i == '0')
X  		return;
X- #endif RIBSFIX
X  	if ((j = findft(i)) == -1)
X  		if ((j = setfp(0, i, 0)) == -1)	/* try to put it in position 0 */
X  			return;
X
X--- 352,357 -----
X  	}
X  	if (i == 'S' || i == '0')
X  		return;
X  	if ((j = findft(i)) == -1)
X  		if ((j = setfp(0, i, 0)) == -1)	/* try to put it in position 0 */
X  			return;
X***************
X*** 519,527
X  
X  	base = v.st = v.sb = wid = v.ct = 0;
X  	if (ismot(i = getch()))
X- #ifdef REPORTERRS
X- 	{
X- 		errmsg(EWARN, "\\w: unsuitable delimiter \"%s\"", tchartos(i));
X  		return;
X  	}
X  #else !REPORTERRS
X
X--- 372,377 -----
X  
X  	base = v.st = v.sb = wid = v.ct = 0;
X  	if (ismot(i = getch()))
X  		return;
X  	delim = cbits(i);
X  	savhp = v.hp;
X***************
X*** 523,532
X  	{
X  		errmsg(EWARN, "\\w: unsuitable delimiter \"%s\"", tchartos(i));
X  		return;
X- 	}
X- #else !REPORTERRS
X- 		return;
X- #endif REPORTERRS
X  	delim = cbits(i);
X  	savhp = v.hp;
X  	savpinchar = pinchar;	/* XXX */
X
X--- 373,378 -----
X  	base = v.st = v.sb = wid = v.ct = 0;
X  	if (ismot(i = getch()))
X  		return;
X  	delim = cbits(i);
X  	savhp = v.hp;
X  	savpinchar = pinchar;	/* XXX */
X***************
X*** 559,569
X  		if ((k = base + em) > v.st)
X  			v.st = k;
X  	}
X- #ifdef REPORTERRS
X- 	if (cbits(i) != delim) {
X- 		errmsg(EWARN, "\\w: no trailing delimiter found to match \"%s\"", tchartos(i));
X- 	}
X- #endif REPORTERRS
X  	nform = 0;
X  	setn1(wid);
X  	v.hp = savhp;
X
X--- 405,410 -----
X  		if ((k = base + em) > v.st)
X  			v.st = k;
X  	}
X  	nform = 0;
X  	setn1(wid);
X  	v.hp = savhp;
X***************
X*** 602,616
X  	register short j, n;
X  	tchar i;
X  
X- #ifdef REPORTERRS
X- 	tchar delim1, delim2;
X- 
X- 	if ((delim1 = cbits(getch())) == '\n') {
X- 		errmsg(EWARN, "\\h: newline unexpected");
X- 		return;
X- 	} else if (ismot(delim1)) {
X- 		errmsg(EWARN, "\\h: \"%s\" unsuitable delim", tchartos(delim1));
X- 	}
X  	j = HOR;
X  #else !REPORTERRS
X  	j = HOR;
X
X--- 443,448 -----
X  	register short j, n;
X  	tchar i;
X  
X  	j = HOR;
X  	getch(); /*eat delim*/
X  	if (n = atoi()) {
X***************
X*** 612,619
X  		errmsg(EWARN, "\\h: \"%s\" unsuitable delim", tchartos(delim1));
X  	}
X  	j = HOR;
X- #else !REPORTERRS
X- 	j = HOR;
X  	getch(); /*eat delim*/
X  #endif REPORTERRS
X  	if (n = atoi()) {
X
X--- 444,449 -----
X  	tchar i;
X  
X  	j = HOR;
X  	getch(); /*eat delim*/
X  	if (n = atoi()) {
X  		if (vflag)
X***************
X*** 615,621
X  #else !REPORTERRS
X  	j = HOR;
X  	getch(); /*eat delim*/
X- #endif REPORTERRS
X  	if (n = atoi()) {
X  		if (vflag)
X  			j = VERT;
X
X--- 445,450 -----
X  
X  	j = HOR;
X  	getch(); /*eat delim*/
X  	if (n = atoi()) {
X  		if (vflag)
X  			j = VERT;
X***************
X*** 622,636
X  		i = makem(quant(n, j));
X  	} else
X  		i = 0;
X- #ifdef REPORTERRS
X- 	if ((delim2 = cbits(getch())) != delim1) {
X- 		if (delim2 == '\n') {
X- 			errmsg(EWARN, "\\h: expected trailing delim \"%s\", found newline", tchartos(delim1));
X- 		} else {
X- 			errmsg(EWARN, "\\h: expected close delim \"%s\", found \"%s\"", tchartos(delim1), tchartos(delim2));
X- 		}
X- 	}
X- #else !REPORTERRS
X  	getch();
X  #endif REPORTERRS
X  	vflag = 0;
X
X--- 451,456 -----
X  		i = makem(quant(n, j));
X  	} else
X  		i = 0;
X  	getch();
X  	vflag = 0;
X  	dfact = 1;
X***************
X*** 632,638
X  	}
X  #else !REPORTERRS
X  	getch();
X- #endif REPORTERRS
X  	vflag = 0;
X  	dfact = 1;
X  	return(i);
X
X--- 452,457 -----
X  	} else
X  		i = 0;
X  	getch();
X  	vflag = 0;
X  	dfact = 1;
X  	return(i);
X***************
X*** 725,733
X  
X  	skip();
X  	if ((i = cbits(getch()) - '0') <= 0 || i > nfonts)
X- #ifdef REPORTERRS
X- 		errmsg(EWARN, "fp %d: font position must be in range 1..%d", i, nfonts);
X- #else !REPORTERRS
X  		fprintf(stderr, "troff: fp: bad font position %d\n", i);
X  #endif REPORTERRS
X  	else if (skip() || !(j = getrq()))
X
X--- 544,549 -----
X  
X  	skip();
X  	if ((i = cbits(getch()) - '0') <= 0 || i > nfonts)
X  		fprintf(stderr, "troff: fp: bad font position %d\n", i);
X  	else if (skip() || !(j = getrq()))
X  		fprintf(stderr, "troff: fp: no font name\n"); 
X***************
X*** 729,735
X  		errmsg(EWARN, "fp %d: font position must be in range 1..%d", i, nfonts);
X  #else !REPORTERRS
X  		fprintf(stderr, "troff: fp: bad font position %d\n", i);
X- #endif REPORTERRS
X  	else if (skip() || !(j = getrq()))
X  #ifdef REPORTERRS
X  		errmsg(EWARN, ".fp %d without font name ignored", i); 
X
X--- 545,550 -----
X  	skip();
X  	if ((i = cbits(getch()) - '0') <= 0 || i > nfonts)
X  		fprintf(stderr, "troff: fp: bad font position %d\n", i);
X  	else if (skip() || !(j = getrq()))
X  		fprintf(stderr, "troff: fp: no font name\n"); 
X  	else {
X***************
X*** 731,739
X  		fprintf(stderr, "troff: fp: bad font position %d\n", i);
X  #endif REPORTERRS
X  	else if (skip() || !(j = getrq()))
X- #ifdef REPORTERRS
X- 		errmsg(EWARN, ".fp %d without font name ignored", i); 
X- #else !REPORTERRS
X  		fprintf(stderr, "troff: fp: no font name\n"); 
X  #endif REPORTERRS
X  	else {
X
X--- 546,551 -----
X  	if ((i = cbits(getch()) - '0') <= 0 || i > nfonts)
X  		fprintf(stderr, "troff: fp: bad font position %d\n", i);
X  	else if (skip() || !(j = getrq()))
X  		fprintf(stderr, "troff: fp: no font name\n"); 
X  	else {
X  		skip();
X***************
X*** 735,741
X  		errmsg(EWARN, ".fp %d without font name ignored", i); 
X  #else !REPORTERRS
X  		fprintf(stderr, "troff: fp: no font name\n"); 
X- #endif REPORTERRS
X  	else {
X  		skip();
X  		setfp(i, j, 0);
X
X--- 547,552 -----
X  		fprintf(stderr, "troff: fp: bad font position %d\n", i);
X  	else if (skip() || !(j = getrq()))
X  		fprintf(stderr, "troff: fp: no font name\n"); 
X  	else {
X  		skip();
X  		setfp(i, j, 0);
X***************
X*** 741,750
X  		setfp(i, j, 0);
X  	}
X  }
X- #ifdef USEFONTPATH
X- char *fontpath = 0;
X- extern char *followpath();
X- #endif USEFONTPATH
X  
X  setfp(pos, f, d)	/* mount font f at position pos[0...nfonts] */
X  int pos, f;
X
X--- 552,557 -----
X  		setfp(i, j, 0);
X  	}
X  }
X  
X  setfp(pos, f, d)	/* mount font f at position pos[0...nfonts] */
X  int pos, f;
X***************
X*** 752,764
X  {
X  	register i, j, k;
X  	int n;
X- #ifdef COMMENT
X- 	/* the 10 in shortname[10] is to match up with the 10 in dev.h.
X- 	 * but it doesn't really matter, as the field is effectively
X- 	 * unused.
X- 	 * - req
X- 	 */
X- #endif COMMENT
X  	char	longname[NS], shortname[10], *p;
X  	extern int	nchtab;
X  
X
X--- 559,564 -----
X  {
X  	register i, j, k;
X  	int n;
X  	char	longname[NS], shortname[10], *p;
X  	extern int	nchtab;
X  
X***************
X*** 765,772
X  	shortname[0] = f & BMASK;
X  	shortname[1] = f >> BYTE;
X  	shortname[2] = '\0';
X- #ifdef USEFONTPATH
X- 	if (!fontpath || !*fontpath) {
X  		if (d == 0)	/* normal case */
X  			sprintf(longname, "%s/dev%s/%s.out", fontfile, devname, shortname);
X  		else		/* 3rd argument is a directory for the font */
X
X--- 565,570 -----
X  	shortname[0] = f & BMASK;
X  	shortname[1] = f >> BYTE;
X  	shortname[2] = '\0';
X  	if (d == 0)	/* normal case */
X  		sprintf(longname, "%s/dev%s/%s.out", fontfile, devname, shortname);
X  	else		/* 3rd argument is a directory for the font */
X***************
X*** 772,821
X  		else		/* 3rd argument is a directory for the font */
X  			sprintf(longname, "%s/%s.out", fontfile, shortname);
X  		if ((k = open(longname, 0)) < 0) {
X- 			if ((k = open(longname, 0)) < 0) {
X- #ifdef REPORTERRS
X- 				errmsg(EWARN, "No file \"%s\" for font %s",
X- 							longname,shortname);
X- #else !REPORTERRS
X- 				fprintf(stderr, "troff: Can't open %s\n",
X- 								longname);
X- #endif REPORTERRS
X- 				return(-1);
X- 			}
X- 		}
X- 	} else {
X- 		/* march along fontpath looking for ':', which delimits
X- 		 * entries; each entry is in turn prepended to %s.out.
X- 		 * The default fontfile is made in n1.c:main()
X- 		 * and is /usr/lib/troff/descs/devXXX, where XXX is from -T
X- 		 * - req
X- 		 */
X- 		char *p;
X- 
X- 		sprintf(longname, "%s.out", shortname);
X- 		/* the trailing zero means we need a readable file */
X- 		if ((p = followpath(fontpath, longname, 0)) == (char *) 0 ||
X- 							(k = open(p, 0)) < 0) {
X- #ifdef REPORTERRS
X- 			errmsg(EWARN,
X- 				"Can't find \"%s\" for font %s in path \"%s\"",
X- 					       longname, shortname, fontfile);
X- #else !REPORTERRS
X- 			fprintf(stderr, "troff: can't find font file %s.out in path \"%s\"", shortname, fontfile);
X- #endif REPORTERRS
X- 			return(-1);
X- 		}
X- 	}
X- 	/* now have k as an open file */
X- #else !USEFONTPATH
X- 	if (d == 0)	/* normal case */
X- 		sprintf(longname, "%s/dev%s/%s.out", fontfile, devname, shortname);
X- 	else		/* 3rd argument is a directory for the font */
X- 		sprintf(longname, "%s/%s.out", fontfile, shortname);
X- 	if ((k = open(longname, 0)) < 0) {
X- #ifdef REPORTERRS
X- 		errmsg(EWARN, "No file \"%s\" for font %s", longname,shortname);
X- #else !REPORTERRS
X  		fprintf(stderr, "troff: Can't open %s\n", longname);
X  #endif REPORTERRS
X  		return(-1);
X
X--- 570,575 -----
X  	else		/* 3rd argument is a directory for the font */
X  		sprintf(longname, "%s/%s.out", fontfile, shortname);
X  	if ((k = open(longname, 0)) < 0) {
X  		fprintf(stderr, "troff: Can't open %s\n", longname);
X  		return(-1);
X  	}
X***************
X*** 817,823
X  		errmsg(EWARN, "No file \"%s\" for font %s", longname,shortname);
X  #else !REPORTERRS
X  		fprintf(stderr, "troff: Can't open %s\n", longname);
X- #endif REPORTERRS
X  		return(-1);
X  	}
X  #endif USEFONTPATH
X
X--- 571,576 -----
X  		sprintf(longname, "%s/%s.out", fontfile, shortname);
X  	if ((k = open(longname, 0)) < 0) {
X  		fprintf(stderr, "troff: Can't open %s\n", longname);
X  		return(-1);
X  	}
X  	n = fontbase[pos]->nwfont & BMASK;
X***************
X*** 820,826
X  #endif REPORTERRS
X  		return(-1);
X  	}
X- #endif USEFONTPATH
X  	n = fontbase[pos]->nwfont & BMASK;
X  	read(k, fontbase[pos], 3*n + nchtab + 128 - 32 + sizeof(struct font));
X  	kerntab[pos] = (char *) fontab[pos] + (fontbase[pos]->nwfont & BMASK);
X
X--- 573,578 -----
X  		fprintf(stderr, "troff: Can't open %s\n", longname);
X  		return(-1);
X  	}
X  	n = fontbase[pos]->nwfont & BMASK;
X  	read(k, fontbase[pos], 3*n + nchtab + 128 - 32 + sizeof(struct font));
X  	kerntab[pos] = (char *) fontab[pos] + (fontbase[pos]->nwfont & BMASK);
X***************
X*** 827,835
X  	/* have to reset the fitab pointer because the width may be different */
X  	fitab[pos] = (char *) fontab[pos] + 3 * (fontbase[pos]->nwfont & BMASK);
X  	if ((fontbase[pos]->nwfont & BMASK) > n) {
X- #ifdef REPORTERRS
X- 		errmsg(EWARN, "Font %s is %d bytes too big for position %d\n", shortname, fontbase[pos]->nwfont - n, pos);
X- #else !REPORTERRS
X  		fprintf(stderr, "troff: Font %s too big for position %d\n", shortname, pos);
X  #endif REPORTERRS
X  		return(-1);
X
X--- 579,584 -----
X  	/* have to reset the fitab pointer because the width may be different */
X  	fitab[pos] = (char *) fontab[pos] + 3 * (fontbase[pos]->nwfont & BMASK);
X  	if ((fontbase[pos]->nwfont & BMASK) > n) {
X  		fprintf(stderr, "troff: Font %s too big for position %d\n", shortname, pos);
X  		return(-1);
X  	}
X***************
X*** 831,837
X  		errmsg(EWARN, "Font %s is %d bytes too big for position %d\n", shortname, fontbase[pos]->nwfont - n, pos);
X  #else !REPORTERRS
X  		fprintf(stderr, "troff: Font %s too big for position %d\n", shortname, pos);
X- #endif REPORTERRS
X  		return(-1);
X  	}
X  	fontbase[pos]->nwfont = n;	/* so can load a larger one again later */
X
X--- 580,585 -----
X  	fitab[pos] = (char *) fontab[pos] + 3 * (fontbase[pos]->nwfont & BMASK);
X  	if ((fontbase[pos]->nwfont & BMASK) > n) {
X  		fprintf(stderr, "troff: Font %s too big for position %d\n", shortname, pos);
X  		return(-1);
X  	}
X  	fontbase[pos]->nwfont = n;	/* so can load a larger one again later */
X***************
X*** 864,888
X  	register i, j;
X  
X  	noscale++;
X- 	i = j;
X- #ifdef REPORTERRS
X- 	{
X- 		int name;
X- 
X- 		if (skip()) {
X- 			errmsg(EWARN, "call to .cs with no arguments ignored");
X- 			goto rtn;
X- 		}
X- 		if (!(i = getrq())) {
X- 			errmsg(EWARN, "call to .cs with no arguments ignored");
X- 			goto rtn;
X- 		}
X- 		if ((i = findft(name = i)) < 0) {
X- 			errmsg(EWARN, ".cs: font %s is not mounted -- ignored",
X- 						realname(name));
X- 			goto rtn;
X- 		}
X- 	}
X  	skip();
X  #else !REPORTERRS
X  	skip();
X
X--- 612,617 -----
X  	register i, j;
X  
X  	noscale++;
X  	skip();
X  	if (!(i = getrq()) || (i = findft(i)) < 0)
X  		goto rtn;
X***************
X*** 884,891
X  		}
X  	}
X  	skip();
X- #else !REPORTERRS
X- 	skip();
X  	if (!(i = getrq()) || (i = findft(i)) < 0)
X  		goto rtn;
X  	skip();
X
X--- 613,618 -----
X  
X  	noscale++;
X  	skip();
X  	if (!(i = getrq()) || (i = findft(i)) < 0)
X  		goto rtn;
X  	skip();
X***************
X*** 889,895
X  	if (!(i = getrq()) || (i = findft(i)) < 0)
X  		goto rtn;
X  	skip();
X- #endif REPORTERRS
X  	cstab[i] = atoi();
X  #ifdef REPORTERRS
X  	if (!skip())
X
X--- 616,621 -----
X  	if (!(i = getrq()) || (i = findft(i)) < 0)
X  		goto rtn;
X  	skip();
X  	cstab[i] = atoi();
X  	skip();
X  	j = atoi();
X***************
X*** 891,898
X  	skip();
X  #endif REPORTERRS
X  	cstab[i] = atoi();
X! #ifdef REPORTERRS
X! 	if (!skip())
X  		j = atoi();
X  #endif REPORTERRS
X  	if (nonumb)
X
X--- 617,623 -----
X  		goto rtn;
X  	skip();
X  	cstab[i] = atoi();
X! 	skip();
X  	j = atoi();
X  	if (nonumb)
X  		ccstab[i] = 0;
X***************
X*** 894,900
X  #ifdef REPORTERRS
X  	if (!skip())
X  		j = atoi();
X- #endif REPORTERRS
X  	if (nonumb)
X  		ccstab[i] = 0;
X  	else
X
X--- 619,624 -----
X  	cstab[i] = atoi();
X  	skip();
X  	j = atoi();
X  	if (nonumb)
X  		ccstab[i] = 0;
X  	else
X***************
X*** 910,937
X  
X  	k = 0;
X  bd0:
X- #ifdef REPORTERRS
X- 	if (skip()) {
X- 		errmsg(EWARN, "Call to .bd with no arguments ignored");
X- 		if (k)
X- 			goto bd1;
X- 		else 
X- 			return;
X- 	} else if (!(i = getrq())) {
X- 		errmsg(EWARN, ".cs: without any arguments ignored");
X- 		if (k)
X- 			goto bd1;
X- 		else 
X- 			return;
X- 	} else if ((j = findft(i)) < 0) {
X- 		errmsg(EWARN, "Call to .cs for unknown font %s ignored",
X- 						realname(j));
X- 		if (k)
X- 			goto bd1;
X- 		else 
X- 			return;
X- 	}
X- #else !REPORTERRS
X  	if (skip() || !(i = getrq()) || (j = findft(i)) == -1) {
X  		if (k)
X  			goto bd1;
X
X--- 634,639 -----
X  
X  	k = 0;
X  bd0:
X  	if (skip() || !(i = getrq()) || (j = findft(i)) == -1) {
X  		if (k)
X  			goto bd1;
X***************
X*** 938,944
X  		else 
X  			return;
X  	}
X- #endif REPORTERRS
X  	if (j == smnt) {
X  		k = smnt;
X  		goto bd0;
X
X--- 640,645 -----
X  		else 
X  			return;
X  	}
X  	if (j == smnt) {
X  		k = smnt;
X  		goto bd0;
X***************
X*** 980,995
X  	register i;
X  
X  	noscale++;
X- #ifdef REPORTERRS
X- 	/* ignored if no args. */
X- 	/* That way we can distinguish between a syntax error in an expression
X- 	 * and a call to .ss without args, and only moan at the former (although
X- 	 * atoi() may moan too, of course!
X- 	 * - req
X- 	 */
X- 	if (skip())
X- 		return;
X- #endif REPORTERRS
X  	skip();
X  	if (i = atoi()) {
X  		spacesz = i & 0177;
X
X--- 681,686 -----
X  	register i;
X  
X  	noscale++;
X  	skip();
X  	if (i = atoi()) {
X  		spacesz = i & 0177;
X***************
X*** 995,1005
X  		spacesz = i & 0177;
X  		sps = width(' ' | chbits);
X  	}
X- #ifdef REPORTERRS
X- 	else if (nonumb) {
X- 		errmsg(EWARN, ".ss with non-numeric argument ignored");
X- 	}
X- #endif REPORTERRS
X  	noscale = 0;
X  }
X  
X
X--- 686,691 -----
X  		spacesz = i & 0177;
X  		sps = width(' ' | chbits);
X  	}
X  	noscale = 0;
X  }
X  
Xdiff -rbc titroff/ta.c /distribution/dwb/text/troff.d/ta.c
X*** titroff/ta.c	Wed Jan 11 10:26:33 1984
X--- /distribution/dwb/text/troff.d/ta.c	Fri Sep  9 18:46:54 1983
X***************
X*** 1,3
X  /*
X   *	drive hp2621 terminal 
X   *	just to see stuff quickly. like troff -a
X
X--- 1,4 -----
X+ /*      @(#)ta.c	1.1     */
X  /*
X   *	drive hp2621 terminal 
X   *	just to see stuff quickly. like troff -a
XOnly in titroff: tags
Xdiff -rbc titroff/tc.c /distribution/dwb/text/troff.d/tc.c
X*** titroff/tc.c	Wed Jan 11 10:26:33 1984
X--- /distribution/dwb/text/troff.d/tc.c	Fri Sep  9 18:47:11 1983
X***************
X*** 1,3
X  /*
X   *	drive 4014 scope
X   */
X
X--- 1,4 -----
X+ /*	@(#)tc.c	1.2	*/
X  /*
X   *	drive 4014 scope
X   */
X***************
X*** 99,106
X  		case 'T':
X  			if (strcmp(&argv[1][2], "cat") == 0) {	/* use the old one */
X  				if (fork() == 0) {
X! 					execv("/usr/bin/oldtc", argv);
X! 					fprintf(stderr, "tc: can't find oldtc\n");
X  				}
X  				wait();
X  				exit(1);
X
X--- 100,107 -----
X  		case 'T':
X  			if (strcmp(&argv[1][2], "cat") == 0) {	/* use the old one */
X  				if (fork() == 0) {
X! 					execv("/usr/bin/otc", argv);
X! 					fprintf(stderr, "tc: can't find otc\n");
X  				}
X  				wait((int *)0);
X  				exit(1);
X***************
X*** 102,108
X  					execv("/usr/bin/oldtc", argv);
X  					fprintf(stderr, "tc: can't find oldtc\n");
X  				}
X! 				wait();
X  				exit(1);
X  			}
X  			break;
X
X--- 103,109 -----
X  					execv("/usr/bin/otc", argv);
X  					fprintf(stderr, "tc: can't find otc\n");
X  				}
X! 				wait((int *)0);
X  				exit(1);
X  			}
X  			break;
X***************
X*** 120,125
X  			if (dbg == 0) dbg = 1;
X  			break;
X  		case 'c':
X  			keepon = 1;
X  			break;
X  		}
X
X--- 121,127 -----
X  			if (dbg == 0) dbg = 1;
X  			break;
X  		case 'c':
X+ 		case 't':
X  			keepon = 1;
X  			break;
X  		}
X***************
X*** 580,586
X  		fputs("-n	go back n pages\n", stderr);
X  		fputs("n	print page n (previously printed)\n", stderr);
X  		fputs("o...	set the -o output list to ...\n", stderr);
X! 		fputs("en	n=0 -> don't erase; n=1 -> erase\n", stderr);
X  		fputs("an	sets aspect ratio to n\n", stderr);
X  		break;
X  	default:
X
X--- 582,588 -----
X  		fputs("-n	go back n pages\n", stderr);
X  		fputs("n	print page n (previously printed)\n", stderr);
X  		fputs("o...	set the -o output list to ...\n", stderr);
X! 		fputs("e	invert state of erasing\n", stderr);
X  		fputs("an	sets aspect ratio to n\n", stderr);
X  		break;
X  	default:
Xdiff -rbc titroff/tdef.h /distribution/dwb/text/troff.d/tdef.h
X*** titroff/tdef.h	Tue Nov 11 15:16:31 1986
X--- /distribution/dwb/text/troff.d/tdef.h	Tue Oct 25 17:24:11 1983
X***************
X*** 1,7
X! #ifdef BSD42
X! #include <pagsiz.h>
X! #define 	BUFSIZ	BSIZE
X! #endif BSD42
X  #include <signal.h>
X  
X  #define	MAXPTR	(char *)-1	/* max value of any pointer variable */
X
X--- 1,4 -----
X! /*      @(#)tdef.h	1.2     */
X  #include <signal.h>
X  
X  #define	MAXPTR	(char *)-1	/* max value of any pointer variable */
X***************
X*** 77,93
X  #define	DRAWELLIPSE	'e'
X  #define	DRAWARC		'a'	/* arbitrary arc */
X  #define	DRAWWIG		'~'	/* wiggly line with spline */
X- #ifdef GREMLIN
X- /* Gremlin enhancements go here.  But I don't know what they are yet.
X-  * Line thickness
X-  * Stipple
X-  * ``Gremlin''
X-  * - req
X-  */
X- #define DRAWGREM	'g'	/* gremlin [sic] */
X- #define DRAWTHICK	't'	/* line thickness */
X- #define DRAWLSTYLE	's'	/* line style */
X- #endif GREMLIN
X  
X  #define	LEFT	020	/* \{ */
X  #define	RIGHT	021	/* \} */
X
X--- 74,79 -----
X  #define	DRAWELLIPSE	'e'
X  #define	DRAWARC		'a'	/* arbitrary arc */
X  #define	DRAWWIG		'~'	/* wiggly line with spline */
X  
X  #define	LEFT	020	/* \{ */
X  #define	RIGHT	021	/* \} */
X***************
X*** 92,100
X  #define	LEFT	020	/* \{ */
X  #define	RIGHT	021	/* \} */
X  #define	FILLER	022	/* \& and similar purposes */
X- #ifdef ANYBASELINE
X- #define BASESTR 023	/* \B -- text on arbitrary baseline  - req */
X- #endif ANYBASELINE
X  #define	OHC	024	/* optional hyphenation character \% */
X  #define	CONT	025	/* \c character */
X  #define	PRESC	026	/* printable escape */
X
X--- 78,83 -----
X  #define	LEFT	020	/* \{ */
X  #define	RIGHT	021	/* \} */
X  #define	FILLER	022	/* \& and similar purposes */
X  #define	OHC	024	/* optional hyphenation character \% */
X  #define	CONT	025	/* \c character */
X  #define	PRESC	026	/* printable escape */
X***************
X*** 132,140
X  
X  /* array sizes, and similar limits: */
X  
X- #ifdef MOREPREFONTS
X- #define	NFONT	40	/* maximum number of fonts (including specials) */
X- #else !MOREPREFONTS
X  #define	NFONT	10	/* maximum number of fonts (including specials) */
X  #endif MOREPREFONTS
X  #define	EXTRAFONT	500	/* extra space for swapping a font */
X
X--- 115,120 -----
X  
X  /* array sizes, and similar limits: */
X  
X  #define	NFONT	10	/* maximum number of fonts (including specials) */
X  #define	EXTRAFONT	500	/* extra space for swapping a font */
X  #define	NN	300	/* number registers */
X***************
X*** 136,142
X  #define	NFONT	40	/* maximum number of fonts (including specials) */
X  #else !MOREPREFONTS
X  #define	NFONT	10	/* maximum number of fonts (including specials) */
X- #endif MOREPREFONTS
X  #define	EXTRAFONT	500	/* extra space for swapping a font */
X  #ifdef BSD42
X  #ifdef VMUNIX
X
X--- 116,121 -----
X  /* array sizes, and similar limits: */
X  
X  #define	NFONT	10	/* maximum number of fonts (including specials) */
X  #define	EXTRAFONT	500	/* extra space for swapping a font */
X  #define	NN	300	/* number registers */
X  #define	NNAMES	15	 /* predefined reg names */
X***************
X*** 138,147
X  #define	NFONT	10	/* maximum number of fonts (including specials) */
X  #endif MOREPREFONTS
X  #define	EXTRAFONT	500	/* extra space for swapping a font */
X- #ifdef BSD42
X- #ifdef VMUNIX
X- #define	NN	528	/* number registers */
X- #else !VMUNIX
X  #define	NN	300	/* number registers */
X  #endif VMUNIX
X  #else !BSD42
X
X--- 117,122 -----
X  
X  #define	NFONT	10	/* maximum number of fonts (including specials) */
X  #define	EXTRAFONT	500	/* extra space for swapping a font */
X  #define	NN	300	/* number registers */
X  #define	NNAMES	15	 /* predefined reg names */
X  #define	NIF	15	/* if-else nesting */
X***************
X*** 143,152
X  #define	NN	528	/* number registers */
X  #else !VMUNIX
X  #define	NN	300	/* number registers */
X- #endif VMUNIX
X- #else !BSD42
X- #define	NN	300	/* number registers */
X- #endif BSD42
X  #define	NNAMES	15	 /* predefined reg names */
X  #define	NIF	15	/* if-else nesting */
X  #define	NS	64	/* name buffer */
X
X--- 118,123 -----
X  #define	NFONT	10	/* maximum number of fonts (including specials) */
X  #define	EXTRAFONT	500	/* extra space for swapping a font */
X  #define	NN	300	/* number registers */
X  #define	NNAMES	15	 /* predefined reg names */
X  #define	NIF	15	/* if-else nesting */
X  #define	NS	128	/* name buffer */
X***************
X*** 149,155
X  #endif BSD42
X  #define	NNAMES	15	 /* predefined reg names */
X  #define	NIF	15	/* if-else nesting */
X! #define	NS	64	/* name buffer */
X  #define	NTM	256	/* tm buffer */
X  #ifdef LOTSOFENVS
X  #define	NEV	7	/* environments */
X
X--- 120,126 -----
X  #define	NN	300	/* number registers */
X  #define	NNAMES	15	 /* predefined reg names */
X  #define	NIF	15	/* if-else nesting */
X! #define	NS	128	/* name buffer */
X  #define	NTM	256	/* tm buffer */
X  #define	NEV	3	/* environments */
X  #define	EVLSZ	10	/* size of ev stack */
X***************
X*** 151,164
X  #define	NIF	15	/* if-else nesting */
X  #define	NS	64	/* name buffer */
X  #define	NTM	256	/* tm buffer */
X- #ifdef LOTSOFENVS
X- #define	NEV	7	/* environments */
X- /* the macro packges use .ev 0, 1, 2
X-  * so this leaves 3, 4, 5, 6
X-  * for the user.  I'm going to make -ms use .ev 3, though, for keeps.
X-  * - req
X-  */
X- #else !LOTSOFENVS
X  #define	NEV	3	/* environments */
X  #endif LOTSOFENVS
X  #define	EVLSZ	10	/* size of ev stack */
X
X--- 122,127 -----
X  #define	NIF	15	/* if-else nesting */
X  #define	NS	128	/* name buffer */
X  #define	NTM	256	/* tm buffer */
X  #define	NEV	3	/* environments */
X  #define	EVLSZ	10	/* size of ev stack */
X  #define	DSIZE	512	/* disk sector size in chars */
X***************
X*** 160,166
X   */
X  #else !LOTSOFENVS
X  #define	NEV	3	/* environments */
X- #endif LOTSOFENVS
X  #define	EVLSZ	10	/* size of ev stack */
X  #define	DSIZE	512	/* disk sector size in chars */
X  
X
X--- 123,128 -----
X  #define	NS	128	/* name buffer */
X  #define	NTM	256	/* tm buffer */
X  #define	NEV	3	/* environments */
X  #define	EVLSZ	10	/* size of ev stack */
X  #define	DSIZE	512	/* disk sector size in chars */
X  
X***************
X*** 172,179
X     no harm is done as long as it's big enough.
X  */
X  
X- #ifdef WARWICK
X- /* if it's wrong, let's fix it ! */
X  #define	EVUSED	\
X  		(59 * sizeof(int)	/* integers in env block */	\
X  		+ 9 * sizeof(*tchar)	/* tchars in env block */	\
X
X--- 134,139 -----
X     no harm is done as long as it's big enough.
X  */
X  
X  #define	EVUSED	\
X  		(59 * sizeof(int)	/* integers in env block */	\
X  		+ 9 * sizeof(tchar)	/* tchars in env block */	\
X***************
X*** 176,188
X  /* if it's wrong, let's fix it ! */
X  #define	EVUSED	\
X  		(59 * sizeof(int)	/* integers in env block */	\
X- 		+ 9 * sizeof(*tchar)	/* tchars in env block */	\
X- 		+ NHYP * sizeof(*tchar)	/* hytab */	\
X- 		+ NTAB * sizeof(int)	/* tabtab */	\
X- 		+ (LNSIZE+WDSIZE) * sizeof(*tchar))	/* line+word */
X- #else WARWICK
X- #define	EVUSED	\
X- 		(59 * sizeof(int)	/* integers in env block */	\
X  		+ 9 * sizeof(tchar)	/* tchars in env block */	\
X  		+ NHYP * sizeof(tchar)	/* hytab */	\
X  		+ NTAB * sizeof(int)	/* tabtab */	\
X
X--- 136,141 -----
X  
X  #define	EVUSED	\
X  		(59 * sizeof(int)	/* integers in env block */	\
X  		+ 9 * sizeof(tchar)	/* tchars in env block */	\
X  		+ NHYP * sizeof(tchar)	/* hytab */	\
X  		+ NTAB * sizeof(int)	/* tabtab */	\
X***************
X*** 187,193
X  		+ NHYP * sizeof(tchar)	/* hytab */	\
X  		+ NTAB * sizeof(int)	/* tabtab */	\
X  		+ (LNSIZE+WDSIZE) * sizeof(tchar))	/* line+word */
X- #endif WARWICK
X  
X  #define	EVSPARE	DSIZE - EVUSED % DSIZE	/* number of leftover chars */
X  #define	EVS	(EVUSED + EVSPARE)	/* should be a multiple of DSIZE */
X
X--- 140,145 -----
X  		+ NHYP * sizeof(tchar)	/* hytab */	\
X  		+ NTAB * sizeof(int)	/* tabtab */	\
X  		+ (LNSIZE+WDSIZE) * sizeof(tchar))	/* line+word */
X  
X  #define	EVSPARE	DSIZE - EVUSED % DSIZE	/* number of leftover chars */
X  #define	EVS	(EVUSED + EVSPARE)	/* should be a multiple of DSIZE */
X***************
X*** 191,199
X  
X  #define	EVSPARE	DSIZE - EVUSED % DSIZE	/* number of leftover chars */
X  #define	EVS	(EVUSED + EVSPARE)	/* should be a multiple of DSIZE */
X- #ifdef WARWICK
X- #define NM	800
X- #else WARWICK
X  #define	NM	350	/* requests + macros */
X  #endif WARWICK
X  #define	DELTA	1024	/* delta core bytes */
X
X--- 143,148 -----
X  
X  #define	EVSPARE	DSIZE - EVUSED % DSIZE	/* number of leftover chars */
X  #define	EVS	(EVUSED + EVSPARE)	/* should be a multiple of DSIZE */
X  #define	NM	350	/* requests + macros */
X  #define	DELTA	1024	/* delta core bytes */
X  #define	NHYP	10	/* max hyphens per word */
X***************
X*** 195,201
X  #define NM	800
X  #else WARWICK
X  #define	NM	350	/* requests + macros */
X- #endif WARWICK
X  #define	DELTA	1024	/* delta core bytes */
X  #define	NHYP	10	/* max hyphens per word */
X  #ifndef NHEX /* to allow setting this from the Makefile -- req */
X
X--- 144,149 -----
X  #define	EVSPARE	DSIZE - EVUSED % DSIZE	/* number of leftover chars */
X  #define	EVS	(EVUSED + EVSPARE)	/* should be a multiple of DSIZE */
X  #define	NM	350	/* requests + macros */
X  #define	DELTA	1024	/* delta core bytes */
X  #define	NHYP	10	/* max hyphens per word */
X  #define	NHEX	128	/* byte size of exception word list */
X***************
X*** 198,204
X  #endif WARWICK
X  #define	DELTA	1024	/* delta core bytes */
X  #define	NHYP	10	/* max hyphens per word */
X- #ifndef NHEX /* to allow setting this from the Makefile -- req */
X  #define	NHEX	128	/* byte size of exception word list */
X  #endif !NHEX
X  #define	NTAB	35	/* tab stops */
X
X--- 146,151 -----
X  #define	NM	350	/* requests + macros */
X  #define	DELTA	1024	/* delta core bytes */
X  #define	NHYP	10	/* max hyphens per word */
X  #define	NHEX	128	/* byte size of exception word list */
X  #define	NTAB	35	/* tab stops */
X  #define	NSO	5	/* "so" depth */
X***************
X*** 200,206
X  #define	NHYP	10	/* max hyphens per word */
X  #ifndef NHEX /* to allow setting this from the Makefile -- req */
X  #define	NHEX	128	/* byte size of exception word list */
X- #endif !NHEX
X  #define	NTAB	35	/* tab stops */
X  #define	NSO	5	/* "so" depth */
X  #ifdef WARWICK
X
X--- 147,152 -----
X  #define	DELTA	1024	/* delta core bytes */
X  #define	NHYP	10	/* max hyphens per word */
X  #define	NHEX	128	/* byte size of exception word list */
X  #define	NTAB	35	/* tab stops */
X  #define	NSO	5	/* "so" depth */
X  #define	WDSIZE	270	/* word buffer size */
X***************
X*** 203,212
X  #endif !NHEX
X  #define	NTAB	35	/* tab stops */
X  #define	NSO	5	/* "so" depth */
X- #ifdef WARWICK
X- #define	WDSIZE	960	/* word buffer size */
X- #define	LNSIZE	2960	/* line buffer size */
X- #else WARWICK
X  #define	WDSIZE	270	/* word buffer size */
X  #define	LNSIZE	680	/* line buffer size */
X  #endif WARWICK
X
X--- 149,154 -----
X  #define	NHEX	128	/* byte size of exception word list */
X  #define	NTAB	35	/* tab stops */
X  #define	NSO	5	/* "so" depth */
X  #define	WDSIZE	270	/* word buffer size */
X  #define	LNSIZE	680	/* line buffer size */
X  #define	NDI	5	/* number of diversions */
X***************
X*** 209,215
X  #else WARWICK
X  #define	WDSIZE	270	/* word buffer size */
X  #define	LNSIZE	680	/* line buffer size */
X- #endif WARWICK
X  #define	NDI	5	/* number of diversions */
X  #define	NTRTAB	350	/* number of items in trtab[] */
X  #define	NTRAP	20	/* number of traps */
X
X--- 151,156 -----
X  #define	NSO	5	/* "so" depth */
X  #define	WDSIZE	270	/* word buffer size */
X  #define	LNSIZE	680	/* line buffer size */
X  #define	NDI	5	/* number of diversions */
X  #define	NTRTAB	350	/* number of items in trtab[] */
X  #define	NTRAP	20	/* number of traps */
X***************
X*** 214,222
X  #define	NTRTAB	350	/* number of items in trtab[] */
X  #define	NTRAP	20	/* number of traps */
X  #define	NPN	20	/* numbers in "-o" */
X- #ifdef WARWICK
X- #define	FBUFSZ	1024	/* field buf size words */
X- #else WARWICK
X  #define	FBUFSZ	256	/* field buf size words */
X  #endif WARWICK
X  #ifdef BUFSIZ
X
X--- 155,160 -----
X  #define	NTRTAB	350	/* number of items in trtab[] */
X  #define	NTRAP	20	/* number of traps */
X  #define	NPN	20	/* numbers in "-o" */
X  #define	FBUFSZ	256	/* field buf size words */
X  #define	OBUFSZ	512	/* bytes */
X  #define	IBUFSZ	512	/* bytes */
X***************
X*** 218,228
X  #define	FBUFSZ	1024	/* field buf size words */
X  #else WARWICK
X  #define	FBUFSZ	256	/* field buf size words */
X- #endif WARWICK
X- #ifdef BUFSIZ
X- #define	OBUFSZ	BUFSIZ	/* bytes */
X- #define	IBUFSZ	BUFSIZ	/* bytes */
X- #else !BUFSIZ
X  #define	OBUFSZ	512	/* bytes */
X  #define	IBUFSZ	512	/* bytes */
X  #endif BUFSIZ
X
X--- 156,161 -----
X  #define	NTRAP	20	/* number of traps */
X  #define	NPN	20	/* numbers in "-o" */
X  #define	FBUFSZ	256	/* field buf size words */
X  #define	OBUFSZ	512	/* bytes */
X  #define	IBUFSZ	512	/* bytes */
X  #define	NC	256	/* cbuf size words */
X***************
X*** 225,231
X  #else !BUFSIZ
X  #define	OBUFSZ	512	/* bytes */
X  #define	IBUFSZ	512	/* bytes */
X- #endif BUFSIZ
X  #define	NC	256	/* cbuf size words */
X  #define	NOV	10	/* number of overstrike chars */
X  #define	NPP	10	/* pads per field */
X
X--- 158,163 -----
X  #define	FBUFSZ	256	/* field buf size words */
X  #define	OBUFSZ	512	/* bytes */
X  #define	IBUFSZ	512	/* bytes */
X  #define	NC	256	/* cbuf size words */
X  #define	NOV	10	/* number of overstrike chars */
X  #define	NPP	10	/* pads per field */
X***************
X*** 251,257
X  #define	VMOT	(01L<<16)	/* vert motion bit */
X  #define	NMOT	(01L<<17)	/* negative motion indicator*/
X  #define	MAXMOT	32767	/* bad way to write this!!! */
X! #define	ismot(n)	((unsigned short)(n) & MOT)	/* (short) is a cheap mask */
X  #define	isvmot(n)	((n) & VMOT)	/* must have tested MOT previously */
X  #define	isnmot(n)	((n) & NMOT)	/* ditto */
X  #define	absmot(n)	((unsigned short)(n) & ~MOT)	/* (short) is cheap mask */
X
X--- 183,189 -----
X  #define	VMOT	(01L<<16)	/* vert motion bit */
X  #define	NMOT	(01L<<17)	/* negative motion indicator*/
X  #define	MAXMOT	32767	/* bad way to write this!!! */
X! #define	ismot(n)	(unsigned)((n) & MOT)	/* (short) is a cheap mask */
X  #define	isvmot(n)	((n) & VMOT)	/* must have tested MOT previously */
X  #define	isnmot(n)	((n) & NMOT)	/* ditto */
X  #define	absmot(n)	(unsigned)(0177777 & (n) & ~MOT)	/* (short) is cheap mask */
X***************
X*** 254,260
X  #define	ismot(n)	((unsigned short)(n) & MOT)	/* (short) is a cheap mask */
X  #define	isvmot(n)	((n) & VMOT)	/* must have tested MOT previously */
X  #define	isnmot(n)	((n) & NMOT)	/* ditto */
X! #define	absmot(n)	((unsigned short)(n) & ~MOT)	/* (short) is cheap mask */
X  
X  #define	ZBIT	(01L << 31)	/* zero width char */
X  #define	iszbit(n)	((n) & ZBIT)
X
X--- 186,192 -----
X  #define	ismot(n)	(unsigned)((n) & MOT)	/* (short) is a cheap mask */
X  #define	isvmot(n)	((n) & VMOT)	/* must have tested MOT previously */
X  #define	isnmot(n)	((n) & NMOT)	/* ditto */
X! #define	absmot(n)	(unsigned)(0177777 & (n) & ~MOT)	/* (short) is cheap mask */
X  
X  #define	ZBIT	(01L << 31)	/* zero width char */
X  #define	iszbit(n)	((n) & ZBIT)
X***************
X*** 264,273
X  #define	SFMASK		(SMASK|FMASK)	/* size and font in a tchar */
X  #define	CMASK		~MOT		/* clears MOT */
X  #define	CMASKL		077777L
X! #define	sbits(n)	((unsigned short)((n) >> 24) & 0177)
X! #define	fbits(n)	((unsigned short)((n) >> 16) & 0377)
X! #define	sfbits(n)	((unsigned short)(((n) & SFMASK) >> 16))
X! #define	cbits(n)	(unsigned short)(n)	/* isolate bottom 16 bits  */
X  #define	setsbits(n,s)	n = (n & ~SMASK) | (tchar)(s) << 24
X  #define	setfbits(n,f)	n = (n & ~FMASK) | (tchar)(f) << 16
X  #define	setsfbits(n,sf)	n = (n & ~SFMASK) | (tchar)(sf) << 16
X
X--- 196,205 -----
X  #define	SFMASK		(SMASK|FMASK)	/* size and font in a tchar */
X  #define	CMASK		~MOT		/* clears MOT */
X  #define	CMASKL		077777L
X! #define	sbits(n)	(((n) >> 24) & 0177)
X! #define	fbits(n)	(((n) >> 16) & 0377)
X! #define	sfbits(n)	(unsigned)(0177777 & (((n) & SFMASK) >> 16))
X! #define	cbits(n)	(unsigned)(0177777 & (n))	/* isolate bottom 16 bits  */
X  #define	setsbits(n,s)	n = (n & ~SMASK) | (tchar)(s) << 24
X  #define	setfbits(n,f)	n = (n & ~FMASK) | (tchar)(f) << 16
X  #define	setsfbits(n,sf)	n = (n & ~SFMASK) | (tchar)(sf) << 16
X***************
X*** 284,292
X  
X  #define	PAIR(A,B)	(A|(B<<BYTE))
X  
X- #ifdef ALIGNFIXES
X- typedef long filep;
X- #else !ALIGNFIXES
X  typedef unsigned filep;
X  #endif ALIGNFIXES
X  #define	BLK	128	/* alloc block tchars */
X
X--- 216,221 -----
X  
X  #define	PAIR(A,B)	(A|(B<<BYTE))
X  
X  typedef unsigned filep;
X  #define	BLK	128	/* alloc block tchars */
X  #define	NBLIST	1024	/* allocation list */
X***************
X*** 288,294
X  typedef long filep;
X  #else !ALIGNFIXES
X  typedef unsigned filep;
X- #endif ALIGNFIXES
X  #define	BLK	128	/* alloc block tchars */
X  #define	NBLIST	1024	/* allocation list */
X  /* previous values were BLK 256 NBLIST 512 */
X
X--- 217,222 -----
X  #define	PAIR(A,B)	(A|(B<<BYTE))
X  
X  typedef unsigned filep;
X  #define	BLK	128	/* alloc block tchars */
X  #define	NBLIST	1024	/* allocation list */
X  /* previous values were BLK 256 NBLIST 512 */
X***************
X*** 308,323
X  extern	tchar	setz();
X  extern	tchar	setch(), absch();
X  extern	tchar	setht(), setslant();
X- #ifdef REPORTERRS
X- extern
X- #ifdef LINTSTUFF
X- void
X- #endif LINTSTUFF
X- done(), done1(), done2(), done3(), edone();
X- /* cleanup functions now passed as a parameter to errmsg() */
X- /* I don't quite understand why there are so many! */
X- /* - req	*/
X- #endif REPORTERRS
X  
X  #define	atoi(i)		((int) atoi0(i))
X  extern	long	atoi0();
X
X--- 236,241 -----
X  extern	tchar	setz();
X  extern	tchar	setch(), absch();
X  extern	tchar	setht(), setslant();
X  
X  #define	atoi(i)		((int) atoi0(i))
X  extern	long	atoi0();
X***************
X*** 348,351
X  extern int	c_lefthand;
X  
X  extern int	stderr;	/* this is NOT the stdio value! */
X- #include "local.h"
X
X--- 266,268 -----
X  extern int	c_lefthand;
X  
X  extern int	stderr;	/* this is NOT the stdio value! */
XOnly in titroff: troff.doc
XOnly in /distribution/dwb/text/troff.d: troff.mk
XOnly in /distribution/dwb/text/troff.d: troff.sh
XOnly in titroff: tw.h
Xdiff -rbc titroff/v.h /distribution/dwb/text/troff.d/v.h
X*** titroff/v.h	Mon Oct 13 22:37:52 1986
X--- /distribution/dwb/text/troff.d/v.h	Fri Sep  9 18:47:33 1983
X***************
X*** 1,3
X  struct v {int pn,nl,yr,hp,ct,dn,mo,dy,dw,ln,dl,st,sb,cd,pid;
X  #ifdef WARNLEVELREG
X  	int wl;	/* warning level -- req */
X
X--- 1,3 -----
X+ /*      @(#)v.h	1.1     */
X  struct v {int pn,nl,yr,hp,ct,dn,mo,dy,dw,ln,dl,st,sb,cd,pid;
X  	int vxx[NN-NNAMES];} v ;
X***************
X*** 1,8
X  struct v {int pn,nl,yr,hp,ct,dn,mo,dy,dw,ln,dl,st,sb,cd,pid;
X- #ifdef WARNLEVELREG
X- 	int wl;	/* warning level -- req */
X- #endif WARNLEVELREG
X- #ifdef EVREG
X- 	int ev;	/* number of current env --- starts as 0 */
X- #endif EVREG
X  	int vxx[NN-NNAMES];} v ;
X
X--- 1,3 -----
X  /*      @(#)v.h	1.1     */
X  struct v {int pn,nl,yr,hp,ct,dn,mo,dy,dw,ln,dl,st,sb,cd,pid;
X  	int vxx[NN-NNAMES];} v ;
XOnly in titroff: x.c
SHAR_EOF
if test 59948 -ne "`wc -c < 'diffd'`"
then
	echo shar: error transmitting "'diffd'" '(should have been 59948 characters)'
fi
fi # end of overwriting check
#	End of shell archive
exit 0
-- 
ARPA		req%uu.warwick.ac.uk at ucl-cs.arpa
EARN/BITNET	req%UK.AC.WARWICK.UU at AC.UK
JANET		req at uk.ac.warwick.uu
UUCP		seismo!mcvax!ukc!warwick!req  (req at warwick.UUCP)
PHONE		+44 203 523485
For mail.frplist, use "frplist" instead of "req" in the above lines.
The BITNET path only works from sites that have AC.UK in their tables.  Sorry.



More information about the Comp.sources.unix mailing list