Subversion Repositories planix.SVN

Rev

Rev 2 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 - 1
March 11, 1994
2
 
3
	If we are just plain old nroff (and not doing UNICODE) we should
4
	only Lookup characters, not Install when we don't know them.
5
	If we are troff, we Install them anyway
6
 
7
March 8, 1994
8
 
9
	Nroff had problems with parsing quoted white space as options or
10
	character code in some terminals tables. Changed by having scanf
11
	include white space when necessary as suggested by Rich.
12
 
13
March 1, 1994
14
 
15
	Made sanity check for terminal type depending on the trace level;
16
	trace level set with -tn flag at start up
17
 
18
22 Feb, 1994
19
 
20
	More pointer shuffling fixes.
21
 
22
18 Feb, 1994
23
 
24
	More disabling of multibyte stuff. Fixed bug in n5.c: casetm didn'
25
	know about the new format in the fontables.
26
 
27
Feb 17, 1994
28
 
29
	Removed extra include <setlocale> from n1.c
30
 
31
	Fixed dubious pointer shuffling in n7.c, t10.c & n8.c. Thanks Rich!
32
 
33
Feb 10, 1994
34
 
35
	Disabled the multybyte stuff; only plan 9 will get it.
36
 
37
Jan 24, 1994
38
 
39
	Fixed nasty bug discovered by td, which caused core dumps on
40
	\D'l-0.002775i 0i' and apparently all numbers closer to 0
41
	than -.002775. Fixed in storeline() and storeword() (n7.c).
42
 
43
Dec 16, 1993
44
 
45
	nroff & troff -N were looking for the TYPESETTER variable, causing
46
 
47
	troff: cannot open /sys/lib/troff/term/tab.202; line 1, file stdin
48
 
49
	fixed my moving getenv("TYPESETTER") to t10.c in t_ptinit(void).
50
 
51
Dec 3, 1993:
52
 
53
	The sequence \s+2\H'+10' came sometimes out in the wrong order
54
	(x H before s), so there wasn't a difference bewteen \s+2\H'+10'
55
	and \H'+10'\s+2. Now the fonts bits of the CHARHT are used to
56
	register the current pontsize, so we can issue a s10 in t10.c
57
	if needed. A bit sneaky.
58
 
59
	Try to prevent double slashes in path names. Especially under
60
	plan9 things started to look ugly.
61
 
62
	Exception word list now grows dynamic.
63
 
64
Nov 30, 1993:
65
 
66
	Allow multiple calls to .pi, requested by Rob.
67
		.pi cat
68
		.pi dogs
69
	is now equivalent with
70
		.pi cat | dogs
71
 
72
 
73
	.ab now takes also optional error code:
74
		.ab [n] [string]
75
	If n and string, n is exit code, string is message
76
	If n, n is exit code, ``User Abort, exit code n" is message
77
	If !n and string, standard exit code, string is message
78
	If !n and ! string, standard exit code, "User Abort" is message
79
 
80
Nov 24, 1993:
81
 
82
	Reordered code to keep the UNASNI scripts happy.
83
 
84
	Nroff dumped core reading terminal tables: apparenty under plan 9,
85
	scanf includes the '\n'; added test for '\0' in parse in n10.c.
86
 
87
	Relative tab settings (.ta +1C +2C) didn't work; anding the
88
	previous value with TABMASK fixes this (caseta).
89
 
90
Nov 23, 1993:
91
 
92
	Included code, originally done by bwk for plan 9, to handle
93
	multi-byte characters.
94
 
95
Nov 3, 1993:
96
 
97
	``pair internal'' two char names by shifting 16 bits. Will allow
98
	the use of 16 bit characters sets (Unicode in plan9 etc.) for
99
	macro's etc.
100
 
101
Oct 20, 1993:
102
 
103
	Word & line buffers are now dynamic: No more word or line overflow
104
	unless when we run out of memory.
105
 
106
Oct 11, 1993:
107
 
108
	lost diversion warning pops up regularly with man macro's. Due
109
	to a possible macro coding problem. Triggered by something like
110
	troff -man:
111
		.TP
112
		.TP
113
		foo
114
		.ex
115
    	Minimal code:
116
		.di aa
117
		throw away this diversion (aa) while being defined.
118
		.rm aa
119
		.br
120
		.di
121
 
122
	Fixed by disallowing .rm to throw away current diversion. The
123
	rn request will complain with:
124
 
125
		cannot remove diversion aa during definition; etc.
126
 
127
Sep 29, 1993:
128
 
129
	Some long standing fixes which never went back in the source.
130
	Thanks to Janet & Rich.
131
 
132
Sep 28, 1993:
133
 
134
	Changed getach() (n1.c), so it does't consider truncated
135
	special characters as (8-bit) ascii.  STX ETX ENQ ACK and BELL
136
	are still allowed for the ultimate backwards compatibility.
137
 
138
	Some code changes, so real ANSI compilers like the SGI version
139
	(acc from Sun is a poor excuse for an ANSI compiler) don't
140
	barf.  Some compromises (static Tchar wbuf in n9.c) allowed so
141
	the unansified stuff for non-ansi compilers (cc on Sun's) will
142
	work as well.
143
 
144
Sep 9, 1993:
145
 
146
	Be nice to Gerard. Now also word spaces in .tl and after
147
	tabs/fleids etc.
148
 
149
Aug 12, 1993:
150
 
151
	Tabs setting can now be humongous. We also allow 99 tabs to
152
	accomodate tbl. As a side effect, NTM buffers are now 1K
153
 
154
Aug 11, 1993:
155
 
156
	.R register, now contains maximum number of addessable
157
	registers minus the number actually used.
158
 
159
	Small esthetic changes in error messages; removed a statement
160
	which wasn't reached anyway.
161
 
162
Aug 10, 1993:
163
 
164
	Some more speed hacks: be smarter doing the linear table
165
	lookups in alloc() and finds().
166
 
167
	The real name of the det diversion size macro is now gd.
168
 
169
Aug 9, 1993:
170
 
171
	A much faster way to find the end of a string/macro, by
172
	remembering that when defined.
173
 
174
Aug 6, 1993:
175
 
176
	 Slightly more eficient way of skipping to the end of a
177
	 string/macro
178
 
179
Aug 5, 1993:
180
 
181
	Prevent character sign extension for 8-bit charnames diversions
182
	etc. by unpair
183
 
184
Aug 4, 1993:
185
 
186
	Growing the dynamical macro/strings name space and registers
187
	space (See the experiment of 21 July) now with bigger
188
	increments. Casts added to satisfy non-ANSI compilers.
189
 
190
Aug 3, 1993:
191
 
192
	Should check return value in alloc (n3.c), to prevent core dump
193
	when memory gets tight.
194
 
195
July 28, 1993:
196
 
197
	New request: .sg <div> sets the dn and dl registers to the size
198
	of the diversion named in the argument. Doesn't do anything
199
	when the named diversion doesn't exist. The name sg is
200
	temporary until we find a better one.
201
 
202
July 21, 1993:
203
 
204
	Experiment: Macro space  & registers name allocated
205
	dynamically. Note that current reallocation occurs in
206
	increments of 1, to force the code to be executed a lot; a kind
207
	of stress testing. Also, eight bit characters allowed in
208
	macro/string names.
209
 
210
July 21, 1993:
211
 
212
	Turn on the escape mode if the end macro is called.
213
 
214
July 20, 1993:
215
 
216
	Tracing mode now default off
217
 
218
	Don't print s stackdump either when a file specfied on the
219
	command line argument cannot be opened
220
 
221
July 15, 1993:
222
 
223
	Don't print useless line & current file informations when a
224
	file specfied on the command line argument cannot be opened.
225
 
226
	Sun ansi compiler doesn't default adhere to standards. Undid
227
	the kludge in tdef.h
228
 
229
July 14, 1993:
230
 
231
	Coding error made the tab type R not function properly
232
 
233
July 12, 1993:
234
 
235
	Fixed a typo in the version stuff, noticed by Rich
236
 
237
July 9, 1993:
238
 
239
	Added the dwb home configuration stuff, thanks RIch. Also,
240
	NCHARS is big enough. Added a fflush to casetm, so .fm <file>
241
	will be up to date.
242
 
243
June 25, 1993 (Rich):
244
 
245
    -t option
246
 
247
	reinstated for the sake of compatibility. Some old
248
	shells scripts and man(1) from SunOs want this, sigh
249
 
250
    Compiler and system dependencies
251
 
252
	Some systems pull in sys/types.h via #include <time.h> and then
253
	the compiler complains about two ushort typedefs. Therefore,
254
	ushort is now Ushort (and uchar Uchar).
255
 
256
	The SVID specifies a strdup, POSIX doesn't, anyway, troff
257
	provides its own version, slightly different then the standard
258
	one. A To prevent name clashes with that definion, renamed to
259
	strdupl.
260
 
261
June 24, 1993 (Rich):
262
 
263
	-V option added for DWB3.4 (rich)
264
 
265
May 18, 1993:
266
 
267
    Trivial fix (.cf) request for troff -a 
268
 
269
	issuing
270
 
271
		.cf /dev/null
272
 
273
	with troff -a gives some spurious output:
274
 
275
		H720
276
		H720
277
		s10
278
		f1
279
 
280
	fixed  by checking for ascii mode it ptesc(), ptps() and
281
	ptfont() in t10.c
282
 
283
 
284
    Enhancement
285
 
286
	Added a .tm request to roff. Works just like .tm, but now
287
	it will do it to file. The name is coined by Carmela. Great
288
	for creating indeces & toc's (we hope).
289
 
290
May 18 1993:
291
 
292
    Compatibilty change
293
 
294
	Somebody complained that his favorite macro didn't work:
295
	it had a BELL (^G) in the name.  This was a non-documented
296
	feature of earlier versions of troff (although the
297
	documentation actually doesn't say that you can. (They can
298
	only be used for delimiters or with the tr request), so it
299
	isn't that important).
300
 
301
	But the sake of eternal backward compatibilaty I allowed
302
	some control characters like, STX, ACK,  etc. also be part
303
	of a macro/string name.
304
 
305
	While at it, I made it also possible to have eight bit
306
	characters be part of the name. It might be that this screws
307
	up the way users think about these things. For UNICODE
308
	versions, they probably want to do that as well, and that
309
	won't work as easy, (because these characters are 16-bits
310
	wide), so it is dubious whether we actually want this.
311
 
312
	BTW. Now
313
 
314
		.de \(ts\ts
315
		.tm terminal sigma macro
316
		..
317
		.\(ts\(ts
318
 
319
	also works, as long the internal cookie for ts isn't more then
320
	eight bits.
321
 
322
May 12, 1993:
323
 
324
    Syntax change
325
 
326
	Some requests accept tabs as a separator, some don't and
327
	this can be a nuisance.  Now a tab is also recognized as
328
	an argument separator for requests, this makes
329
 
330
		.so	/dev/null
331
 
332
	works.
333
 
334
	To be more precise, any motion character is allowed, so
335
 
336
		.so\h'5i'/dev/null
337
 
338
	will work as well, if one really wants that.
339
 
340
	It will be a problem for users who really relied on this as in
341
 
342
		.ds x	string
343
 
344
	and expect the tab to become part of the string a, but I haven't
345
	seen any use of that (obscure trick).
346
 
347
May 6, 1993:
348
 
349
    Eileen count fixed
350
 
351
	Troff sometimes went in a loop, and exited with: ``job
352
	looping; check abuse of macros'' (also known as the Eileen's
353
	loop). It can be forced with the next trivial programme:
354
 
355
		.de ff
356
		.di xx
357
		..
358
		.wh -1 ff
359
		.bp
360
 
361
	Basically what happens is that a page transition now will
362
	happen in a diversion, which doesn't make sense. Wat really
363
	happens is that eject() (in n7.c) doesn't eject the frame
364
	because we are in a diversion.  This cause the loop in n1.c
365
	(because now always stack->pname <= ejl). Adding check on
366
	whether we are not in a diversion takes care of the problem.
367
 
368
March 30, 1993:
369
 
370
    Need request, .ne
371
 
372
	When there is a begin of page trap set, and the first thing
373
	in the file is a .ne request, the trap gets fired, but,
374
	the x font R etc. cookies doen't come out, because the
375
	troff thinks that the first page pseudo transition already
376
	took place.  Fixed by forcing the start of the first page
377
	in the casene request with the same code as in casetl (which
378
	caused a similar problem quite some time ago).
379
 
380
    Change to .cf request ``Here document''
381
 
382
	If the argument of .cf starts with a <<, the rest of it is taken
383
	as an EOF token. It will reat the rest of the input until it hits
384
	the EOF token and copies it to the output. This is similar as
385
	the shell's ``here document'' mechanisme and put in place to
386
	improve the kludgy way picasso, picpack etc. now include
387
	postscript.
388
 
389
    Using troff -TLatin1 (DWB version) and \N'...' caused core dump
390
 
391
	In t11, in chadd, it should test on NCHARS - ALPHABET to see
392
	whether we run out of table space (and we probably should beaf
393
	up NCHARS for the DWB version).
394
 
395
March 16, 1993:
396
 
397
    Diversion rename bug fix
398
 
399
	It is possible to get troff in an infinite loop by renaming a
400
	diversion in progress, and calling it later with the
401
	new name (as in .di xx, .rn xx yy, .yy). The effect depends on
402
	whether troff already put stuff in the diversion or not.
403
 
404
	Fix by having .rn also rename the current diversion (if
405
	there is any and when appropriate).  If the diversion calls
406
	itself by the new name and given the fix made on 11 nov
407
	1992, this will now result in an error.  (BTW, the fix from
408
	11 nov is improved: diversions nest, so we have to account
409
	for that).
410
 
411
December 18, 1992:
412
	Some people have complete novels as comments, so we need
413
	to skip comments while checking the legality of font files.
414
	thaks Rixh
415
 
416
December 16, 1992
417
 
418
	Some people rely on the order that -r arguments are given,
419
	so that troff -rC1 -rC3 ends up setting register C to 3.
420
	Because cpushback() pushes things in a LIFO order back, we
421
	have to do the same to get -r args in a FIFO order.
422
 
423
Nov 17, 1992:
424
 
425
	Giving a -rL8 option cuased the string .nr L 8 to be printed
426
	on the output, using the wonderful 3b2. Some garbage was
427
	left in buf[100] in main(). Fixed by setting buf[0] explicitly
428
	to 0 (because some C-compilers complain about ``no automatic
429
	aggregate initialization'').
430
 
431
Nov 11, 1992:
432
 
433
    Diversion bug fix
434
 
435
	If a diversion was being read and the input is faulty so
436
	the diversion was reading in itself, it caused troff to
437
	loop undefinitely. This was easily fixed by a test in
438
	control(a,b) in n1.c.
439
 
440
	Something similar things might happen with macros causing
441
	the ``eileenct problem'', but I didn't look for that. We
442
	have to wait until it happens.
443
 
444
Oct 26, 1992:
445
 
446
    Numeric arguments:
447
 
448
	Illegal argments are treated as missing arguments. This
449
	changed the semantics of .ll, .ls, .in, .lg,  .ul, .cu .lt
450
	(which acted as if the argument was 0) and .ps which was
451
	simply ignored with an illegal argument.
452
 
453
	Tidied up number parsing in atoi1(). This prevents arguments
454
	like .x or 1.2.3.4 being interpret as a legal number (nonumb = 0)
455
 
456
    Numeric arguments error reporting:
457
 
458
	Controlled by .pt, illegal numbers are now reported (default
459
	trace mode is 1).  This is also true for the escapes:
460
	\h'..', \v'..' \H'..', \S'..', \N'..', \D'..', \l'.., \L'..
461
	and \x'..'.
462
 
463
	\D'c' is the only drawing request which doesn't take a pair
464
	of numbers as arguments, so a special case is put here in
465
	setdraw() (This code actually could use an overhaul to get
466
	better parsing. As long as the \D'..' cookies are machine
467
	generated it is low on the priority list).
468
 
469
	Don't generate an error if the illegal argument to a request
470
	is a \}. It is too painful to do right (although it can be
471
	done, but it would clutter getch() and getcho() even more).
472
 
473
    Input line numbers (.c register) bug fixes:
474
 
475
	In not taken branches of .if or .ie, the input line #
476
	(numtab[CD].val) should be raised when necessary (in eatblk()).
477
 
478
	For concealed newlines, we still should count the line for input.
479
 
480
	Setfield (n9.c) sometimes pushes the rest of the line back to
481
	the input (including \n), without adjusting numtab[CD].val
482
 
483
	Because .c (and so numtab[CD].val) is the number of lines read
484
	and the error might actually happen in the current line
485
	(before seeing the '\n), we need to apply correction in
486
	errprint when nlflg set. (This correction needs to be undone
487
	when inside a macro because the nlflg is set by reading the
488
	args to the macro).
489
 
490
    Line number setting (.lf) request bug fixes:
491
 
492
	I interpret that the .c register will contain the number of
493
	read lines, not including the current one.
494
 
495
	Also, don't change the input line number when the first
496
	argument of .lf is not a number.
497
 
498
	As a net effect, the next input
499
 
500
		.EQ
501
		.EN
502
		.ab
503
 
504
	will generate the same output whether eqn has been used or not.
505
 
506
    If request bug fix:
507
 
508
	A ``.if page .tm foo'' caused the next line being ignored;
509
	This bcause when the 2nd delimiter of a string couldn't be
510
	found in cmpstr, the next line was always eaten. Solution:
511
	in caseif1, if the condition is false, we should check
512
	nlflg before eating a block.  (Note: We might have eaten
513
	\{\ as well.  We could disallow the \{\ in a string to be
514
	compared to prevent that but that might break other things).
515
 
516
    Enhancement to .pt:
517
 
518
	The .pt now pops the previous values when no argument is
519
	specified. Turned out to be handy when chasing for problems.
520
	Just ``bracked'' the code with .pt 7 and .pt and you get
521
	a trace of only that block. The meaning of the arguments
522
	is now:
523
		01      trace numeric arguments (default on)
524
		02	trace requests
525
		04	trace macros
526
 
527
    Abort request (.ab) beautification:
528
 
529
	Don't print the extra carriage return when .ab is called
530
	without an argument.
531
 
532
Oct 12, 1992:
533
 
534
	(Comments & spelling errors from this day on by jaap)
535
 
536
	replaced 32767 by INT_MAX in several places to allow for very
537
	long pages (on 32-but machines).
538
 
539
	The ``.fp 1 R   \"COMMENT'' complains about ``./troff: Can't
540
	open font file /usr/lib/font/devpost/h'' on some systems. It
541
	sees the tab as part of the optional font file.  Apparently it
542
	is system dependent whether isgraph() includes the tab
543
	character.  Fixed by using getach() in getname() in n1.c
544
	instead.
545
 
546
Aug 28, 1992:
547
	removed call to popi from rdtty();  it was eating up the
548
	rest of the macro if it was used from within one.  (thanks, jaap)
549
 
550
 
551
Jul 21, 1992:
552
	added extra test in nextfile() to pop current input file
553
	only if not in .nx command.  thanks to jaap.
554
 
555
	added test in getword() to avoid hyphenating after \z character,
556
	which prevents any hyphenation inside \X'...'.  thanks to jaap.
557
 
558
	added, then removed, code in getword() to prevent hyphenating
559
	anything shorter than 6 characters.  looks like it changed a
560
	lot more than i thought.
561
 
562
Jul 12, 1992:
563
	added .pt request to trace macros and requests (from jaap).
564
	.pt N Print trace of macros (N=1), requests (N=2) or both (N=3)
565
 
566
Jun 5, 1992:
567
	added tests to t.twrest and t.twinit to avoid 0 deref in
568
	n2 and n10, for nroff -t xxxxx.  thanks to Rich Drechsler.
569
 
570
May 22, 1992:
571
	added extern decls to e.g., void Tchar (*hmot)(void) in tdef.h
572
	and added definition to ni.c, so pointers are defined explicitly.
573
	makes it work on turbo c++ and probably others.
574
 
575
	changed a couple of isdigit's and isgraph(getch()) to avoid
576
	multiple evaluation (even though it shouldn't happen).
577
 
578
	Made /usr/bin/nroff a shell script.
579
 
580
May 12, 1992:
581
	n1.c: need p++ after strrchr to skip / in program name.
582
	thanks to Rich Drechsler.
583
 
584
Apr 17, 1992:
585
	casefi(), n5.c: .u register should be 0 or 1, not incremented
586
	with each .fi.
587
 
588
Apr 5, 1992:
589
	fiddled n7.c and added _nmwid to the environment, to add a
590
	5th argument to .nm:  the maximum number of digits in any
591
	line number.  default is 3, which was previously hardwired in.
592
 
593
	added jaap's code for yet another register which actually delivers
594
	a string, called .S (so it can easily go in the switch in setn()
595
	in n4.c); it delivers the current tabstop and alignment modes in
596
	a format suitable for a subsequent .ta \n(.S command:
597
		.ds T \n(.S
598
		...
599
		.ta \*T
600
 
601
Mar 30, 1992:
602
	added test in getword to avoid hyphenating things with motions
603
	(and avoid a core dump sometimes too).
604
 
605
Mar 13, 1992:
606
	\n(sb initialized wrong in setwd().
607
 
608
	TYPESETTER=foo troff -Tpost used foo instead of post.
609
 
610
Mar 12, 1992:
611
	rearranged tests in popf so that .so is closed properly before
612
	moving on to the next macro package.
613
 
614
Mar 1, 1992:
615
	input mechanism rearranged to use getc() instead of stack of
616
	explicit input buffers.  5-10% slowdown.
617
 
618
Jan 28, 1992:
619
	fixed .tm \(mi to print something sensible.  thanks to jaap.
620
 
621
Jan 2, 1992:
622
	fiddle setfp so doesn't put out font stuff if -a turned on.
623
 
624
Dec 17, 1991:
625
	copy 3rd argument in .fp commands to x font ... lines when it contains
626
	a /, for testing fonts locally.
627
 
628
Dec 13, 1991:
629
	parameterize the font directories, etc., so can be set in makefiles.
630
	added -N argument to run as nroff.
631
 
632
Nov 8, 1991:
633
	add a maplow(towlower...) in n8.c to handle brain-damaged libraries.
634
 
635
Nov 2, 1991:
636
	merged nroff into troff, based on Ken's plan 9 version.
637
	merged nii.c into ni.c, removed tw.h, etc.  more work needed
638
	to make this stuff cleaner.
639
 
640
July 27, 1991:
641
	added test in setn in n4 to fix bug that permitted things like
642
	\n (ab to work "properly".  thanks to jaap for finding and fixing.
643
 
644
	added paranoid testing in t11 to make sure font files look ok.
645
 
646
May 13, 1991:
647
	moved evaluation of \(xx from copy mode to non-copy mode, so that
648
	weird character names wouldn't get reevaluated in argument parsing.
649
	installed july 27.
650
 
651
May 6, 1991:
652
	increased size of hyphenation exception buffer to 512 from 128
653
 
654
Apr 14, 1991:
655
	added an extra redundant call of ptfont in setfp, since it appears
656
	that some versions of adobe transcript assume that an "x font" command
657
	means to change the actual font as well.  the fix preserves the current font.
658
	thanks to david brailsford and friends for spotting the problem.
659
 
660
	fixed up tests in alpha() in n8 to defend isalpha() against too-big inputs.
661
	punct() argument had wrong type too.  thanks to rich drexler and peter nelson.
662
 
663
Mar 19, 1991:
664
	fixed bug that prevented .rd from working with new corebuf organization.
665
 
666
	fixed bug that caused .ig inside diversions to give bad storage
667
	allocation.  thanks to arthur david olson, whose fix was on netnews
668
	3 years earlier.
669
 
670
Mar 5, 1991:
671
	huge table sizes for kanji.
672
 
673
Feb ??, 1991:
674
	working on dealing with large alphabets, notably kanji.
675
	added "defaultwidth" to font descriptions, for characters
676
	not given an explicit width.
677
 
678
Jan, 1991:
679
	added tex hyphenation, using standard tex data files, but not the
680
	elaborate compressed trie, which is a lot of trouble to save maybe
681
	40k bytes.  this appears to run at exactly the same speed as before.
682
 
683
	so far this stuff reads into a fixed size array; that should change.
684
	it should also be possible to deal with multiple languages.
685
 
686
	the command .ha sets the algorithm.  .ha 1 => tex, with troff rules
687
	if tex doesn't hyphenate;  .ha 0 gives troff rules, and .ha resets
688
	to the default, which is tex.  the hyphenation algorithm is part of
689
	the environment, a nod to a future in which i handle more than one
690
	language.
691
 
692
	replaced the fixed size corebuf array for string/macro storage by
693
	a dynamic structure that can grow.
694
 
695
	this appears to slow things down by maybe 3%.  the code is about
696
	the same complexity.
697
 
698
Dec 27, 1990:
699
	converted to ansi c, based on some work by ken thompson, but not
700
	as thoroughly as he did.  there is a shell script unansi and an awk
701
	program cvt that will help you step back in time if you do not have
702
	an ansi c compiler.
703
 
704
	moved the special-name characters up to 256 instead of 128, although
705
	done in terms of ALPHABET, so one can pass 8 bit characters through.
706
	removed lots of 0177's and similar numbers.  input is now not filtered,
707
	and if a character with the 8th bit on comes in, it will go out again.
708
 
709
	fixed t11.c to read character names in hex or octal as well as
710
	single-character ascii.
711
 
712
	unknown characters are now carried through with width = spacewidth.
713
	needs a way to set widths.
714
 
715
	removed all signal handling from troff.  you signal, you die.
716
 
717
	added -d option to print version number.
718
 
719
Dec 7, 1990:
720
	.fp 3 V VERYLONGNAME used to truncate the name to 10 chars; fixed.
721
 
722
	increased the limit on FBUFSZ for tables with very long fields.
723
 
724
	changed atoi1() to use double to avoid intermediate overflow.
725
 
726
	moved filenames like /usr/lib/font into tdef.h for easy change.
727
	removed some dreggish definitions.
728
 
729
	cleaned up non-portable error printing stuff;  fixed up some messages.
730
 
731
Dec 12, 1989:
732
	Removed the .! command, an undocumented synonym for .sy.
733
 
734
Dec 4, 1989:
735
	Another wart to the \X code, to try to preserve blanks in all situations.
736
 
737
Nov 17, 1989:
738
	A number of small changes preparatory to getting rid of nroff.
739
	The argument -Tnroff or -Tnroff-12 changes some internal values
740
	so that the predicate .if n is true and certain arithmetic operations
741
	are done as if nroff.  This design is not yet final.
742
 
743
Nov 7, 1989:
744
	Fixed hyphenation for nov-ice, ad-vice, de-vice, ser-vice, *-vice.
745
 
746
Oct 11, 1989:
747
	It is now permitted to do an explicit change to font S.
748
	It is not clear what will break (though nothing seems to have).
749
 
750
Oct 10, 1989:
751
	Modified flush code to always put out \nH instead of sometimes h.
752
	This makes it easier to parse the output for positioning.
753
 
754
Sep 9, 1989:
755
	Fixed internal representation of \D'~...' so that it
756
	is immune to .tr ~ and variations.  No external change.
757
 
758
Aug 9, 1989:
759
	Changed .tm so it outputs \e, \%, \-, \&, \(blank).
760
	This might break indexing code.
761
	Only in the new version, as are all subsequent fixes.
762
 
763
July, 1989:
764
	A major internal change:  font information is read in ascii
765
	instead of the weird binary format of makedev (which is now dead).
766
	character names need not all appear in DESC;  new names that
767
	appear when a font is used become part of the set of known names.
768
 
769
	There are some flaky bits here (it's conceivable that some \N
770
	number will collide with a real name), and it's probably 10-15%
771
	slower.  Tant pis.
772
 
773
	As a by-product, nroff no longer compiles.  I'll probably get
774
	back to this, but an alternative is to bag it once and for all.
775
 
776
May 25, 1989:
777
	Another bug in \l, this time when width is 0.  Not installed,
778
	since it's in the new font version.
779
 
780
Apr 23, 1989:
781
	Fixed bug in n9 that caused core dump with unterminated
782
	\l command, like \l'1.5i
783
 
784
	ptflush no longer called when -a is on.
785
 
786
Apr 12, 1989:
787
	fixed bug in n2 that failed to suppress printing of \!
788
	output when a -o was in effect.
789
 
790
Apr 5, 1989:
791
	.fl and \X now cause output of size, font, hpos and vpos.
792
	this is necesary for postprocessors that intend to insert
793
	independent material, such as postscript.
794
 
795
Feb 1, 1989:
796
	wait for .pi pipe to empty before exiting
797
 
798
Oct 2, 1988:
799
	default is now -Tpost
800
 
801
Sep 19, 1988:
802
	added abortive code to handle built-up characters by
803
	passing something through as \D'b...'.  never used.
804
 
805
Jul 4, 1988:
806
	replaced the sbrk nonsense in n3.c by calls to malloc.
807
 
808
	\N now tests against proper font size.
809
 
810
	installed Jaap Akkerhuis's code (mutatis mutandis) for
811
	permitting up to 99 fonts, swapping them into font pos 0
812
	as needed.  fixes the long-standing problem of having
813
	multiple font changes on a single output line.
814
 
815
Jul 2, 1988:
816
	\X now preserves spaces even when contents are diverted.
817
 
818
	\N code safer -- NTRTAB and NWIDCACHE enlarged.
819
 
820
Jul 14, 1987:
821
	Fixed obscure bug causing incorrect indentation of .mc output.