🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: comp.sources.atari.st
Article #125

v03i090: nroff110pat -- Patch for Nroff 1.10

#125
From: Steven Grimm
Date: Tue, 14 Aug 1990 21:05
176 lines
4836 bytes
Submitted-by: rosenkra%c1yankee@convex.com (Bill Rosenkranz)
Posting-number: Volume 3, Issue 90
Archive-name: nroff110pat

This is patch 1 for nroff v1.10 for atari/TOS (diff -c files below, no shar,
they are small).

Note: there is a GNU version of troff (groff). Most likely it will not fit
under minix, but it should work under TOS. It will probably need gcc to
compile, however. I have not tried this. It comes with tbl, eqn, and pic,
I believe.

Note: if you wish to compile nroff under TOS, you will need ctype (isalpha,
isspace, islower, isdigit, isprint), stdio (of course), strings (strncmp,
strcmp, strlen, strcpy, strcat, atoi, tolower), abs (macro normally), and
unix compatible versions of getenv(3), time(3), and ctime(3). Most compilers
support these, or you could get the PD/sharewhare (???) dLibs package which
is very good. For unix, you will also need tgetstr(3) from termcap (or
terminfo). I use Alcyon 4.14 with my own libc.a. There is also a single call
to GEMDOS Cconin (to support the -h option).

Note: if you feel up to making changes to this nroff, pls mail the changes
to me in "diff -c" format so I can try and keep this version up to date.

This patch adds the "-raN" switch to the command line to preset a (single
char) number register (a) to decimal integer value N. In this version of
nroff, there are only single char (user) number registers and case is
ignored (thus there are 26 number registers besides the preset ones).

To test, the following file (I called it "nr.nr"):

	% cat nr.nr
	.\" file: nr.nr
	.\" test "nroff -raN ..." (set number register)
	.pl 20
	register a = \na
	.br
	register b = \nb
	.br
	register c = \nc
	.br
	register d = \nd
	.br
	register e = \ne
	.br
	register f = \nf
	.br
	register g = \ng
	.br
	register h = \nh
	.br
	register i = \ni
	.br
	register j = \nj
	.br

when used as follows:

	% nroff -rc10 -rg20 nr.nr >xxx

produces the following output (file xxx):

	% cat xxx





	register a = 0 
	register b = 0 
	register c = 10 
	register d = 0 
	register e = 0 
	register f = 0 
	register g = 20 
	register h = 0 
	register i = 0 
	register j = 0 







----------------------------------------------------------------------------
Here are the diffs for this simple fix to add this new feature. Fixes source
file main.c (function "pswitch") and manpage nroff.man. There are only a
couple of lines to add, so I did not think I needed a shar file for this:


*** old\main.c  Sun Jul 22 12:28:24 1990
--- main.c  Tue Jul 24 03:43:34 1990
***************
*** 687,692 ****
  	int     swgood;
  	char    mfile[256];
  	char   *ptmac;
  
  	swgood = TRUE;
  	if (*p == '-')
--- 687,694 ----
  	int     swgood;
  	char    mfile[256];
  	char   *ptmac;
+ 	int	indx;
+ 	int	val;
  
  	swgood = TRUE;
  	if (*p == '-')
***************
*** 838,843 ****
  				p++;
  				set (&pg.offset, ctod (p), '1', 0, 0, HUGE);
  				set_ireg (".o", pg.offset, 0);
  			}
  			break;
  
--- 840,865 ----
  				p++;
  				set (&pg.offset, ctod (p), '1', 0, 0, HUGE);
  				set_ireg (".o", pg.offset, 0);
+ 			}
+ 			break;
+ 
+ 		case 'r':				/* set number reg */
+ 		case 'R':
+ 			if (!isalpha (*(p+1)))
+ 			{
+ 				fprintf (stderr,
+ 					"***%s: invalid number register name (%c)\n",
+ 					myname, (int) *(p+1));
+ 			}
+ 			else
+ 			{
+ 				/*
+ 				 *   indx is the user num register and val
+ 				 *   is the final value.
+ 				 */
+ 				indx = tolower (*(p+1)) - 'a';
+ 				val  = atoi (p+2);
+ 				set (&dc.nr[indx], val, '1', 0, -INFINITE, INFINITE);
  			}
  			break;
  




*** old\nroff.man  Tue Jul 24 03:58:52 1990
--- nroff.man  Tue Jul 24 03:58:16 1990
***************
*** 33,38 ****
  no immediate output should be generated from this file (see ENVIRONMENT).
  .IP -o<file>
  Set error log file (default is stderr).
  .IP -po<n>
  Shift output right n spaces (like .po).
  .IP -pn<n>
--- 33,40 ----
  no immediate output should be generated from this file (see ENVIRONMENT).
  .IP -o<file>
  Set error log file (default is stderr).
+ .IP -raN
+ Preset number register 'a' (single character) to N (decimal integer only).
  .IP -po<n>
  Shift output right n spaces (like .po).
  .IP -pn<n>




Enjoy...

-bill rosenkranz
rosenkra%c1yankee@convex.com
Technical Details
Message-ID: <2959@male.EBay.Sun.COM>
Path: arc1-ca.pugleaf.net!wuarchive!cs.utexas.edu!sun-barr!newstop!male!panarthea.ebay.sun.com

Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!wuarchive!cs.utexas.edu!sun-barr!newstop!male!panarthea.ebay.sun.com
From: koreth@panarthea.ebay.sun.com (Steven Grimm)
Newsgroups: comp.sources.atari.st
Subject: v03i090: nroff110pat -- Patch for Nroff 1.10
Keywords: diff
Message-ID: <2959@male.EBay.Sun.COM>
Date: 14 Aug 90 21:05:05 GMT
Sender: news@male.EBay.Sun.COM
Reply-To: rosenkra%c1yankee@convex.com (Bill Rosenkranz)
Lines: 176
Approved: koreth@panarthea.ebay.sun.com